Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb')
-rw-r--r--lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb b/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb
index fc2b56048f6..932aa0c2d28 100644
--- a/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb
+++ b/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb
@@ -12,11 +12,7 @@ module Gitlab
end
def initializer_columns
- order_by_columns.map do |column|
- column_name = column.original_column_name.to_s
- type = model.columns_hash[column_name].sql_type
- "NULL::#{type} AS #{column_name}"
- end
+ order_by_columns.map { |column_data| null_with_type_cast(column_data) }
end
def columns
@@ -30,6 +26,15 @@ module Gitlab
private
attr_reader :model, :order_by_columns
+
+ def null_with_type_cast(column_data)
+ column_name = column_data.original_column_name.to_s
+ active_record_column = model.columns_hash[column_name]
+
+ type = active_record_column ? active_record_column.sql_type : column_data.column.sql_type
+
+ "NULL::#{type} AS #{column_name}"
+ end
end
end
end