Class: Sequel::TinyTDS::Database
- Includes:
- MSSQL::DatabaseMethods
- Defined in:
- lib/sequel/adapters/tinytds.rb
Constant Summary
Constants included from MSSQL::DatabaseMethods
MSSQL::DatabaseMethods::FOREIGN_KEY_ACTION_MAP
Constants inherited from Database
Database::ADAPTERS, Database::COLUMN_DEFINITION_ORDER, Database::COLUMN_SCHEMA_DATETIME_TYPES, Database::COLUMN_SCHEMA_STRING_TYPES, Database::COMBINABLE_ALTER_TABLE_OPS, Database::DEFAULT_DATABASE_ERROR_REGEXPS, Database::DEFAULT_STRING_COLUMN_SIZE, Database::EXTENSIONS, Database::OPTS, Database::SCHEMA_TYPE_CLASSES, Database::TRANSACTION_ISOLATION_LEVELS
Instance Attribute Summary
Attributes included from MSSQL::DatabaseMethods
#like_without_collate, #mssql_unicode_strings
Attributes inherited from Database
#cache_schema, #check_string_typecast_bytesize, #dataset_class, #default_string_column_size, #log_connection_info, #log_warn_duration, #loggers, #opts, #pool, #prepared_statements, #sql_log_level, #timezone, #transaction_isolation_level
Instance Method Summary collapse
-
#connect(server) ⇒ Object
Transfer the :user option to the :username option.
-
#execute(sql, opts = OPTS) ⇒ Object
Execute the given
sql
on the server. - #execute_ddl(sql, opts = OPTS) ⇒ Object
- #execute_dui(sql, opts = OPTS) ⇒ Object
- #execute_insert(sql, opts = OPTS) ⇒ Object
Methods included from MSSQL::DatabaseMethods
#call_mssql_sproc, #database_type, #foreign_key_list, #freeze, #global_index_namespace?, #indexes, #server_version, #supports_partial_indexes?, #supports_savepoints?, #supports_transaction_isolation_levels?, #supports_transactional_ddl?, #tables, #views, #with_advisory_lock
Methods inherited from Database
#<<, #[], adapter_class, #adapter_scheme, adapter_scheme, #add_column, #add_index, #add_servers, #after_commit, after_initialize, #after_rollback, #alter_table, #alter_table_generator, #call, #cast_type_literal, connect, #create_join_table, #create_join_table!, #create_join_table?, #create_or_replace_view, #create_table, #create_table!, #create_table?, #create_table_generator, #create_view, #database_type, #dataset, #disconnect, #disconnect_connection, #drop_column, #drop_index, #drop_join_table, #drop_table, #drop_table?, #drop_view, #extend_datasets, #extension, extension, #fetch, #freeze, #from, #from_application_timestamp, #get, #global_index_namespace?, #in_transaction?, #initialize, #inspect, #literal, #literal_symbol, #literal_symbol_set, load_adapter, #log_connection_yield, #log_exception, #log_info, #logger=, #new_connection, #prepared_statement, #quote_identifier, register_extension, #remove_servers, #rename_column, #rename_table, #rollback_checker, #rollback_on_exit, #run, run_after_initialize, #schema, #schema_type_class, #select, #serial_primary_key_options, #servers, #set_column_default, #set_column_type, #set_prepared_statement, set_shared_adapter_scheme, #sharded?, #single_threaded?, #supports_create_table_if_not_exists?, #supports_deferrable_constraints?, #supports_deferrable_foreign_key_constraints?, #supports_drop_table_if_exists?, #supports_foreign_key_parsing?, #supports_index_parsing?, #supports_partial_indexes?, #supports_prepared_transactions?, #supports_savepoints?, #supports_savepoints_in_prepared_transactions?, #supports_schema_parsing?, #supports_table_listing?, #supports_transaction_isolation_levels?, #supports_transactional_ddl?, #supports_view_listing?, #supports_views_with_check_option?, #supports_views_with_local_check_option?, #synchronize, #table_exists?, #test_connection, #to_application_timestamp, #transaction, #typecast_value, #uri, #url, #valid_connection?
Constructor Details
This class inherits a constructor from Sequel::Database
Instance Method Details
#connect(server) ⇒ Object
Transfer the :user option to the :username option.
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 |
# File 'lib/sequel/adapters/tinytds.rb', line 13 def connect(server) opts = server_opts(server) opts[:username] = opts[:user] c = TinyTds::Client.new(opts) c..merge!(:cache_rows=>false) # SEQUEL6: Default to ansi: true if opts[:ansi] sql = %w( ANSI_NULLS ANSI_PADDING ANSI_WARNINGS ANSI_NULL_DFLT_ON QUOTED_IDENTIFIER CONCAT_NULL_YIELDS_NULL ).map{|v| "SET #{v} ON"}.join(";") log_connection_yield(sql, c){c.execute(sql)} end if (ts = opts[:textsize]) sql = "SET TEXTSIZE #{typecast_value_integer(ts)}" log_connection_yield(sql, c){c.execute(sql)} end c end |
#execute(sql, opts = OPTS) ⇒ Object
Execute the given sql
on the server. If the :return option is present, its value should be a method symbol that is called on the TinyTds::Result object returned from executing the sql
. The value of such a method is returned to the caller. Otherwise, if a block is given, it is yielded the result object. If no block is given and a :return is not present, nil
is returned.
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 83 84 85 |
# File 'lib/sequel/adapters/tinytds.rb', line 46 def execute(sql, opts=OPTS) synchronize(opts[:server]) do |c| begin m = opts[:return] r = nil if (args = opts[:arguments]) && !args.empty? types = [] values = [] args.each_with_index do |(k, v), i| v, type = ps_arg_type(v) types << "@#{k} #{type}" values << "@#{k} = #{v}" end case m when :do sql = "#{sql}; SELECT @@ROWCOUNT AS AffectedRows" single_value = true when :insert sql = "#{sql}; SELECT CAST(SCOPE_IDENTITY() AS bigint) AS Ident" single_value = true end sql = "EXEC sp_executesql N'#{c.escape(sql)}', N'#{c.escape(types.join(', '))}', #{values.join(', ')}" log_connection_yield(sql, c) do r = c.execute(sql) r.each{|row| return row.values.first} if single_value end else log_connection_yield(sql, c) do r = c.execute(sql) return r.public_send(m) if m end end yield(r) if defined?(yield) rescue TinyTds::Error => e raise_error(e, :disconnect=>!c.active?) ensure r.cancel if r && c.sqlsent? && c.active? end end end |
#execute_ddl(sql, opts = OPTS) ⇒ Object
99 100 101 102 103 104 |
# File 'lib/sequel/adapters/tinytds.rb', line 99 def execute_ddl(sql, opts=OPTS) opts = Hash[opts] opts[:return] = :each execute(sql, opts) nil end |