Module: ActiveRecord::Import::SQLite3Adapter
- Includes:
- ImportSupport
- Included in:
- ConnectionAdapters::SQLite3Adapter
- Defined in:
- lib/activerecord-import/adapters/sqlite3_adapter.rb
Constant Summary collapse
- MIN_VERSION_FOR_IMPORT =
"3.7.11"
- SQLITE_LIMIT_COMPOUND_SELECT =
500
Instance Method Summary collapse
-
#insert_many(sql, values, *args) ⇒ Object
sql
can be a single string or an array. - #next_value_for_sequence(sequence_name) ⇒ Object
-
#supports_import?(current_version = self.sqlite_version) ⇒ Boolean
Override our conformance to ActiveRecord::Import::ImportSupport interface to ensure that we only support import in supported version of SQLite.
Instance Method Details
#insert_many(sql, values, *args) ⇒ Object
sql
can be a single string or an array. If it is an array all elements that are in position >= 1 will be appended to the final SQL.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/activerecord-import/adapters/sqlite3_adapter.rb', line 20 def insert_many(sql, values, *args) # :nodoc: number_of_inserts = 0 base_sql,post_sql = if sql.is_a?( String ) [ sql, '' ] elsif sql.is_a?( Array ) [ sql.shift, sql.join( ' ' ) ] end value_sets = ::ActiveRecord::Import::ValueSetsRecordsParser.parse(values, :max_records => SQLITE_LIMIT_COMPOUND_SELECT) value_sets.each do |values| number_of_inserts += 1 sql2insert = base_sql + values.join( ',' ) + post_sql insert( sql2insert, *args ) end [number_of_inserts,[]] end |
#next_value_for_sequence(sequence_name) ⇒ Object
40 41 42 |
# File 'lib/activerecord-import/adapters/sqlite3_adapter.rb', line 40 def next_value_for_sequence(sequence_name) %{nextval('#{sequence_name}')} end |
#supports_import?(current_version = self.sqlite_version) ⇒ Boolean
Override our conformance to ActiveRecord::Import::ImportSupport interface to ensure that we only support import in supported version of SQLite. Which INSERT statements with multiple value sets was introduced in 3.7.11.
10 11 12 13 14 15 16 |
# File 'lib/activerecord-import/adapters/sqlite3_adapter.rb', line 10 def supports_import?(current_version=self.sqlite_version) if current_version >= MIN_VERSION_FOR_IMPORT true else false end end |