/usr/lib/ruby/vendor_ruby/sequel/adapters/jdbc/sqlite.rb is in ruby-sequel 4.15.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | Sequel::JDBC.load_driver('org.sqlite.JDBC', :SQLite3)
Sequel.require 'adapters/shared/sqlite'
module Sequel
module JDBC
Sequel.synchronize do
DATABASE_SETUP[:sqlite] = proc do |db|
db.extend(Sequel::JDBC::SQLite::DatabaseMethods)
db.extend_datasets Sequel::SQLite::DatasetMethods
db.set_integer_booleans
org.sqlite.JDBC
end
end
# Database and Dataset support for SQLite databases accessed via JDBC.
module SQLite
# Instance methods for SQLite Database objects accessed via JDBC.
module DatabaseMethods
extend Sequel::Database::ResetIdentifierMangling
include Sequel::SQLite::DatabaseMethods
LAST_INSERT_ROWID = 'SELECT last_insert_rowid()'.freeze
FOREIGN_KEY_ERROR_RE = /query does not return ResultSet/.freeze
# Swallow pointless exceptions when the foreign key list pragma
# doesn't return any rows.
def foreign_key_list(table, opts=OPTS)
super
rescue Sequel::DatabaseError => e
raise unless e.message =~ FOREIGN_KEY_ERROR_RE
[]
end
# Swallow pointless exceptions when the index list pragma
# doesn't return any rows.
def indexes(table, opts=OPTS)
super
rescue Sequel::DatabaseError => e
raise unless e.message =~ FOREIGN_KEY_ERROR_RE
{}
end
private
DATABASE_ERROR_REGEXPS = Sequel::SQLite::DatabaseMethods::DATABASE_ERROR_REGEXPS.merge(/Abort due to constraint violation/ => ConstraintViolation).freeze
def database_error_regexps
DATABASE_ERROR_REGEXPS
end
# Use last_insert_rowid() to get the last inserted id.
def last_insert_id(conn, opts=OPTS)
statement(conn) do |stmt|
rs = stmt.executeQuery(LAST_INSERT_ROWID)
rs.next
rs.getInt(1)
end
end
# Default to a single connection for a memory database.
def connection_pool_default_options
o = super
uri == 'jdbc:sqlite::memory:' ? o.merge(:max_connections=>1) : o
end
# Execute the connection pragmas on the connection.
def setup_connection(conn)
conn = super(conn)
statement(conn) do |stmt|
connection_pragmas.each{|s| log_yield(s){stmt.execute(s)}}
end
conn
end
# Use getLong instead of getInt for converting integers on SQLite, since SQLite does not enforce a limit of 2**32.
def setup_type_convertor_map
super
@type_convertor_map[Java::JavaSQL::Types::INTEGER] = @type_convertor_map[Java::JavaSQL::Types::BIGINT]
@basic_type_convertor_map[Java::JavaSQL::Types::INTEGER] = @basic_type_convertor_map[Java::JavaSQL::Types::BIGINT]
end
end
end
end
end
|