Class: Sequel::TinyTDS::Database
- Includes:
- MSSQL::DatabaseMethods
- Defined in:
- lib/sequel/adapters/tinytds.rb
Constant Summary collapse
- DatasetClass =
self
Constants included from MSSQL::DatabaseMethods
MSSQL::DatabaseMethods::AUTO_INCREMENT, MSSQL::DatabaseMethods::DECIMAL_TYPE_RE, MSSQL::DatabaseMethods::FOREIGN_KEY_ACTION_MAP, MSSQL::DatabaseMethods::MSSQL_DEFAULT_RE, MSSQL::DatabaseMethods::SERVER_VERSION_RE, MSSQL::DatabaseMethods::SERVER_VERSION_SQL, MSSQL::DatabaseMethods::SQL_BEGIN, MSSQL::DatabaseMethods::SQL_COMMIT, MSSQL::DatabaseMethods::SQL_ROLLBACK, MSSQL::DatabaseMethods::SQL_ROLLBACK_TO_SAVEPOINT, MSSQL::DatabaseMethods::SQL_SAVEPOINT
Constants inherited from Database
Database::ADAPTERS, Database::AUTOINCREMENT, Database::COLUMN_DEFINITION_ORDER, Database::COLUMN_SCHEMA_DATETIME_TYPES, Database::COLUMN_SCHEMA_STRING_TYPES, Database::COMBINABLE_ALTER_TABLE_OPS, Database::COMMA_SEPARATOR, Database::CURRENT_TIMESTAMP_RE, Database::DEFAULT_DATABASE_ERROR_REGEXPS, Database::DEFAULT_JOIN_TABLE_COLUMN_OPTIONS, Database::DEFAULT_STRING_COLUMN_SIZE, Database::EXTENSIONS, Database::NOT_NULL, Database::NULL, Database::OPTS, Database::PRIMARY_KEY, Database::SCHEMA_TYPE_CLASSES, Database::SQL_BEGIN, Database::SQL_COMMIT, Database::SQL_RELEASE_SAVEPOINT, Database::SQL_ROLLBACK, Database::SQL_ROLLBACK_TO_SAVEPOINT, Database::SQL_SAVEPOINT, Database::STRING_DEFAULT_RE, Database::TEMPORARY, Database::TRANSACTION_BEGIN, Database::TRANSACTION_COMMIT, Database::TRANSACTION_ISOLATION_LEVELS, Database::TRANSACTION_ROLLBACK, Database::UNDERSCORE, Database::UNIQUE, Database::UNSIGNED
Instance Attribute Summary
Attributes included from MSSQL::DatabaseMethods
Attributes inherited from Database
#cache_schema, #dataset_class, #default_string_column_size, #identifier_input_method, #identifier_output_method, #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 the DDL
sql
on the database and return nil. -
#execute_dui(sql, opts = OPTS) ⇒ Object
Return the number of rows modified by the given
sql
. -
#execute_insert(sql, opts = OPTS) ⇒ Object
Return the value of the autogenerated primary key (if any) for the row inserted by the given
sql
.
Methods included from MSSQL::DatabaseMethods
#call_mssql_sproc, #database_type, #foreign_key_list, #global_index_namespace?, #indexes, #server_version, #supports_partial_indexes?, #supports_savepoints?, #supports_transaction_isolation_levels?, #supports_transactional_ddl?, #tables, #views
Methods included from Database::ResetIdentifierMangling
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, #each_server, #extend_datasets, extension, #extension, #fetch, #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, #log_yield, #logger=, #prepared_statement, #quote_identifier, #quote_identifiers=, #quote_identifiers?, register_extension, #remove_servers, #rename_column, #rename_table, #run, run_after_initialize, #schema, #schema_type_class, #select, #serial_primary_key_options, #servers, #set_column_default, #set_column_type, #set_prepared_statement, #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?
Methods included from Metaprogramming
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 |
# 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) 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.
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 |
# File 'lib/sequel/adapters/tinytds.rb', line 33 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.send(m) if m end end yield(r) if block_given? 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
Execute the DDL sql
on the database and return nil.
90 91 92 93 94 95 |
# File 'lib/sequel/adapters/tinytds.rb', line 90 def execute_ddl(sql, opts=OPTS) opts = Hash[opts] opts[:return] = :each execute(sql, opts) nil end |
#execute_dui(sql, opts = OPTS) ⇒ Object
Return the number of rows modified by the given sql
.
75 76 77 78 79 |
# File 'lib/sequel/adapters/tinytds.rb', line 75 def execute_dui(sql, opts=OPTS) opts = Hash[opts] opts[:return] = :do execute(sql, opts) end |
#execute_insert(sql, opts = OPTS) ⇒ Object
Return the value of the autogenerated primary key (if any) for the row inserted by the given sql
.
83 84 85 86 87 |
# File 'lib/sequel/adapters/tinytds.rb', line 83 def execute_insert(sql, opts=OPTS) opts = Hash[opts] opts[:return] = :insert execute(sql, opts) end |