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,57 +1,45 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
Sequel::JDBC.load_driver('com.ibm.db2.jcc.DB2Driver')
|
|
2
|
-
|
|
3
|
-
|
|
4
|
+
require_relative '../shared/db2'
|
|
5
|
+
require_relative 'transactions'
|
|
4
6
|
|
|
5
7
|
module Sequel
|
|
6
8
|
module JDBC
|
|
7
9
|
Sequel.synchronize do
|
|
8
10
|
DATABASE_SETUP[:db2] = proc do |db|
|
|
9
|
-
db.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
db.singleton_class.class_eval do
|
|
12
|
+
alias jdbc_schema_parse_table schema_parse_table
|
|
13
|
+
alias jdbc_tables tables
|
|
14
|
+
alias jdbc_views views
|
|
15
|
+
alias jdbc_indexes indexes
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
include Sequel::JDBC::DB2::DatabaseMethods
|
|
18
|
+
|
|
19
|
+
alias schema_parse_table jdbc_schema_parse_table
|
|
20
|
+
alias tables jdbc_tables
|
|
21
|
+
alias views jdbc_views
|
|
22
|
+
alias indexes jdbc_indexes
|
|
23
|
+
%w'schema_parse_table tables views indexes'.each do |s|
|
|
24
|
+
remove_method(:"jdbc_#{s}")
|
|
25
|
+
end
|
|
21
26
|
end
|
|
27
|
+
db.extend_datasets Sequel::DB2::DatasetMethods
|
|
28
|
+
com.ibm.db2.jcc.DB2Driver
|
|
22
29
|
end
|
|
23
30
|
end
|
|
24
31
|
|
|
25
|
-
class Database
|
|
26
|
-
# Alias the generic JDBC versions so they can be called directly later
|
|
27
|
-
alias jdbc_schema_parse_table schema_parse_table
|
|
28
|
-
alias jdbc_tables tables
|
|
29
|
-
alias jdbc_views views
|
|
30
|
-
alias jdbc_indexes indexes
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Database and Dataset instance methods for DB2 specific
|
|
34
|
-
# support via JDBC.
|
|
35
32
|
module DB2
|
|
36
|
-
# Database instance methods for DB2 databases accessed via JDBC.
|
|
37
33
|
module DatabaseMethods
|
|
38
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
39
|
-
PRIMARY_KEY_INDEX_RE = /\Asql\d+\z/i.freeze
|
|
40
|
-
|
|
41
34
|
include Sequel::DB2::DatabaseMethods
|
|
42
35
|
include Sequel::JDBC::Transactions
|
|
43
|
-
IDENTITY_VAL_LOCAL = "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1".freeze
|
|
44
|
-
|
|
45
|
-
%w'schema_parse_table tables views indexes'.each do |s|
|
|
46
|
-
class_eval("def #{s}(*a) jdbc_#{s}(*a) end", __FILE__, __LINE__)
|
|
47
|
-
end
|
|
48
36
|
|
|
49
37
|
private
|
|
50
38
|
|
|
51
39
|
def set_ps_arg(cps, arg, i)
|
|
52
40
|
case arg
|
|
53
41
|
when Sequel::SQL::Blob
|
|
54
|
-
if
|
|
42
|
+
if use_clob_as_blob
|
|
55
43
|
cps.setString(i, arg)
|
|
56
44
|
else
|
|
57
45
|
super
|
|
@@ -63,8 +51,8 @@ module Sequel
|
|
|
63
51
|
|
|
64
52
|
def last_insert_id(conn, opts=OPTS)
|
|
65
53
|
statement(conn) do |stmt|
|
|
66
|
-
sql = IDENTITY_VAL_LOCAL
|
|
67
|
-
rs =
|
|
54
|
+
sql = "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1"
|
|
55
|
+
rs = log_connection_yield(sql, conn){stmt.executeQuery(sql)}
|
|
68
56
|
rs.next
|
|
69
57
|
rs.getLong(1)
|
|
70
58
|
end
|
|
@@ -72,19 +60,23 @@ module Sequel
|
|
|
72
60
|
|
|
73
61
|
# Primary key indexes appear to be named sqlNNNN on DB2
|
|
74
62
|
def primary_key_index_re
|
|
75
|
-
|
|
63
|
+
/\Asql\d+\z/i
|
|
76
64
|
end
|
|
77
65
|
|
|
78
66
|
def setup_type_convertor_map
|
|
79
67
|
super
|
|
80
68
|
map = @type_convertor_map
|
|
81
69
|
types = Java::JavaSQL::Types
|
|
82
|
-
map[types::NCLOB] = map[types::CLOB] =
|
|
70
|
+
map[types::NCLOB] = map[types::CLOB] = method(:convert_clob)
|
|
83
71
|
end
|
|
84
|
-
end
|
|
85
72
|
|
|
86
|
-
|
|
87
|
-
|
|
73
|
+
def convert_clob(r, i)
|
|
74
|
+
if v = r.getClob(i)
|
|
75
|
+
v = v.getSubString(1, v.length)
|
|
76
|
+
v = Sequel::SQL::Blob.new(v) if use_clob_as_blob
|
|
77
|
+
v
|
|
78
|
+
end
|
|
79
|
+
end
|
|
88
80
|
end
|
|
89
81
|
end
|
|
90
82
|
end
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
Sequel::JDBC.load_driver('org.apache.derby.jdbc.EmbeddedDriver', :Derby)
|
|
2
|
-
|
|
4
|
+
require_relative 'transactions'
|
|
3
5
|
|
|
4
6
|
module Sequel
|
|
5
7
|
module JDBC
|
|
@@ -11,13 +13,8 @@ module Sequel
|
|
|
11
13
|
end
|
|
12
14
|
end
|
|
13
15
|
|
|
14
|
-
# Database and Dataset support for Derby databases accessed via JDBC.
|
|
15
16
|
module Derby
|
|
16
|
-
# Instance methods for Derby Database objects accessed via JDBC.
|
|
17
17
|
module DatabaseMethods
|
|
18
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
19
|
-
PRIMARY_KEY_INDEX_RE = /\Asql\d+\z/i.freeze
|
|
20
|
-
|
|
21
18
|
include ::Sequel::JDBC::Transactions
|
|
22
19
|
|
|
23
20
|
# Derby doesn't support casting integer to varchar, only integer to char,
|
|
@@ -28,14 +25,18 @@ module Sequel
|
|
|
28
25
|
(type == String) ? 'CHAR(254)' : super
|
|
29
26
|
end
|
|
30
27
|
|
|
31
|
-
# Derby uses the :derby database type.
|
|
32
28
|
def database_type
|
|
33
29
|
:derby
|
|
34
30
|
end
|
|
35
31
|
|
|
32
|
+
def freeze
|
|
33
|
+
svn_version
|
|
34
|
+
super
|
|
35
|
+
end
|
|
36
|
+
|
|
36
37
|
# Derby uses an IDENTITY sequence for autoincrementing columns.
|
|
37
38
|
def serial_primary_key_options
|
|
38
|
-
{:primary_key => true, :type =>
|
|
39
|
+
{:primary_key => true, :type => Integer, :identity=>true, :start_with=>1}
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
# The SVN version of the database.
|
|
@@ -47,7 +48,7 @@ module Sequel
|
|
|
47
48
|
end
|
|
48
49
|
end
|
|
49
50
|
|
|
50
|
-
# Derby supports
|
|
51
|
+
# Derby supports transactional DDL statements.
|
|
51
52
|
def supports_transactional_ddl?
|
|
52
53
|
true
|
|
53
54
|
end
|
|
@@ -60,7 +61,6 @@ module Sequel
|
|
|
60
61
|
ds.first
|
|
61
62
|
end
|
|
62
63
|
|
|
63
|
-
# Derby-specific syntax for renaming columns and changing a columns type/nullity.
|
|
64
64
|
def alter_table_sql(table, op)
|
|
65
65
|
case op[:op]
|
|
66
66
|
when :rename_column
|
|
@@ -80,15 +80,21 @@ module Sequel
|
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
+
# Derby does not allow adding primary key constraints to NULLable columns.
|
|
84
|
+
def can_add_primary_key_constraint_on_nullable_columns?
|
|
85
|
+
false
|
|
86
|
+
end
|
|
87
|
+
|
|
83
88
|
# Derby doesn't allow specifying NULL for columns, only NOT NULL.
|
|
84
89
|
def column_definition_null_sql(sql, column)
|
|
85
|
-
|
|
90
|
+
null = column.fetch(:null, column[:allow_null])
|
|
91
|
+
sql << " NOT NULL" if null == false || (null.nil? && column[:primary_key])
|
|
86
92
|
end
|
|
87
93
|
|
|
88
94
|
# Add NOT LOGGED for temporary tables to improve performance.
|
|
89
95
|
def create_table_sql(name, generator, options)
|
|
90
96
|
s = super
|
|
91
|
-
s
|
|
97
|
+
s += ' NOT LOGGED' if options[:temp]
|
|
92
98
|
s
|
|
93
99
|
end
|
|
94
100
|
|
|
@@ -129,7 +135,7 @@ module Sequel
|
|
|
129
135
|
def last_insert_id(conn, opts=OPTS)
|
|
130
136
|
statement(conn) do |stmt|
|
|
131
137
|
sql = 'SELECT IDENTITY_VAL_LOCAL() FROM sysibm.sysdummy1'
|
|
132
|
-
rs =
|
|
138
|
+
rs = log_connection_yield(sql, conn){stmt.executeQuery(sql)}
|
|
133
139
|
rs.next
|
|
134
140
|
rs.getLong(1)
|
|
135
141
|
end
|
|
@@ -147,7 +153,7 @@ module Sequel
|
|
|
147
153
|
|
|
148
154
|
# Primary key indexes appear to be named sqlNNNN on Derby
|
|
149
155
|
def primary_key_index_re
|
|
150
|
-
|
|
156
|
+
/\Asql\d+\z/i
|
|
151
157
|
end
|
|
152
158
|
|
|
153
159
|
# If an :identity option is present in the column, add the necessary IDENTITY SQL.
|
|
@@ -155,7 +161,7 @@ module Sequel
|
|
|
155
161
|
if column[:identity]
|
|
156
162
|
sql = "#{super} GENERATED BY DEFAULT AS IDENTITY"
|
|
157
163
|
if sw = column[:start_with]
|
|
158
|
-
sql
|
|
164
|
+
sql += " (START WITH #{sw.to_i}"
|
|
159
165
|
sql << " INCREMENT BY #{column[:increment_by].to_i}" if column[:increment_by]
|
|
160
166
|
sql << ")"
|
|
161
167
|
end
|
|
@@ -170,35 +176,14 @@ module Sequel
|
|
|
170
176
|
true
|
|
171
177
|
end
|
|
172
178
|
|
|
173
|
-
# The SQL query to issue to check if a connection is valid.
|
|
174
179
|
def valid_connection_sql
|
|
175
180
|
@valid_connection_sql ||= select(1).sql
|
|
176
181
|
end
|
|
177
182
|
end
|
|
178
183
|
|
|
179
|
-
# Dataset class for Derby datasets accessed via JDBC.
|
|
180
184
|
class Dataset < JDBC::Dataset
|
|
181
|
-
PAREN_CLOSE = Dataset::PAREN_CLOSE
|
|
182
|
-
PAREN_OPEN = Dataset::PAREN_OPEN
|
|
183
|
-
OFFSET = Dataset::OFFSET
|
|
184
|
-
CAST_STRING_OPEN = "RTRIM(".freeze
|
|
185
|
-
BLOB_OPEN = "CAST(X'".freeze
|
|
186
|
-
BLOB_CLOSE = "' AS BLOB)".freeze
|
|
187
|
-
HSTAR = "H*".freeze
|
|
188
|
-
TIME_FORMAT = "'%H:%M:%S'".freeze
|
|
189
|
-
DEFAULT_FROM = " FROM sysibm.sysdummy1".freeze
|
|
190
|
-
ROWS = " ROWS".freeze
|
|
191
|
-
FETCH_FIRST = " FETCH FIRST ".freeze
|
|
192
|
-
ROWS_ONLY = " ROWS ONLY".freeze
|
|
193
|
-
BOOL_TRUE_OLD = '(1 = 1)'.freeze
|
|
194
|
-
BOOL_FALSE_OLD = '(1 = 0)'.freeze
|
|
195
|
-
BOOL_TRUE = 'TRUE'.freeze
|
|
196
|
-
BOOL_FALSE = 'FALSE'.freeze
|
|
197
|
-
EMULATED_FUNCTION_MAP = {:char_length=>'length'.freeze}
|
|
198
|
-
|
|
199
185
|
# Derby doesn't support an expression between CASE and WHEN,
|
|
200
|
-
# so remove
|
|
201
|
-
# conditions.
|
|
186
|
+
# so remove conditions.
|
|
202
187
|
def case_expression_sql_append(sql, ce)
|
|
203
188
|
super(sql, ce.with_merged_expression)
|
|
204
189
|
end
|
|
@@ -208,9 +193,9 @@ module Sequel
|
|
|
208
193
|
# a string and the ending whitespace is important.
|
|
209
194
|
def cast_sql_append(sql, expr, type)
|
|
210
195
|
if type == String
|
|
211
|
-
sql <<
|
|
196
|
+
sql << "RTRIM("
|
|
212
197
|
super
|
|
213
|
-
sql <<
|
|
198
|
+
sql << ')'
|
|
214
199
|
else
|
|
215
200
|
super
|
|
216
201
|
end
|
|
@@ -222,10 +207,16 @@ module Sequel
|
|
|
222
207
|
complex_expression_emulate_append(sql, op, args)
|
|
223
208
|
when :&, :|, :^, :<<, :>>
|
|
224
209
|
raise Error, "Derby doesn't support the #{op} operator"
|
|
210
|
+
when :**
|
|
211
|
+
sql << 'exp('
|
|
212
|
+
literal_append(sql, args[1])
|
|
213
|
+
sql << ' * ln('
|
|
214
|
+
literal_append(sql, args[0])
|
|
215
|
+
sql << "))"
|
|
225
216
|
when :extract
|
|
226
|
-
sql << args
|
|
227
|
-
literal_append(sql, args
|
|
228
|
-
sql <<
|
|
217
|
+
sql << args[0].to_s << '('
|
|
218
|
+
literal_append(sql, args[1])
|
|
219
|
+
sql << ')'
|
|
229
220
|
else
|
|
230
221
|
super
|
|
231
222
|
end
|
|
@@ -249,12 +240,12 @@ module Sequel
|
|
|
249
240
|
private
|
|
250
241
|
|
|
251
242
|
def empty_from_sql
|
|
252
|
-
|
|
243
|
+
" FROM sysibm.sysdummy1"
|
|
253
244
|
end
|
|
254
245
|
|
|
255
246
|
# Derby needs a hex string casted to BLOB for blobs.
|
|
256
247
|
def literal_blob_append(sql, v)
|
|
257
|
-
sql <<
|
|
248
|
+
sql << "CAST(X'" << v.unpack("H*").first << "' AS BLOB)"
|
|
258
249
|
end
|
|
259
250
|
|
|
260
251
|
# Derby needs the standard workaround to insert all default values into
|
|
@@ -263,47 +254,54 @@ module Sequel
|
|
|
263
254
|
false
|
|
264
255
|
end
|
|
265
256
|
|
|
266
|
-
# Derby
|
|
267
|
-
# Newer versions can use the FALSE literal, but the latest gem version cannot.
|
|
257
|
+
# Newer Derby versions can use the FALSE literal, but older versions need an always false expression.
|
|
268
258
|
def literal_false
|
|
269
259
|
if db.svn_version >= 1040133
|
|
270
|
-
|
|
260
|
+
'FALSE'
|
|
271
261
|
else
|
|
272
|
-
|
|
262
|
+
'(1 = 0)'
|
|
273
263
|
end
|
|
274
264
|
end
|
|
275
265
|
|
|
276
266
|
# Derby handles fractional seconds in timestamps, but not in times
|
|
277
267
|
def literal_sqltime(v)
|
|
278
|
-
v.strftime(
|
|
268
|
+
v.strftime("'%H:%M:%S'")
|
|
279
269
|
end
|
|
280
270
|
|
|
281
|
-
# Derby
|
|
282
|
-
# Newer versions can use the TRUE literal, but the latest gem version cannot.
|
|
271
|
+
# Newer Derby versions can use the TRUE literal, but older versions need an always false expression.
|
|
283
272
|
def literal_true
|
|
284
273
|
if db.svn_version >= 1040133
|
|
285
|
-
|
|
274
|
+
'TRUE'
|
|
286
275
|
else
|
|
287
|
-
|
|
276
|
+
'(1 = 1)'
|
|
288
277
|
end
|
|
289
278
|
end
|
|
290
279
|
|
|
291
|
-
# Derby supports multiple rows in INSERT.
|
|
280
|
+
# Derby supports multiple rows for VALUES in INSERT.
|
|
292
281
|
def multi_insert_sql_strategy
|
|
293
282
|
:values
|
|
294
283
|
end
|
|
295
284
|
|
|
285
|
+
# Emulate the char_length function with length
|
|
286
|
+
def native_function_name(emulated_function)
|
|
287
|
+
if emulated_function == :char_length
|
|
288
|
+
'length'
|
|
289
|
+
else
|
|
290
|
+
super
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
|
|
296
294
|
# Offset comes before limit in Derby
|
|
297
295
|
def select_limit_sql(sql)
|
|
298
296
|
if o = @opts[:offset]
|
|
299
|
-
sql << OFFSET
|
|
297
|
+
sql << " OFFSET "
|
|
300
298
|
literal_append(sql, o)
|
|
301
|
-
sql << ROWS
|
|
299
|
+
sql << " ROWS"
|
|
302
300
|
end
|
|
303
301
|
if l = @opts[:limit]
|
|
304
|
-
sql <<
|
|
302
|
+
sql << " FETCH FIRST "
|
|
305
303
|
literal_append(sql, l)
|
|
306
|
-
sql <<
|
|
304
|
+
sql << " ROWS ONLY"
|
|
307
305
|
end
|
|
308
306
|
end
|
|
309
307
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
Sequel::JDBC.load_driver('org.h2.Driver', :H2)
|
|
2
4
|
|
|
3
5
|
module Sequel
|
|
@@ -10,36 +12,35 @@ module Sequel
|
|
|
10
12
|
end
|
|
11
13
|
end
|
|
12
14
|
|
|
13
|
-
# Database and Dataset support for H2 databases accessed via JDBC.
|
|
14
15
|
module H2
|
|
15
|
-
# Instance methods for H2 Database objects accessed via JDBC.
|
|
16
16
|
module DatabaseMethods
|
|
17
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
18
|
-
PRIMARY_KEY_INDEX_RE = /\Aprimary_key/i.freeze
|
|
19
|
-
|
|
20
|
-
# Commit an existing prepared transaction with the given transaction
|
|
21
|
-
# identifier string.
|
|
22
17
|
def commit_prepared_transaction(transaction_id, opts=OPTS)
|
|
23
18
|
run("COMMIT TRANSACTION #{transaction_id}", opts)
|
|
24
19
|
end
|
|
25
20
|
|
|
26
|
-
# H2 uses the :h2 database type.
|
|
27
21
|
def database_type
|
|
28
22
|
:h2
|
|
29
23
|
end
|
|
30
24
|
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
def freeze
|
|
26
|
+
h2_version
|
|
27
|
+
super
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def h2_version
|
|
31
|
+
@h2_version ||= get(Sequel.function(:H2VERSION))
|
|
32
|
+
end
|
|
33
|
+
|
|
33
34
|
def rollback_prepared_transaction(transaction_id, opts=OPTS)
|
|
34
35
|
run("ROLLBACK TRANSACTION #{transaction_id}", opts)
|
|
35
36
|
end
|
|
36
37
|
|
|
37
|
-
# H2 uses an IDENTITY type
|
|
38
|
+
# H2 uses an IDENTITY type for primary keys
|
|
38
39
|
def serial_primary_key_options
|
|
39
40
|
{:primary_key => true, :type => :identity, :identity=>true}
|
|
40
41
|
end
|
|
41
42
|
|
|
42
|
-
# H2 supports CREATE TABLE IF NOT EXISTS syntax
|
|
43
|
+
# H2 supports CREATE TABLE IF NOT EXISTS syntax
|
|
43
44
|
def supports_create_table_if_not_exists?
|
|
44
45
|
true
|
|
45
46
|
end
|
|
@@ -56,6 +57,11 @@ module Sequel
|
|
|
56
57
|
|
|
57
58
|
private
|
|
58
59
|
|
|
60
|
+
# H2 does not allow adding primary key constraints to NULLable columns.
|
|
61
|
+
def can_add_primary_key_constraint_on_nullable_columns?
|
|
62
|
+
false
|
|
63
|
+
end
|
|
64
|
+
|
|
59
65
|
# If the :prepare option is given and we aren't in a savepoint,
|
|
60
66
|
# prepare the transaction for a two-phase commit.
|
|
61
67
|
def commit_transaction(conn, opts=OPTS)
|
|
@@ -66,17 +72,27 @@ module Sequel
|
|
|
66
72
|
end
|
|
67
73
|
end
|
|
68
74
|
|
|
69
|
-
# H2 needs to add a primary key column as a constraint
|
|
70
75
|
def alter_table_sql(table, op)
|
|
71
76
|
case op[:op]
|
|
72
77
|
when :add_column
|
|
73
78
|
if (pk = op.delete(:primary_key)) || (ref = op.delete(:table))
|
|
79
|
+
if pk
|
|
80
|
+
op[:null] = false
|
|
81
|
+
end
|
|
82
|
+
|
|
74
83
|
sqls = [super(table, op)]
|
|
75
|
-
|
|
84
|
+
|
|
85
|
+
if pk && (h2_version >= '1.4' || op[:type] != :identity)
|
|
86
|
+
# H2 needs to add a primary key column as a constraint in this case
|
|
87
|
+
sqls << "ALTER TABLE #{quote_schema_table(table)} ADD PRIMARY KEY (#{quote_identifier(op[:name])})"
|
|
88
|
+
end
|
|
89
|
+
|
|
76
90
|
if ref
|
|
77
91
|
op[:table] = ref
|
|
78
|
-
|
|
92
|
+
constraint_name = op[:foreign_key_constraint_name]
|
|
93
|
+
sqls << "ALTER TABLE #{quote_schema_table(table)} ADD#{" CONSTRAINT #{quote_identifier(constraint_name)}" if constraint_name} FOREIGN KEY (#{quote_identifier(op[:name])}) #{column_references_sql(op)}"
|
|
79
94
|
end
|
|
95
|
+
|
|
80
96
|
sqls
|
|
81
97
|
else
|
|
82
98
|
super(table, op)
|
|
@@ -93,7 +109,7 @@ module Sequel
|
|
|
93
109
|
op = cs.merge!(op)
|
|
94
110
|
end
|
|
95
111
|
end
|
|
96
|
-
sql = "ALTER TABLE #{quote_schema_table(table)} ALTER COLUMN #{quote_identifier(op[:name])} #{type_literal(op)}"
|
|
112
|
+
sql = "ALTER TABLE #{quote_schema_table(table)} ALTER COLUMN #{quote_identifier(op[:name])} #{type_literal(op)}".dup
|
|
97
113
|
column_definition_order.each{|m| send(:"column_definition_#{m}_sql", sql, op)}
|
|
98
114
|
sql
|
|
99
115
|
when :drop_constraint
|
|
@@ -128,14 +144,14 @@ module Sequel
|
|
|
128
144
|
def last_insert_id(conn, opts=OPTS)
|
|
129
145
|
statement(conn) do |stmt|
|
|
130
146
|
sql = 'SELECT IDENTITY();'
|
|
131
|
-
rs =
|
|
147
|
+
rs = log_connection_yield(sql, conn){stmt.executeQuery(sql)}
|
|
132
148
|
rs.next
|
|
133
149
|
rs.getLong(1)
|
|
134
150
|
end
|
|
135
151
|
end
|
|
136
152
|
|
|
137
153
|
def primary_key_index_re
|
|
138
|
-
|
|
154
|
+
/\Aprimary_key/i
|
|
139
155
|
end
|
|
140
156
|
|
|
141
157
|
# H2 does not support named column constraints.
|
|
@@ -143,26 +159,20 @@ module Sequel
|
|
|
143
159
|
false
|
|
144
160
|
end
|
|
145
161
|
|
|
146
|
-
# Use BIGINT IDENTITY for identity columns that use
|
|
147
|
-
|
|
148
|
-
def type_literal_generic_bignum(column)
|
|
162
|
+
# Use BIGINT IDENTITY for identity columns that use :Bignum type
|
|
163
|
+
def type_literal_generic_bignum_symbol(column)
|
|
149
164
|
column[:identity] ? 'BIGINT IDENTITY' : super
|
|
150
165
|
end
|
|
151
166
|
end
|
|
152
167
|
|
|
153
|
-
# Dataset class for H2 datasets accessed via JDBC.
|
|
154
168
|
class Dataset < JDBC::Dataset
|
|
155
|
-
APOS = Dataset::APOS
|
|
156
|
-
HSTAR = "H*".freeze
|
|
157
169
|
ILIKE_PLACEHOLDER = ["CAST(".freeze, " AS VARCHAR_IGNORECASE)".freeze].freeze
|
|
158
|
-
TIME_FORMAT = "'%H:%M:%S'".freeze
|
|
159
|
-
ONLY_OFFSET = " LIMIT -1 OFFSET ".freeze
|
|
160
170
|
|
|
161
171
|
# Emulate the case insensitive LIKE operator and the bitwise operators.
|
|
162
172
|
def complex_expression_sql_append(sql, op, args)
|
|
163
173
|
case op
|
|
164
174
|
when :ILIKE, :"NOT ILIKE"
|
|
165
|
-
super(sql, (op == :ILIKE ? :LIKE : :"NOT LIKE"), [SQL::PlaceholderLiteralString.new(ILIKE_PLACEHOLDER, [args
|
|
175
|
+
super(sql, (op == :ILIKE ? :LIKE : :"NOT LIKE"), [SQL::PlaceholderLiteralString.new(ILIKE_PLACEHOLDER, [args[0]]), args[1]])
|
|
166
176
|
when :&, :|, :^, :<<, :>>, :'B~'
|
|
167
177
|
complex_expression_emulate_append(sql, op, args)
|
|
168
178
|
else
|
|
@@ -199,12 +209,12 @@ module Sequel
|
|
|
199
209
|
|
|
200
210
|
# H2 expects hexadecimal strings for blob values
|
|
201
211
|
def literal_blob_append(sql, v)
|
|
202
|
-
sql <<
|
|
212
|
+
sql << "'" << v.unpack("H*").first << "'"
|
|
203
213
|
end
|
|
204
214
|
|
|
205
215
|
# H2 handles fractional seconds in timestamps, but not in times
|
|
206
216
|
def literal_sqltime(v)
|
|
207
|
-
v.strftime(
|
|
217
|
+
v.strftime("'%H:%M:%S'")
|
|
208
218
|
end
|
|
209
219
|
|
|
210
220
|
# H2 supports multiple rows in INSERT.
|
|
@@ -213,7 +223,7 @@ module Sequel
|
|
|
213
223
|
end
|
|
214
224
|
|
|
215
225
|
def select_only_offset_sql(sql)
|
|
216
|
-
sql <<
|
|
226
|
+
sql << " LIMIT -1 OFFSET "
|
|
217
227
|
literal_append(sql, @opts[:offset])
|
|
218
228
|
end
|
|
219
229
|
|