Class: ActiveRecord::ConnectionAdapters::SpannerAdapter
Constant Summary
collapse
- ADAPTER_NAME =
"spanner".freeze
- NATIVE_DATABASE_TYPES =
{
primary_key: "INT64",
parent_key: "INT64",
string: { name: "STRING", limit: "MAX" },
text: { name: "STRING", limit: "MAX" },
integer: { name: "INT64" },
bigint: { name: "INT64" },
float: { name: "FLOAT64" },
decimal: { name: "NUMERIC" },
numeric: { name: "NUMERIC" },
datetime: { name: "TIMESTAMP" },
time: { name: "TIMESTAMP" },
date: { name: "DATE" },
binary: { name: "BYTES", limit: "MAX" },
boolean: { name: "BOOL" },
json: { name: "JSON" }
}.freeze
ActiveRecord::ConnectionAdapters::Spanner::SchemaStatements::VERSION_6_0_3, ActiveRecord::ConnectionAdapters::Spanner::SchemaStatements::VERSION_6_1_0
ActiveRecord::ConnectionAdapters::Spanner::DatabaseStatements::COMMENT_REGEX
Class Method Summary
collapse
Instance Method Summary
collapse
#_add_foreign_key, #_remove_columns, #add_column, #add_foreign_key, #add_index, #add_reference, #change_column, #change_column_default, #change_column_null, #column_definitions, #create_join_table, #create_schema_dumper, #create_table, #current_database, #data_sources, #drop_table, #fetch_type_metadata, #foreign_keys, #index_name_exists?, #indexes, #new_column_from_field, #primary_and_parent_keys, #primary_keys, #quoted_scope, #remove_column, #remove_columns, #remove_foreign_key, #remove_index, #rename_column, #rename_index, #rename_table, #table_exists?, #type_to_sql
#begin_db_transaction, #begin_isolated_db_transaction, #commit_db_transaction, #exec_mutation, #exec_query, #exec_update, #execute, #execute_ddl, #query, #rollback_db_transaction, #transaction, #transaction_isolation_levels, #truncate, #update, #write_query?
#quote_column_name, #quote_string, #quote_table_name, #quoted_binary
Constructor Details
#initialize(connection, logger, connection_options, config) ⇒ SpannerAdapter
Returns a new instance of SpannerAdapter.
76
77
78
79
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 76
def initialize connection, logger, connection_options, config
super connection, logger, config
@connection_options = connection_options
end
|
Class Method Details
.database_exists?(config) ⇒ Boolean
91
92
93
94
95
96
97
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 91
def self.database_exists? config
connection = ActiveRecordSpannerAdapter::Connection.new config
connection.connect!
true
rescue ActiveRecord::NoDatabaseError
false
end
|
Instance Method Details
#active? ⇒ Boolean
101
102
103
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 101
def active?
@connection.active?
end
|
#arel_visitor ⇒ Object
177
178
179
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 177
def arel_visitor
Arel::Visitors::Spanner.new self
end
|
#current_spanner_transaction ⇒ Object
119
120
121
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 119
def current_spanner_transaction
@connection.current_transaction
end
|
#disconnect! ⇒ Object
105
106
107
108
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 105
def disconnect!
super
@connection.disconnect!
end
|
#max_identifier_length ⇒ Object
81
82
83
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 81
def max_identifier_length
128
end
|
#native_database_types ⇒ Object
85
86
87
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 85
def native_database_types
NATIVE_DATABASE_TYPES
end
|
#next_sequence_value(_sequence_name) ⇒ Object
Generate next sequence number for primary key
173
174
175
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 173
def next_sequence_value _sequence_name
SecureRandom.uuid.gsub("-", "").hex & 0x7FFFFFFFFFFFFFFF
end
|
#prefetch_primary_key?(_table_name = nil) ⇒ Boolean
168
169
170
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 168
def prefetch_primary_key? _table_name = nil
true
end
|
#reset! ⇒ Object
Also known as:
reconnect!
110
111
112
113
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 110
def reset!
super
@connection.reset!
end
|
#supports_bulk_alter? ⇒ Boolean
125
126
127
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 125
def supports_bulk_alter?
true
end
|
#supports_common_table_expressions? ⇒ Boolean
129
130
131
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 129
def supports_common_table_expressions?
true
end
|
#supports_explain? ⇒ Boolean
133
134
135
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 133
def supports_explain?
false
end
|
#supports_foreign_keys? ⇒ Boolean
137
138
139
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 137
def supports_foreign_keys?
true
end
|
#supports_index_sort_order? ⇒ Boolean
141
142
143
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 141
def supports_index_sort_order?
true
end
|
#supports_insert_on_conflict? ⇒ Boolean
Also known as:
supports_insert_on_duplicate_skip?, supports_insert_on_duplicate_update?, supports_insert_conflict_target?
145
146
147
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 145
def supports_insert_on_conflict?
true
end
|
#supports_insert_returning? ⇒ Boolean
152
153
154
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 152
def supports_insert_returning?
true
end
|
#supports_multi_insert? ⇒ Boolean
156
157
158
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 156
def supports_multi_insert?
true
end
|
#supports_optimizer_hints? ⇒ Boolean
160
161
162
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 160
def supports_optimizer_hints?
true
end
|
#supports_primary_key? ⇒ Boolean
164
165
166
|
# File 'lib/active_record/connection_adapters/spanner_adapter.rb', line 164
def supports_primary_key?
true
end
|