sequel 4.26.0 → 5.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG +405 -5656
- data/MIT-LICENSE +1 -1
- data/README.rdoc +232 -157
- data/bin/sequel +32 -9
- data/doc/advanced_associations.rdoc +252 -188
- data/doc/association_basics.rdoc +231 -273
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +75 -48
- data/doc/code_order.rdoc +28 -10
- data/doc/core_extensions.rdoc +104 -63
- data/doc/dataset_basics.rdoc +12 -21
- data/doc/dataset_filtering.rdoc +99 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +72 -46
- data/doc/model_dataset_method_design.rdoc +129 -0
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +12 -12
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +59 -69
- data/doc/opening_databases.rdoc +84 -94
- data/doc/postgresql.rdoc +268 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +184 -164
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.10.0.txt +84 -0
- data/doc/release_notes/5.11.0.txt +83 -0
- data/doc/release_notes/5.12.0.txt +141 -0
- data/doc/release_notes/5.13.0.txt +27 -0
- data/doc/release_notes/5.14.0.txt +63 -0
- data/doc/release_notes/5.15.0.txt +39 -0
- data/doc/release_notes/5.16.0.txt +110 -0
- data/doc/release_notes/5.17.0.txt +31 -0
- data/doc/release_notes/5.18.0.txt +69 -0
- data/doc/release_notes/5.19.0.txt +28 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.20.0.txt +89 -0
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/release_notes/5.22.0.txt +48 -0
- data/doc/release_notes/5.23.0.txt +56 -0
- data/doc/release_notes/5.24.0.txt +56 -0
- data/doc/release_notes/5.25.0.txt +32 -0
- data/doc/release_notes/5.26.0.txt +35 -0
- data/doc/release_notes/5.27.0.txt +21 -0
- data/doc/release_notes/5.28.0.txt +16 -0
- data/doc/release_notes/5.29.0.txt +22 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/release_notes/5.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/release_notes/5.35.0.txt +56 -0
- data/doc/release_notes/5.36.0.txt +60 -0
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.4.0.txt +80 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.7.0.txt +108 -0
- data/doc/release_notes/5.8.0.txt +170 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/schema_modification.rdoc +102 -77
- data/doc/security.rdoc +160 -87
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +135 -122
- data/doc/testing.rdoc +34 -18
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +101 -19
- data/doc/validations.rdoc +64 -51
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel.rb +3 -1
- data/lib/sequel/adapters/ado.rb +154 -22
- data/lib/sequel/adapters/ado/access.rb +21 -21
- data/lib/sequel/adapters/ado/mssql.rb +8 -15
- data/lib/sequel/adapters/amalgalite.rb +17 -25
- data/lib/sequel/adapters/ibmdb.rb +52 -58
- data/lib/sequel/adapters/jdbc.rb +149 -127
- data/lib/sequel/adapters/jdbc/db2.rb +32 -40
- data/lib/sequel/adapters/jdbc/derby.rb +56 -58
- data/lib/sequel/adapters/jdbc/h2.rb +40 -30
- data/lib/sequel/adapters/jdbc/hsqldb.rb +22 -33
- data/lib/sequel/adapters/jdbc/jtds.rb +4 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +6 -12
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -18
- data/lib/sequel/adapters/jdbc/oracle.rb +25 -19
- data/lib/sequel/adapters/jdbc/postgresql.rb +90 -69
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +14 -24
- data/lib/sequel/adapters/jdbc/sqlite.rb +50 -12
- data/lib/sequel/adapters/jdbc/sqlserver.rb +36 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +25 -39
- data/lib/sequel/adapters/mock.rb +104 -113
- data/lib/sequel/adapters/mysql.rb +42 -61
- data/lib/sequel/adapters/mysql2.rb +126 -35
- data/lib/sequel/adapters/odbc.rb +21 -28
- data/lib/sequel/adapters/odbc/db2.rb +3 -1
- data/lib/sequel/adapters/odbc/mssql.rb +11 -15
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/oracle.rb +62 -68
- data/lib/sequel/adapters/postgres.rb +257 -311
- data/lib/sequel/adapters/postgresql.rb +3 -1
- data/lib/sequel/adapters/shared/access.rb +75 -79
- data/lib/sequel/adapters/shared/db2.rb +96 -74
- data/lib/sequel/adapters/shared/mssql.rb +258 -213
- data/lib/sequel/adapters/shared/mysql.rb +284 -216
- data/lib/sequel/adapters/shared/oracle.rb +175 -60
- data/lib/sequel/adapters/shared/postgres.rb +829 -383
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -127
- data/lib/sequel/adapters/shared/sqlite.rb +382 -159
- data/lib/sequel/adapters/sqlanywhere.rb +53 -38
- data/lib/sequel/adapters/sqlite.rb +111 -105
- data/lib/sequel/adapters/tinytds.rb +38 -46
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +8 -9
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +7 -5
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
- data/lib/sequel/adapters/utils/replace.rb +3 -4
- data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
- data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +13 -89
- data/lib/sequel/connection_pool.rb +54 -26
- data/lib/sequel/connection_pool/sharded_single.rb +19 -12
- data/lib/sequel/connection_pool/sharded_threaded.rb +160 -111
- data/lib/sequel/connection_pool/single.rb +21 -12
- data/lib/sequel/connection_pool/threaded.rb +137 -119
- data/lib/sequel/core.rb +352 -320
- data/lib/sequel/database.rb +19 -2
- data/lib/sequel/database/connecting.rb +70 -55
- data/lib/sequel/database/dataset.rb +15 -5
- data/lib/sequel/database/dataset_defaults.rb +20 -102
- data/lib/sequel/database/features.rb +20 -4
- data/lib/sequel/database/logging.rb +25 -7
- data/lib/sequel/database/misc.rb +132 -118
- data/lib/sequel/database/query.rb +51 -28
- data/lib/sequel/database/schema_generator.rb +188 -75
- data/lib/sequel/database/schema_methods.rb +161 -92
- data/lib/sequel/database/transactions.rb +260 -58
- data/lib/sequel/dataset.rb +28 -12
- data/lib/sequel/dataset/actions.rb +354 -170
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +81 -34
- data/lib/sequel/dataset/graph.rb +82 -58
- data/lib/sequel/dataset/misc.rb +139 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +66 -26
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +428 -214
- data/lib/sequel/dataset/sql.rb +446 -339
- data/lib/sequel/deprecated.rb +14 -2
- data/lib/sequel/exceptions.rb +48 -16
- data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
- data/lib/sequel/extensions/_model_pg_row.rb +43 -0
- data/lib/sequel/extensions/_pretty_table.rb +10 -9
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +15 -11
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +2 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +9 -4
- data/lib/sequel/extensions/connection_expiration.rb +99 -0
- data/lib/sequel/extensions/connection_validator.rb +26 -13
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +93 -38
- data/lib/sequel/extensions/core_extensions.rb +45 -53
- data/lib/sequel/extensions/core_refinements.rb +44 -46
- data/lib/sequel/extensions/current_datetime_timestamp.rb +5 -4
- data/lib/sequel/extensions/dataset_source_alias.rb +4 -0
- data/lib/sequel/extensions/date_arithmetic.rb +42 -16
- data/lib/sequel/extensions/datetime_parse_to_time.rb +37 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +94 -0
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +7 -3
- data/lib/sequel/extensions/error_sql.rb +7 -3
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +14 -15
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/freeze_datasets.rb +3 -0
- data/lib/sequel/extensions/from_block.rb +2 -31
- data/lib/sequel/extensions/graph_each.rb +19 -6
- data/lib/sequel/extensions/identifier_mangling.rb +180 -0
- data/lib/sequel/extensions/implicit_subquery.rb +48 -0
- data/lib/sequel/extensions/index_caching.rb +109 -0
- data/lib/sequel/extensions/inflector.rb +8 -4
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/looser_typecasting.rb +19 -9
- data/lib/sequel/extensions/migration.rb +132 -80
- data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +4 -0
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +4 -0
- data/lib/sequel/extensions/null_dataset.rb +12 -8
- data/lib/sequel/extensions/pagination.rb +35 -28
- data/lib/sequel/extensions/pg_array.rb +227 -316
- data/lib/sequel/extensions/pg_array_ops.rb +19 -7
- data/lib/sequel/extensions/pg_enum.rb +69 -24
- data/lib/sequel/extensions/pg_extended_date_support.rb +250 -0
- data/lib/sequel/extensions/pg_hstore.rb +50 -59
- data/lib/sequel/extensions/pg_hstore_ops.rb +9 -3
- data/lib/sequel/extensions/pg_inet.rb +34 -15
- data/lib/sequel/extensions/pg_inet_ops.rb +5 -1
- data/lib/sequel/extensions/pg_interval.rb +26 -26
- data/lib/sequel/extensions/pg_json.rb +422 -141
- data/lib/sequel/extensions/pg_json_ops.rb +248 -9
- data/lib/sequel/extensions/pg_loose_count.rb +5 -1
- data/lib/sequel/extensions/pg_range.rb +162 -146
- data/lib/sequel/extensions/pg_range_ops.rb +10 -5
- data/lib/sequel/extensions/pg_row.rb +53 -87
- data/lib/sequel/extensions/pg_row_ops.rb +36 -13
- data/lib/sequel/extensions/pg_static_cache_updater.rb +6 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/pretty_table.rb +4 -0
- data/lib/sequel/extensions/query.rb +12 -7
- data/lib/sequel/extensions/round_timestamps.rb +6 -9
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +59 -0
- data/lib/sequel/extensions/schema_caching.rb +14 -1
- data/lib/sequel/extensions/schema_dumper.rb +83 -55
- data/lib/sequel/extensions/select_remove.rb +8 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +50 -17
- data/lib/sequel/extensions/server_logging.rb +61 -0
- data/lib/sequel/extensions/split_array_nil.rb +8 -4
- data/lib/sequel/extensions/sql_comments.rb +96 -0
- data/lib/sequel/extensions/sql_expr.rb +4 -1
- data/lib/sequel/extensions/string_agg.rb +181 -0
- data/lib/sequel/extensions/string_date_time.rb +2 -0
- data/lib/sequel/extensions/symbol_aref.rb +53 -0
- data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
- data/lib/sequel/extensions/symbol_as.rb +23 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
- data/lib/sequel/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/extensions/thread_local_timezones.rb +4 -0
- data/lib/sequel/extensions/to_dot.rb +15 -5
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model.rb +36 -126
- data/lib/sequel/model/associations.rb +850 -257
- data/lib/sequel/model/base.rb +652 -764
- data/lib/sequel/model/dataset_module.rb +13 -10
- data/lib/sequel/model/default_inflections.rb +3 -1
- data/lib/sequel/model/errors.rb +3 -3
- data/lib/sequel/model/exceptions.rb +12 -12
- data/lib/sequel/model/inflections.rb +8 -19
- data/lib/sequel/model/plugins.rb +111 -0
- data/lib/sequel/plugins/accessed_columns.rb +2 -0
- data/lib/sequel/plugins/active_model.rb +32 -7
- data/lib/sequel/plugins/after_initialize.rb +3 -1
- data/lib/sequel/plugins/association_dependencies.rb +27 -18
- data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
- data/lib/sequel/plugins/association_pks.rb +181 -83
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/auto_validations.rb +58 -23
- data/lib/sequel/plugins/before_after_save.rb +8 -0
- data/lib/sequel/plugins/blacklist_security.rb +23 -12
- data/lib/sequel/plugins/boolean_readers.rb +9 -6
- data/lib/sequel/plugins/boolean_subsets.rb +64 -0
- data/lib/sequel/plugins/caching.rb +27 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +192 -94
- data/lib/sequel/plugins/column_conflicts.rb +18 -3
- data/lib/sequel/plugins/column_select.rb +9 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +36 -24
- data/lib/sequel/plugins/constraint_validations.rb +37 -16
- data/lib/sequel/plugins/csv_serializer.rb +58 -35
- data/lib/sequel/plugins/dataset_associations.rb +60 -18
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +74 -13
- data/lib/sequel/plugins/delay_add_association.rb +4 -1
- data/lib/sequel/plugins/dirty.rb +65 -24
- data/lib/sequel/plugins/eager_each.rb +27 -3
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/error_splitter.rb +19 -12
- data/lib/sequel/plugins/finder.rb +246 -0
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/force_encoding.rb +9 -12
- data/lib/sequel/plugins/hook_class_methods.rb +39 -54
- data/lib/sequel/plugins/input_transformer.rb +20 -10
- data/lib/sequel/plugins/insert_conflict.rb +72 -0
- data/lib/sequel/plugins/insert_returning_select.rb +4 -2
- data/lib/sequel/plugins/instance_filters.rb +12 -8
- data/lib/sequel/plugins/instance_hooks.rb +36 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +24 -13
- data/lib/sequel/plugins/json_serializer.rb +123 -47
- data/lib/sequel/plugins/lazy_attributes.rb +20 -14
- data/lib/sequel/plugins/list.rb +40 -26
- data/lib/sequel/plugins/many_through_many.rb +28 -12
- data/lib/sequel/plugins/modification_detection.rb +17 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +8 -5
- data/lib/sequel/plugins/nested_attributes.rb +55 -28
- data/lib/sequel/plugins/optimistic_locking.rb +5 -3
- data/lib/sequel/plugins/pg_array_associations.rb +52 -18
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +348 -0
- data/lib/sequel/plugins/pg_row.rb +7 -51
- data/lib/sequel/plugins/prepared_statements.rb +53 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +13 -5
- data/lib/sequel/plugins/rcte_tree.rb +43 -63
- data/lib/sequel/plugins/serialization.rb +37 -44
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -1
- data/lib/sequel/plugins/sharding.rb +17 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +62 -28
- data/lib/sequel/plugins/singular_table_names.rb +2 -0
- data/lib/sequel/plugins/skip_create_refresh.rb +5 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +13 -6
- data/lib/sequel/plugins/static_cache.rb +79 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +5 -3
- data/lib/sequel/plugins/subclasses.rb +20 -2
- data/lib/sequel/plugins/subset_conditions.rb +48 -0
- data/lib/sequel/plugins/table_select.rb +4 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +120 -6
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +22 -8
- data/lib/sequel/plugins/touch.rb +21 -8
- data/lib/sequel/plugins/tree.rb +57 -30
- data/lib/sequel/plugins/typecast_on_load.rb +14 -4
- data/lib/sequel/plugins/unlimited_update.rb +3 -7
- data/lib/sequel/plugins/update_or_create.rb +6 -4
- data/lib/sequel/plugins/update_primary_key.rb +3 -1
- data/lib/sequel/plugins/update_refresh.rb +28 -15
- data/lib/sequel/plugins/uuid.rb +70 -0
- data/lib/sequel/plugins/validate_associated.rb +20 -0
- data/lib/sequel/plugins/validation_class_methods.rb +40 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +49 -31
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +31 -30
- data/lib/sequel/sql.rb +479 -329
- data/lib/sequel/timezones.rb +62 -32
- data/lib/sequel/version.rb +10 -3
- metadata +177 -477
- data/Rakefile +0 -165
- data/doc/active_record.rdoc +0 -912
- data/doc/release_notes/1.0.txt +0 -38
- data/doc/release_notes/1.1.txt +0 -143
- data/doc/release_notes/1.3.txt +0 -101
- data/doc/release_notes/1.4.0.txt +0 -53
- data/doc/release_notes/1.5.0.txt +0 -155
- data/doc/release_notes/2.0.0.txt +0 -298
- data/doc/release_notes/2.1.0.txt +0 -271
- data/doc/release_notes/2.10.0.txt +0 -328
- data/doc/release_notes/2.11.0.txt +0 -215
- data/doc/release_notes/2.12.0.txt +0 -534
- data/doc/release_notes/2.2.0.txt +0 -253
- data/doc/release_notes/2.3.0.txt +0 -88
- data/doc/release_notes/2.4.0.txt +0 -106
- data/doc/release_notes/2.5.0.txt +0 -137
- data/doc/release_notes/2.6.0.txt +0 -157
- data/doc/release_notes/2.7.0.txt +0 -166
- data/doc/release_notes/2.8.0.txt +0 -171
- data/doc/release_notes/2.9.0.txt +0 -97
- data/doc/release_notes/3.0.0.txt +0 -221
- data/doc/release_notes/3.1.0.txt +0 -406
- data/doc/release_notes/3.10.0.txt +0 -286
- data/doc/release_notes/3.11.0.txt +0 -254
- data/doc/release_notes/3.12.0.txt +0 -304
- data/doc/release_notes/3.13.0.txt +0 -210
- data/doc/release_notes/3.14.0.txt +0 -118
- data/doc/release_notes/3.15.0.txt +0 -78
- data/doc/release_notes/3.16.0.txt +0 -45
- data/doc/release_notes/3.17.0.txt +0 -58
- data/doc/release_notes/3.18.0.txt +0 -120
- data/doc/release_notes/3.19.0.txt +0 -67
- data/doc/release_notes/3.2.0.txt +0 -268
- data/doc/release_notes/3.20.0.txt +0 -41
- data/doc/release_notes/3.21.0.txt +0 -87
- data/doc/release_notes/3.22.0.txt +0 -39
- data/doc/release_notes/3.23.0.txt +0 -172
- data/doc/release_notes/3.24.0.txt +0 -420
- data/doc/release_notes/3.25.0.txt +0 -88
- data/doc/release_notes/3.26.0.txt +0 -88
- data/doc/release_notes/3.27.0.txt +0 -82
- data/doc/release_notes/3.28.0.txt +0 -304
- data/doc/release_notes/3.29.0.txt +0 -459
- data/doc/release_notes/3.3.0.txt +0 -192
- data/doc/release_notes/3.30.0.txt +0 -135
- data/doc/release_notes/3.31.0.txt +0 -146
- data/doc/release_notes/3.32.0.txt +0 -202
- data/doc/release_notes/3.33.0.txt +0 -157
- data/doc/release_notes/3.34.0.txt +0 -671
- data/doc/release_notes/3.35.0.txt +0 -144
- data/doc/release_notes/3.36.0.txt +0 -245
- data/doc/release_notes/3.37.0.txt +0 -338
- data/doc/release_notes/3.38.0.txt +0 -234
- data/doc/release_notes/3.39.0.txt +0 -237
- data/doc/release_notes/3.4.0.txt +0 -325
- data/doc/release_notes/3.40.0.txt +0 -73
- data/doc/release_notes/3.41.0.txt +0 -155
- data/doc/release_notes/3.42.0.txt +0 -74
- data/doc/release_notes/3.43.0.txt +0 -105
- data/doc/release_notes/3.44.0.txt +0 -152
- data/doc/release_notes/3.45.0.txt +0 -179
- data/doc/release_notes/3.46.0.txt +0 -122
- data/doc/release_notes/3.47.0.txt +0 -270
- data/doc/release_notes/3.48.0.txt +0 -477
- data/doc/release_notes/3.5.0.txt +0 -510
- data/doc/release_notes/3.6.0.txt +0 -366
- data/doc/release_notes/3.7.0.txt +0 -179
- data/doc/release_notes/3.8.0.txt +0 -151
- data/doc/release_notes/3.9.0.txt +0 -233
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.5.0.txt +0 -34
- data/doc/release_notes/4.6.0.txt +0 -30
- data/doc/release_notes/4.7.0.txt +0 -103
- data/doc/release_notes/4.8.0.txt +0 -175
- data/doc/release_notes/4.9.0.txt +0 -190
- data/lib/sequel/adapters/cubrid.rb +0 -142
- data/lib/sequel/adapters/do.rb +0 -156
- data/lib/sequel/adapters/do/mysql.rb +0 -64
- data/lib/sequel/adapters/do/postgres.rb +0 -42
- data/lib/sequel/adapters/do/sqlite3.rb +0 -40
- data/lib/sequel/adapters/jdbc/as400.rb +0 -82
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -62
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -34
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -31
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -31
- data/lib/sequel/adapters/odbc/progress.rb +0 -8
- data/lib/sequel/adapters/shared/cubrid.rb +0 -243
- data/lib/sequel/adapters/shared/firebird.rb +0 -245
- data/lib/sequel/adapters/shared/informix.rb +0 -52
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -150
- data/lib/sequel/adapters/shared/progress.rb +0 -38
- data/lib/sequel/adapters/swift.rb +0 -158
- data/lib/sequel/adapters/swift/mysql.rb +0 -47
- data/lib/sequel/adapters/swift/postgres.rb +0 -45
- data/lib/sequel/adapters/swift/sqlite.rb +0 -47
- data/lib/sequel/adapters/utils/pg_types.rb +0 -68
- data/lib/sequel/dataset/mutation.rb +0 -109
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -3
- data/lib/sequel/extensions/filter_having.rb +0 -59
- data/lib/sequel/extensions/hash_aliases.rb +0 -45
- data/lib/sequel/extensions/meta_def.rb +0 -31
- data/lib/sequel/extensions/query_literals.rb +0 -80
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -22
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -118
- data/lib/sequel/extensions/set_overrides.rb +0 -72
- data/lib/sequel/no_core_ext.rb +0 -1
- data/lib/sequel/plugins/association_autoreloading.rb +0 -7
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -7
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -78
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -117
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -59
- data/lib/sequel/plugins/schema.rb +0 -80
- data/lib/sequel/plugins/scissors.rb +0 -33
- data/spec/adapters/db2_spec.rb +0 -160
- data/spec/adapters/firebird_spec.rb +0 -411
- data/spec/adapters/informix_spec.rb +0 -100
- data/spec/adapters/mssql_spec.rb +0 -706
- data/spec/adapters/mysql_spec.rb +0 -1287
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3725
- data/spec/adapters/spec_helper.rb +0 -43
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -653
- data/spec/bin_spec.rb +0 -254
- data/spec/core/connection_pool_spec.rb +0 -1016
- data/spec/core/database_spec.rb +0 -2531
- data/spec/core/dataset_spec.rb +0 -5098
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1243
- data/spec/core/mock_adapter_spec.rb +0 -462
- data/spec/core/object_graph_spec.rb +0 -303
- data/spec/core/placeholder_literalizer_spec.rb +0 -163
- data/spec/core/schema_generator_spec.rb +0 -179
- data/spec/core/schema_spec.rb +0 -1659
- data/spec/core/spec_helper.rb +0 -34
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -699
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -123
- data/spec/extensions/after_initialize_spec.rb +0 -24
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -117
- data/spec/extensions/association_pks_spec.rb +0 -365
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/blacklist_security_spec.rb +0 -88
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -420
- data/spec/extensions/column_conflicts_spec.rb +0 -60
- data/spec/extensions/column_select_spec.rb +0 -108
- data/spec/extensions/columns_introspection_spec.rb +0 -91
- data/spec/extensions/composition_spec.rb +0 -242
- data/spec/extensions/connection_validator_spec.rb +0 -120
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
- data/spec/extensions/constraint_validations_spec.rb +0 -325
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -173
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -311
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -150
- data/spec/extensions/defaults_setter_spec.rb +0 -101
- data/spec/extensions/delay_add_association_spec.rb +0 -52
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/eager_each_spec.rb +0 -42
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/eval_inspect_spec.rb +0 -73
- data/spec/extensions/filter_having_spec.rb +0 -40
- data/spec/extensions/force_encoding_spec.rb +0 -114
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/graph_each_spec.rb +0 -109
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -54
- data/spec/extensions/insert_returning_select_spec.rb +0 -46
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -276
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -291
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -267
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2172
- data/spec/extensions/meta_def_spec.rb +0 -21
- data/spec/extensions/migration_spec.rb +0 -712
- data/spec/extensions/modification_detection_spec.rb +0 -80
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
- data/spec/extensions/named_timezones_spec.rb +0 -108
- data/spec/extensions/nested_attributes_spec.rb +0 -697
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -128
- data/spec/extensions/pagination_spec.rb +0 -118
- data/spec/extensions/pg_array_associations_spec.rb +0 -736
- data/spec/extensions/pg_array_ops_spec.rb +0 -143
- data/spec/extensions/pg_array_spec.rb +0 -395
- data/spec/extensions/pg_enum_spec.rb +0 -92
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
- data/spec/extensions/pg_hstore_spec.rb +0 -206
- data/spec/extensions/pg_inet_ops_spec.rb +0 -101
- data/spec/extensions/pg_inet_spec.rb +0 -52
- data/spec/extensions/pg_interval_spec.rb +0 -76
- data/spec/extensions/pg_json_ops_spec.rb +0 -229
- data/spec/extensions/pg_json_spec.rb +0 -218
- data/spec/extensions/pg_loose_count_spec.rb +0 -17
- data/spec/extensions/pg_range_ops_spec.rb +0 -58
- data/spec/extensions/pg_range_spec.rb +0 -404
- data/spec/extensions/pg_row_ops_spec.rb +0 -60
- data/spec/extensions/pg_row_plugin_spec.rb +0 -62
- data/spec/extensions/pg_row_spec.rb +0 -360
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
- data/spec/extensions/prepared_statements_spec.rb +0 -103
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
- data/spec/extensions/pretty_table_spec.rb +0 -92
- data/spec/extensions/query_literals_spec.rb +0 -183
- data/spec/extensions/query_spec.rb +0 -102
- data/spec/extensions/rcte_tree_spec.rb +0 -392
- data/spec/extensions/round_timestamps_spec.rb +0 -43
- data/spec/extensions/schema_caching_spec.rb +0 -41
- data/spec/extensions/schema_dumper_spec.rb +0 -789
- data/spec/extensions/schema_spec.rb +0 -117
- data/spec/extensions/scissors_spec.rb +0 -26
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -362
- data/spec/extensions/server_block_spec.rb +0 -90
- data/spec/extensions/set_overrides_spec.rb +0 -61
- data/spec/extensions/sharding_spec.rb +0 -198
- data/spec/extensions/shared_caching_spec.rb +0 -175
- data/spec/extensions/single_table_inheritance_spec.rb +0 -297
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -17
- data/spec/extensions/spec_helper.rb +0 -71
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -22
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- data/spec/extensions/string_date_time_spec.rb +0 -95
- data/spec/extensions/string_stripper_spec.rb +0 -68
- data/spec/extensions/subclasses_spec.rb +0 -66
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -82
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/timestamps_spec.rb +0 -175
- data/spec/extensions/to_dot_spec.rb +0 -154
- data/spec/extensions/touch_spec.rb +0 -203
- data/spec/extensions/tree_spec.rb +0 -274
- data/spec/extensions/typecast_on_load_spec.rb +0 -80
- data/spec/extensions/unlimited_update_spec.rb +0 -20
- data/spec/extensions/update_or_create_spec.rb +0 -87
- data/spec/extensions/update_primary_key_spec.rb +0 -100
- data/spec/extensions/update_refresh_spec.rb +0 -53
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1027
- data/spec/extensions/validation_helpers_spec.rb +0 -541
- data/spec/extensions/xml_serializer_spec.rb +0 -207
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -55
- data/spec/integration/associations_test.rb +0 -2454
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1808
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -240
- data/spec/integration/model_test.rb +0 -226
- data/spec/integration/plugin_test.rb +0 -2240
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -817
- data/spec/integration/spec_helper.rb +0 -48
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -374
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -525
- data/spec/model/associations_spec.rb +0 -4426
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -146
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2137
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -982
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2147
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../shared/access'
|
|
4
|
+
require_relative '../utils/split_alter_table'
|
|
3
5
|
|
|
4
6
|
module Sequel
|
|
5
7
|
module ADO
|
|
@@ -13,7 +15,7 @@ module Sequel
|
|
|
13
15
|
:tables => 20,
|
|
14
16
|
:views => 23,
|
|
15
17
|
:foreign_keys => 27
|
|
16
|
-
}
|
|
18
|
+
}.freeze
|
|
17
19
|
|
|
18
20
|
attr_reader :type, :criteria
|
|
19
21
|
|
|
@@ -40,7 +42,8 @@ module Sequel
|
|
|
40
42
|
131 => "DECIMAL",
|
|
41
43
|
201 => "TEXT",
|
|
42
44
|
205 => "IMAGE"
|
|
43
|
-
}
|
|
45
|
+
}.freeze
|
|
46
|
+
DATA_TYPE.each_value(&:freeze)
|
|
44
47
|
|
|
45
48
|
def initialize(row)
|
|
46
49
|
@row = row
|
|
@@ -84,13 +87,9 @@ module Sequel
|
|
|
84
87
|
end
|
|
85
88
|
|
|
86
89
|
module DatabaseMethods
|
|
87
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
88
90
|
include Sequel::Access::DatabaseMethods
|
|
89
91
|
include Sequel::Database::SplitAlterTable
|
|
90
92
|
|
|
91
|
-
DECIMAL_TYPE_RE = /decimal/io
|
|
92
|
-
LAST_INSERT_ID = "SELECT @@IDENTITY".freeze
|
|
93
|
-
|
|
94
93
|
# Remove cached schema after altering a table, since otherwise it can be cached
|
|
95
94
|
# incorrectly in the rename column case.
|
|
96
95
|
def alter_table(name, *)
|
|
@@ -109,9 +108,10 @@ module Sequel
|
|
|
109
108
|
def execute_insert(sql, opts=OPTS)
|
|
110
109
|
synchronize(opts[:server]) do |conn|
|
|
111
110
|
begin
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
res
|
|
111
|
+
log_connection_yield(sql, conn){conn.Execute(sql)}
|
|
112
|
+
last_insert_sql = "SELECT @@IDENTITY"
|
|
113
|
+
res = log_connection_yield(last_insert_sql, conn){conn.Execute(last_insert_sql)}
|
|
114
|
+
res.GetRows.transpose.each{|r| return r.shift}
|
|
115
115
|
rescue ::WIN32OLERuntimeError => e
|
|
116
116
|
raise_error(e)
|
|
117
117
|
end
|
|
@@ -129,7 +129,7 @@ module Sequel
|
|
|
129
129
|
ado_schema_views.map {|tbl| m.call(tbl['TABLE_NAME'])}
|
|
130
130
|
end
|
|
131
131
|
|
|
132
|
-
#
|
|
132
|
+
# OpenSchema returns compound indexes as multiple rows
|
|
133
133
|
def indexes(table_name,opts=OPTS)
|
|
134
134
|
m = output_identifier_meth
|
|
135
135
|
idxs = ado_schema_indexes(table_name).inject({}) do |memo, idx|
|
|
@@ -144,7 +144,7 @@ module Sequel
|
|
|
144
144
|
idxs
|
|
145
145
|
end
|
|
146
146
|
|
|
147
|
-
#
|
|
147
|
+
# OpenSchema returns compound foreign key relationships as multiple rows
|
|
148
148
|
def foreign_key_list(table, opts=OPTS)
|
|
149
149
|
m = output_identifier_meth
|
|
150
150
|
fks = ado_schema_foreign_keys(table).inject({}) do |memo, fk|
|
|
@@ -201,15 +201,15 @@ module Sequel
|
|
|
201
201
|
end
|
|
202
202
|
|
|
203
203
|
def begin_transaction(conn, opts=OPTS)
|
|
204
|
-
|
|
204
|
+
log_connection_yield('Transaction.begin', conn){conn.BeginTrans}
|
|
205
205
|
end
|
|
206
206
|
|
|
207
207
|
def commit_transaction(conn, opts=OPTS)
|
|
208
|
-
|
|
208
|
+
log_connection_yield('Transaction.commit', conn){conn.CommitTrans}
|
|
209
209
|
end
|
|
210
210
|
|
|
211
211
|
def rollback_transaction(conn, opts=OPTS)
|
|
212
|
-
|
|
212
|
+
log_connection_yield('Transaction.rollback', conn){conn.RollbackTrans}
|
|
213
213
|
end
|
|
214
214
|
|
|
215
215
|
def schema_column_type(db_type)
|
|
@@ -239,7 +239,7 @@ module Sequel
|
|
|
239
239
|
idx["COLUMN_NAME"] == row["COLUMN_NAME"] &&
|
|
240
240
|
idx["PRIMARY_KEY"]
|
|
241
241
|
},
|
|
242
|
-
:type => if row.db_type =~
|
|
242
|
+
:type => if row.db_type =~ /decimal/i && row.scale == 0
|
|
243
243
|
:integer
|
|
244
244
|
else
|
|
245
245
|
schema_column_type(row.db_type)
|
|
@@ -294,8 +294,9 @@ module Sequel
|
|
|
294
294
|
|
|
295
295
|
def fetch_ado_schema(type, criteria=[])
|
|
296
296
|
execute_open_ado_schema(type, criteria) do |s|
|
|
297
|
-
cols =
|
|
298
|
-
s.
|
|
297
|
+
cols = []
|
|
298
|
+
s.Fields.each{|f| cols << f.Name}
|
|
299
|
+
s.GetRows.transpose.each do |r|
|
|
299
300
|
row = {}
|
|
300
301
|
cols.each{|c| row[c] = r.shift}
|
|
301
302
|
yield row
|
|
@@ -306,12 +307,11 @@ module Sequel
|
|
|
306
307
|
# This is like execute() in that it yields an ADO RecordSet, except
|
|
307
308
|
# instead of an SQL interface there's this OpenSchema call
|
|
308
309
|
# cf. http://msdn.microsoft.com/en-us/library/ee275721(v=bts.10)
|
|
309
|
-
#
|
|
310
310
|
def execute_open_ado_schema(type, criteria=[])
|
|
311
311
|
ado_schema = AdoSchema.new(type, criteria)
|
|
312
312
|
synchronize(opts[:server]) do |conn|
|
|
313
313
|
begin
|
|
314
|
-
r =
|
|
314
|
+
r = log_connection_yield("OpenSchema #{type.inspect}, #{criteria.inspect}", conn) {
|
|
315
315
|
if ado_schema.criteria.empty?
|
|
316
316
|
conn.OpenSchema(ado_schema.type)
|
|
317
317
|
else
|
|
@@ -1,27 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../shared/mssql'
|
|
2
4
|
|
|
3
5
|
module Sequel
|
|
4
6
|
module ADO
|
|
5
|
-
# Database and Dataset instance methods for MSSQL specific
|
|
6
|
-
# support via ADO.
|
|
7
7
|
module MSSQL
|
|
8
8
|
module DatabaseMethods
|
|
9
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
10
9
|
include Sequel::MSSQL::DatabaseMethods
|
|
11
|
-
|
|
12
|
-
# delete query.
|
|
13
|
-
ROWS_AFFECTED = "SELECT @@ROWCOUNT AS AffectedRows"
|
|
14
|
-
|
|
15
|
-
# Issue a separate query to get the rows modified. ADO appears to
|
|
16
|
-
# use pass by reference with an integer variable, which is obviously
|
|
17
|
-
# not supported directly in ruby, and I'm not aware of a workaround.
|
|
10
|
+
|
|
18
11
|
def execute_dui(sql, opts=OPTS)
|
|
19
12
|
return super unless @opts[:provider]
|
|
20
13
|
synchronize(opts[:server]) do |conn|
|
|
21
14
|
begin
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
sql = "SET NOCOUNT ON; #{sql}; SELECT @@ROWCOUNT"
|
|
16
|
+
rst = log_connection_yield(sql, conn){conn.Execute(sql)}
|
|
17
|
+
rst.GetRows[0][0]
|
|
25
18
|
rescue ::WIN32OLERuntimeError => e
|
|
26
19
|
raise_error(e)
|
|
27
20
|
end
|
|
@@ -54,7 +47,7 @@ module Sequel
|
|
|
54
47
|
# is necessary as ADO's default :provider uses a separate native
|
|
55
48
|
# connection for each query.
|
|
56
49
|
def insert(*values)
|
|
57
|
-
return super if @opts[:sql]
|
|
50
|
+
return super if (@opts[:sql] && !@opts[:prepared_sql]) || @opts[:returning]
|
|
58
51
|
with_sql("SET NOCOUNT ON; #{insert_sql(*values)}; SELECT CAST(SCOPE_IDENTITY() AS INTEGER)").single_value
|
|
59
52
|
end
|
|
60
53
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
require 'amalgalite'
|
|
2
|
-
|
|
4
|
+
require_relative 'shared/sqlite'
|
|
3
5
|
|
|
4
6
|
module Sequel
|
|
5
|
-
# Top level module for holding all Amalgalite-related modules and classes
|
|
6
|
-
# for Sequel.
|
|
7
7
|
module Amalgalite
|
|
8
8
|
# Type conversion map class for Sequel's use of Amalgamite
|
|
9
9
|
class SequelTypeMap < ::Amalgalite::TypeMaps::DefaultMap
|
|
@@ -30,7 +30,7 @@ module Sequel
|
|
|
30
30
|
# Return numeric/decimal types as instances of BigDecimal
|
|
31
31
|
# instead of Float
|
|
32
32
|
def decimal(s)
|
|
33
|
-
BigDecimal
|
|
33
|
+
BigDecimal(s)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
# Return datetime types as instances of Sequel.datetime_class
|
|
@@ -48,15 +48,13 @@ module Sequel
|
|
|
48
48
|
if value.is_a?(::Amalgalite::Blob)
|
|
49
49
|
SQL::Blob.new(value.to_s)
|
|
50
50
|
elsif value.is_a?(String) && declared_type
|
|
51
|
-
(meth = self.class.sql_to_method(declared_type.downcase)) ?
|
|
51
|
+
(meth = self.class.sql_to_method(declared_type.downcase)) ? public_send(meth, value) : value
|
|
52
52
|
else
|
|
53
53
|
super
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
# Database class for SQLite databases used with Sequel and the
|
|
59
|
-
# amalgalite driver.
|
|
60
58
|
class Database < Sequel::Database
|
|
61
59
|
include ::Sequel::SQLite::DatabaseMethods
|
|
62
60
|
|
|
@@ -79,36 +77,31 @@ module Sequel
|
|
|
79
77
|
db = ::Amalgalite::Database.new(opts[:database])
|
|
80
78
|
db.busy_handler(::Amalgalite::BusyTimeout.new(opts.fetch(:timeout, 5000)/50, 50))
|
|
81
79
|
db.type_map = SequelTypeMap.new(self)
|
|
82
|
-
connection_pragmas.each{|s|
|
|
80
|
+
connection_pragmas.each{|s| log_connection_yield(s, db){db.execute_batch(s)}}
|
|
83
81
|
db
|
|
84
82
|
end
|
|
85
83
|
|
|
86
|
-
# Amalgalite is just the SQLite database without a separate SQLite installation.
|
|
87
84
|
def database_type
|
|
88
85
|
:sqlite
|
|
89
86
|
end
|
|
90
87
|
|
|
91
|
-
# Run the given SQL with the given arguments. Returns nil.
|
|
92
88
|
def execute_ddl(sql, opts=OPTS)
|
|
93
|
-
_execute(sql, opts){|conn|
|
|
89
|
+
_execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}}
|
|
94
90
|
nil
|
|
95
91
|
end
|
|
96
92
|
|
|
97
|
-
# Run the given SQL with the given arguments and return the number of changed rows.
|
|
98
93
|
def execute_dui(sql, opts=OPTS)
|
|
99
|
-
_execute(sql, opts){|conn|
|
|
94
|
+
_execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}; conn.row_changes}
|
|
100
95
|
end
|
|
101
96
|
|
|
102
|
-
# Run the given SQL with the given arguments and return the last inserted row id.
|
|
103
97
|
def execute_insert(sql, opts=OPTS)
|
|
104
|
-
_execute(sql, opts){|conn|
|
|
98
|
+
_execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.execute_batch(sql)}; conn.last_insert_rowid}
|
|
105
99
|
end
|
|
106
100
|
|
|
107
|
-
# Run the given SQL with the given arguments and yield each row.
|
|
108
101
|
def execute(sql, opts=OPTS)
|
|
109
102
|
_execute(sql, opts) do |conn|
|
|
110
103
|
begin
|
|
111
|
-
yield(stmt =
|
|
104
|
+
yield(stmt = log_connection_yield(sql, conn){conn.prepare(sql)})
|
|
112
105
|
ensure
|
|
113
106
|
stmt.close if stmt
|
|
114
107
|
end
|
|
@@ -117,7 +110,7 @@ module Sequel
|
|
|
117
110
|
|
|
118
111
|
# Run the given SQL with the given arguments and return the first value of the first row.
|
|
119
112
|
def single_value(sql, opts=OPTS)
|
|
120
|
-
_execute(sql, opts){|conn|
|
|
113
|
+
_execute(sql, opts){|conn| log_connection_yield(sql, conn){conn.first_value_from(sql)}}
|
|
121
114
|
end
|
|
122
115
|
|
|
123
116
|
private
|
|
@@ -143,22 +136,21 @@ module Sequel
|
|
|
143
136
|
o
|
|
144
137
|
end
|
|
145
138
|
|
|
146
|
-
|
|
139
|
+
def dataset_class_default
|
|
140
|
+
Dataset
|
|
141
|
+
end
|
|
142
|
+
|
|
147
143
|
def database_error_classes
|
|
148
144
|
[::Amalgalite::Error, ::Amalgalite::SQLite3::Error]
|
|
149
145
|
end
|
|
150
146
|
end
|
|
151
147
|
|
|
152
|
-
# Dataset class for SQLite datasets that use the amalgalite driver.
|
|
153
148
|
class Dataset < Sequel::Dataset
|
|
154
149
|
include ::Sequel::SQLite::DatasetMethods
|
|
155
150
|
|
|
156
|
-
Database::DatasetClass = self
|
|
157
|
-
|
|
158
|
-
# Yield a hash for each row in the dataset.
|
|
159
151
|
def fetch_rows(sql)
|
|
160
152
|
execute(sql) do |stmt|
|
|
161
|
-
|
|
153
|
+
self.columns = cols = stmt.result_fields.map{|c| output_identifier(c)}
|
|
162
154
|
col_count = cols.size
|
|
163
155
|
stmt.each do |result|
|
|
164
156
|
row = {}
|
|
@@ -170,7 +162,7 @@ module Sequel
|
|
|
170
162
|
|
|
171
163
|
private
|
|
172
164
|
|
|
173
|
-
# Quote the string using the
|
|
165
|
+
# Quote the string using the connection instance method.
|
|
174
166
|
def literal_string_append(sql, v)
|
|
175
167
|
db.synchronize(@opts[:server]){|c| sql << c.quote(v)}
|
|
176
168
|
end
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
require 'ibm_db'
|
|
2
|
-
|
|
4
|
+
require_relative 'shared/db2'
|
|
3
5
|
|
|
4
6
|
module Sequel
|
|
5
7
|
|
|
6
8
|
module IBMDB
|
|
7
|
-
@convert_smallint_to_bool = true
|
|
8
|
-
|
|
9
|
-
class << self
|
|
10
|
-
# Whether to convert smallint values to bool, true by default.
|
|
11
|
-
# Can also be overridden per dataset.
|
|
12
|
-
attr_accessor :convert_smallint_to_bool
|
|
13
|
-
end
|
|
14
|
-
|
|
15
9
|
tt = Class.new do
|
|
16
10
|
def boolean(s) !s.to_i.zero? end
|
|
17
11
|
def int(s) s.to_i end
|
|
@@ -24,13 +18,14 @@ module Sequel
|
|
|
24
18
|
:blob => ::Sequel::SQL::Blob.method(:new),
|
|
25
19
|
:time => ::Sequel.method(:string_to_time),
|
|
26
20
|
:date => ::Sequel.method(:string_to_date)
|
|
27
|
-
}
|
|
21
|
+
}.freeze
|
|
28
22
|
|
|
29
|
-
# Wraps an underlying connection to DB2 using IBM_DB
|
|
23
|
+
# Wraps an underlying connection to DB2 using IBM_DB, to provide a more
|
|
24
|
+
# rubyish API.
|
|
30
25
|
class Connection
|
|
31
26
|
# A hash with prepared statement name symbol keys, where each value is
|
|
32
27
|
# a two element array with an sql string and cached Statement value.
|
|
33
|
-
|
|
28
|
+
attr_reader :prepared_statements
|
|
34
29
|
|
|
35
30
|
# Error class for exceptions raised by the connection.
|
|
36
31
|
class Error < StandardError
|
|
@@ -185,6 +180,9 @@ module Sequel
|
|
|
185
180
|
|
|
186
181
|
# Hash of connection procs for converting
|
|
187
182
|
attr_reader :conversion_procs
|
|
183
|
+
|
|
184
|
+
# Whether to convert smallint values to bool for this Database instance
|
|
185
|
+
attr_accessor :convert_smallint_to_bool
|
|
188
186
|
|
|
189
187
|
# Create a new connection object for the given server.
|
|
190
188
|
def connect(server)
|
|
@@ -207,7 +205,6 @@ module Sequel
|
|
|
207
205
|
Connection.new(connection_params)
|
|
208
206
|
end
|
|
209
207
|
|
|
210
|
-
# Execute the given SQL on the database.
|
|
211
208
|
def execute(sql, opts=OPTS, &block)
|
|
212
209
|
if sql.is_a?(Symbol)
|
|
213
210
|
execute_prepared_statement(sql, opts, &block)
|
|
@@ -218,8 +215,6 @@ module Sequel
|
|
|
218
215
|
raise_error(e)
|
|
219
216
|
end
|
|
220
217
|
|
|
221
|
-
# Execute the given SQL on the database, returning the last inserted
|
|
222
|
-
# identity value.
|
|
223
218
|
def execute_insert(sql, opts=OPTS)
|
|
224
219
|
synchronize(opts[:server]) do |c|
|
|
225
220
|
if sql.is_a?(Symbol)
|
|
@@ -240,17 +235,17 @@ module Sequel
|
|
|
240
235
|
sql = ps.prepared_sql
|
|
241
236
|
synchronize(opts[:server]) do |conn|
|
|
242
237
|
unless conn.prepared_statements.fetch(ps_name, []).first == sql
|
|
243
|
-
|
|
238
|
+
log_connection_yield("PREPARE #{ps_name}: #{sql}", conn){conn.prepare(sql, ps_name)}
|
|
244
239
|
end
|
|
245
240
|
args = args.map{|v| v.nil? ? nil : prepared_statement_arg(v)}
|
|
246
241
|
log_sql = "EXECUTE #{ps_name}"
|
|
247
242
|
if ps.log_sql
|
|
248
|
-
log_sql
|
|
243
|
+
log_sql += " ("
|
|
249
244
|
log_sql << sql
|
|
250
245
|
log_sql << ")"
|
|
251
246
|
end
|
|
252
247
|
begin
|
|
253
|
-
stmt =
|
|
248
|
+
stmt = log_connection_yield(log_sql, conn, args){conn.execute_prepared(ps_name, *args)}
|
|
254
249
|
if block_given?
|
|
255
250
|
yield(stmt)
|
|
256
251
|
else
|
|
@@ -262,11 +257,17 @@ module Sequel
|
|
|
262
257
|
end
|
|
263
258
|
end
|
|
264
259
|
|
|
260
|
+
def freeze
|
|
261
|
+
@conversion_procs.freeze
|
|
262
|
+
super
|
|
263
|
+
end
|
|
264
|
+
|
|
265
265
|
private
|
|
266
266
|
|
|
267
|
-
# Execute the given SQL on the database
|
|
267
|
+
# Execute the given SQL on the database, yielding the related statement if a block
|
|
268
|
+
# is given or returning the number of affected rows if not, and ensuring the statement is freed.
|
|
268
269
|
def _execute(conn, sql, opts)
|
|
269
|
-
stmt =
|
|
270
|
+
stmt = log_connection_yield(sql, conn){conn.execute(sql)}
|
|
270
271
|
if block_given?
|
|
271
272
|
yield(stmt)
|
|
272
273
|
else
|
|
@@ -277,6 +278,7 @@ module Sequel
|
|
|
277
278
|
end
|
|
278
279
|
|
|
279
280
|
def adapter_initialize
|
|
281
|
+
@convert_smallint_to_bool = typecast_value_boolean(opts.fetch(:convert_smallint_to_bool, true))
|
|
280
282
|
@conversion_procs = DB2_TYPES.dup
|
|
281
283
|
@conversion_procs[:timestamp] = method(:to_application_timestamp)
|
|
282
284
|
end
|
|
@@ -284,14 +286,14 @@ module Sequel
|
|
|
284
286
|
# IBM_DB uses an autocommit setting instead of sending SQL queries.
|
|
285
287
|
# So starting a transaction just turns autocommit off.
|
|
286
288
|
def begin_transaction(conn, opts=OPTS)
|
|
287
|
-
|
|
289
|
+
log_connection_yield('Transaction.begin', conn){conn.autocommit = false}
|
|
288
290
|
set_transaction_isolation(conn, opts)
|
|
289
291
|
end
|
|
290
292
|
|
|
291
293
|
# This commits transaction in progress on the
|
|
292
294
|
# connection and sets autocommit back on.
|
|
293
295
|
def commit_transaction(conn, opts=OPTS)
|
|
294
|
-
|
|
296
|
+
log_connection_yield('Transaction.commit', conn){conn.commit}
|
|
295
297
|
end
|
|
296
298
|
|
|
297
299
|
def database_error_classes
|
|
@@ -302,14 +304,16 @@ module Sequel
|
|
|
302
304
|
exception.sqlstate
|
|
303
305
|
end
|
|
304
306
|
|
|
307
|
+
def dataset_class_default
|
|
308
|
+
Dataset
|
|
309
|
+
end
|
|
310
|
+
|
|
305
311
|
# Don't convert smallint to boolean for the metadata
|
|
306
312
|
# dataset, since the DB2 metadata does not use
|
|
307
313
|
# boolean columns, and some smallint columns are
|
|
308
314
|
# accidently treated as booleans.
|
|
309
|
-
def
|
|
310
|
-
|
|
311
|
-
ds.convert_smallint_to_bool = false
|
|
312
|
-
ds
|
|
315
|
+
def _metadata_dataset
|
|
316
|
+
super.with_convert_smallint_to_bool(false)
|
|
313
317
|
end
|
|
314
318
|
|
|
315
319
|
# Format Numeric, Date, and Time types specially for use
|
|
@@ -335,12 +339,12 @@ module Sequel
|
|
|
335
339
|
# This rolls back the transaction in progress on the
|
|
336
340
|
# connection and sets autocommit back on.
|
|
337
341
|
def rollback_transaction(conn, opts=OPTS)
|
|
338
|
-
|
|
342
|
+
log_connection_yield('Transaction.rollback', conn){conn.rollback}
|
|
339
343
|
end
|
|
340
344
|
|
|
341
345
|
# Convert smallint type to boolean if convert_smallint_to_bool is true
|
|
342
346
|
def schema_column_type(db_type)
|
|
343
|
-
if
|
|
347
|
+
if convert_smallint_to_bool && db_type =~ /smallint/i
|
|
344
348
|
:boolean
|
|
345
349
|
else
|
|
346
350
|
super
|
|
@@ -351,39 +355,31 @@ module Sequel
|
|
|
351
355
|
class Dataset < Sequel::Dataset
|
|
352
356
|
include Sequel::DB2::DatasetMethods
|
|
353
357
|
|
|
354
|
-
Database::DatasetClass = self
|
|
355
|
-
|
|
356
358
|
module CallableStatementMethods
|
|
357
359
|
# Extend given dataset with this module so subselects inside subselects in
|
|
358
360
|
# prepared statements work.
|
|
359
361
|
def subselect_sql_append(sql, ds)
|
|
360
|
-
ps = ds.to_prepared_statement(:select).
|
|
361
|
-
|
|
362
|
+
ps = ds.to_prepared_statement(:select).
|
|
363
|
+
clone(:append_sql=>sql, :prepared_args=>prepared_args).
|
|
364
|
+
with_extend(CallableStatementMethods)
|
|
362
365
|
ps = ps.bind(@opts[:bind_vars]) if @opts[:bind_vars]
|
|
363
|
-
ps.prepared_args = prepared_args
|
|
364
366
|
ps.prepared_sql
|
|
365
367
|
end
|
|
366
368
|
end
|
|
367
369
|
|
|
368
370
|
PreparedStatementMethods = prepared_statements_module(:prepare_bind, Sequel::Dataset::UnnumberedArgumentMapper)
|
|
369
371
|
|
|
370
|
-
# Emulate support of bind arguments in called statements.
|
|
371
|
-
def call(type, bind_arguments={}, *values, &block)
|
|
372
|
-
ps = to_prepared_statement(type, values)
|
|
373
|
-
ps.extend(CallableStatementMethods)
|
|
374
|
-
ps.call(bind_arguments, &block)
|
|
375
|
-
end
|
|
376
|
-
|
|
377
372
|
# Whether to convert smallint to boolean arguments for this dataset.
|
|
378
|
-
# Defaults to the
|
|
373
|
+
# Defaults to the Database setting.
|
|
379
374
|
def convert_smallint_to_bool
|
|
380
|
-
|
|
375
|
+
opts.has_key?(:convert_smallint_to_bool) ? opts[:convert_smallint_to_bool] : db.convert_smallint_to_bool
|
|
381
376
|
end
|
|
382
377
|
|
|
383
|
-
#
|
|
384
|
-
|
|
378
|
+
# Return a cloned dataset with the convert_smallint_to_bool option set.
|
|
379
|
+
def with_convert_smallint_to_bool(v)
|
|
380
|
+
clone(:convert_smallint_to_bool=>v)
|
|
381
|
+
end
|
|
385
382
|
|
|
386
|
-
# Fetch the rows from the database and yield plain hashes.
|
|
387
383
|
def fetch_rows(sql)
|
|
388
384
|
execute(sql) do |stmt|
|
|
389
385
|
columns = []
|
|
@@ -395,11 +391,11 @@ module Sequel
|
|
|
395
391
|
type = stmt.field_type(i).downcase.to_sym
|
|
396
392
|
# decide if it is a smallint from precision
|
|
397
393
|
type = :boolean if type == :int && convert && stmt.field_precision(i) < 8
|
|
398
|
-
type = :blob if type == :clob &&
|
|
394
|
+
type = :blob if type == :clob && db.use_clob_as_blob
|
|
399
395
|
columns << [key, cps[type]]
|
|
400
396
|
end
|
|
401
|
-
cols = columns.map{|c| c
|
|
402
|
-
|
|
397
|
+
cols = columns.map{|c| c[0]}
|
|
398
|
+
self.columns = cols
|
|
403
399
|
|
|
404
400
|
while res = stmt.fetch_array
|
|
405
401
|
row = {}
|
|
@@ -412,16 +408,14 @@ module Sequel
|
|
|
412
408
|
self
|
|
413
409
|
end
|
|
414
410
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
def
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
end
|
|
424
|
-
ps
|
|
411
|
+
private
|
|
412
|
+
|
|
413
|
+
def bound_variable_modules
|
|
414
|
+
[CallableStatementMethods]
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
def prepared_statement_modules
|
|
418
|
+
[PreparedStatementMethods]
|
|
425
419
|
end
|
|
426
420
|
end
|
|
427
421
|
end
|