Skip to content

Commit e11f686

Browse files
keithdoggettrafiss
authored andcommitted
Override TypeMapInitialize#query_conditions_for_initial_load to use faster query
1 parent df06ec2 commit e11f686

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
module ActiveRecord
2+
module ConnectionAdapters
3+
module CockroachDB
4+
module OID
5+
module TypeMapInitializer
6+
# override
7+
# Replaces the query with a faster version that doesn't rely on the
8+
# use of 'array_in(cstring,oid,integer)'::regprocedure.
9+
def query_conditions_for_initial_load
10+
known_type_names = @store.keys.map { |n| "'#{n}'" }
11+
known_type_types = %w('r' 'e' 'd')
12+
<<~SQL % [known_type_names.join(", "), known_type_types.join(", ")]
13+
WHERE
14+
t.typname IN (%s)
15+
OR t.typtype IN (%s)
16+
OR (t.typarray = 0 AND t.typcategory='A')
17+
OR t.typelem != 0
18+
SQL
19+
end
20+
end
21+
22+
PostgreSQL::OID::TypeMapInitializer.prepend(TypeMapInitializer)
23+
end
24+
end
25+
end
26+
end

lib/active_record/connection_adapters/cockroachdb_adapter.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
require "active_record/connection_adapters/cockroachdb/column"
1414
require "active_record/connection_adapters/cockroachdb/spatial_column_info"
1515
require "active_record/connection_adapters/cockroachdb/setup"
16+
require "active_record/connection_adapters/cockroachdb/oid/type_map_initializer"
1617
require "active_record/connection_adapters/cockroachdb/oid/spatial"
1718
require "active_record/connection_adapters/cockroachdb/arel_tosql"
1819

0 commit comments

Comments
 (0)