Methods
Public Instance
Constants
AUTO_INCREMENT | = | 'IDENTITY'.freeze | ||
DATABASE_ERROR_REGEXPS | = | { /would not be unique/ => Sequel::UniqueConstraintViolation, /Column .* in table .* cannot be NULL/ => Sequel::NotNullConstraintViolation, /Constraint .* violated: Invalid value in table .*/ => Sequel::CheckConstraintViolation, /No primary key value for foreign key .* in table .*/ => Sequel::ForeignKeyConstraintViolation, /Primary key for row in table .* is referenced by foreign key .* in table .*/ => Sequel::ForeignKeyConstraintViolation }.freeze | ||
DECIMAL_TYPE_RE | = | /numeric/io | ||
SMALLINT_RE | = | /smallint/i.freeze | ||
SQL_BEGIN | = | "BEGIN TRANSACTION".freeze | ||
SQL_COMMIT | = | "COMMIT TRANSACTION".freeze | ||
SQL_ROLLBACK | = | "IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION".freeze | ||
TEMPORARY | = | "GLOBAL TEMPORARY ".freeze |
Attributes
conversion_procs | [R] | |
convert_smallint_to_bool | [W] |
Override the default Sequel::SqlAnywhere.convert_smallint_to_bool setting for this database. |
Public Instance methods
convert_smallint_to_bool
()
Whether to convert smallint to boolean arguments for this dataset. Defaults to the SqlAnywhere module setting.
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 30 def convert_smallint_to_bool defined?(@convert_smallint_to_bool) ? @convert_smallint_to_bool : (@convert_smallint_to_bool = ::Sequel::SqlAnywhere.convert_smallint_to_bool) end
database_type
()
Sysbase Server uses the :sqlanywhere type.
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 35 def database_type :sqlanywhere end
foreign_key_list
(table, opts=OPTS)
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 91 def foreign_key_list(table, opts=OPTS) m = output_identifier_meth im = input_identifier_meth fk_indexes = {} metadata_dataset. from(:sys__sysforeignkey___fk). select(:fk__role___name, :fks__columns___column_map, :si__indextype___type, :si__colnames___columns, :fks__primary_tname___table_name). join(:sys__sysforeignkeys___fks, :role => :role). join_table(:inner, :sys__sysindexes___si, [:iname=> :fk__role], {:implicit_qualifier => :fk}). where(:fks__foreign_tname=>im.call(table)). each do |r| unless r[:type].downcase == 'primary key' fk_indexes[r[:name]] = {:name=>m.call(r[:name]), :columns=>r[:columns].split(',').map{|v| m.call(v.split(' ').first)}, :table=>m.call(r[:table_name]), :key=>r[:column_map].split(',').map{|v| m.call(v.split(' IS ').last)}} end end fk_indexes.values end
indexes
(table, opts = OPTS)
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 73 def indexes(table, opts = OPTS) m = output_identifier_meth im = input_identifier_meth indexes = {} metadata_dataset. from(:dbo__sysobjects___z). select(:z__name___table_name, :i__name___index_name, :si__indextype___type, :si__colnames___columns). join(:dbo__sysindexes___i, :id___i=> :id___z). join(:sys__sysindexes___si, :iname=> :name___i). where(:z__type => 'U', :table_name=>im.call(table)). each do |r| indexes[m.call(r[:index_name])] = {:unique=>(r[:type].downcase=='unique'), :columns=>r[:columns].split(',').map{|v| m.call(v.split(' ').first)}} unless r[:type].downcase == 'primary key' end indexes end
schema_column_type
(db_type)
Convert smallint type to boolean if #convert_smallint_to_bool is true
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 44 def schema_column_type(db_type) if convert_smallint_to_bool && db_type =~ SMALLINT_RE :boolean else super end end
schema_parse_table
(table, opts)
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 52 def schema_parse_table(table, opts) m = output_identifier_meth(opts[:dataset]) im = input_identifier_meth(opts[:dataset]) metadata_dataset. from{sa_describe_query("select * from #{im.call(table)}").as(:a)}. join(:syscolumn___b, :table_id=>:base_table_id, :column_id=>:base_column_id). order(:a__column_number). map do |row| row[:auto_increment] = row.delete(:is_autoincrement) == 1 row[:primary_key] = row.delete(:pkey) == 'Y' row[:allow_null] = row[:nulls_allowed].is_a?(Fixnum) ? row.delete(:nulls_allowed) == 1 : row.delete(:nulls_allowed) row[:db_type] = row.delete(:domain_name) row[:type] = if row[:db_type] =~ DECIMAL_TYPE_RE and (row[:scale].is_a?(Fixnum) ? row[:scale] == 0 : !row[:scale]) :integer else schema_column_type(row[:db_type]) end [m.call(row.delete(:name)), row] end end
tables
(opts=OPTS)
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 113 def tables(opts=OPTS) tables_and_views('U', opts) end
to_application_timestamp_sa
(v)
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 39 def to_application_timestamp_sa(v) to_application_timestamp(v.to_s) if v end
views
(opts=OPTS)
[show source]
# File lib/sequel/adapters/shared/sqlanywhere.rb, line 117 def views(opts=OPTS) tables_and_views('V', opts) end