sequel 4.36.0 → 5.61.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 +548 -5749
- data/MIT-LICENSE +1 -1
- data/README.rdoc +265 -159
- data/bin/sequel +34 -12
- data/doc/advanced_associations.rdoc +228 -187
- data/doc/association_basics.rdoc +281 -291
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +86 -51
- data/doc/code_order.rdoc +25 -19
- 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/fork_safety.rdoc +84 -0
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +59 -51
- 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 +58 -68
- data/doc/opening_databases.rdoc +85 -95
- data/doc/postgresql.rdoc +263 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +189 -167
- 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.38.0.txt +28 -0
- data/doc/release_notes/5.39.0.txt +19 -0
- data/doc/release_notes/5.4.0.txt +80 -0
- data/doc/release_notes/5.40.0.txt +40 -0
- data/doc/release_notes/5.41.0.txt +25 -0
- data/doc/release_notes/5.42.0.txt +136 -0
- data/doc/release_notes/5.43.0.txt +98 -0
- data/doc/release_notes/5.44.0.txt +32 -0
- data/doc/release_notes/5.45.0.txt +34 -0
- data/doc/release_notes/5.46.0.txt +87 -0
- data/doc/release_notes/5.47.0.txt +59 -0
- data/doc/release_notes/5.48.0.txt +14 -0
- data/doc/release_notes/5.49.0.txt +59 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.50.0.txt +78 -0
- data/doc/release_notes/5.51.0.txt +47 -0
- data/doc/release_notes/5.52.0.txt +87 -0
- data/doc/release_notes/5.53.0.txt +23 -0
- data/doc/release_notes/5.54.0.txt +27 -0
- data/doc/release_notes/5.55.0.txt +21 -0
- data/doc/release_notes/5.56.0.txt +51 -0
- data/doc/release_notes/5.57.0.txt +23 -0
- data/doc/release_notes/5.58.0.txt +31 -0
- data/doc/release_notes/5.59.0.txt +73 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.60.0.txt +22 -0
- data/doc/release_notes/5.61.0.txt +43 -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 +95 -75
- data/doc/security.rdoc +109 -80
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +147 -122
- data/doc/testing.rdoc +43 -20
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +97 -18
- data/doc/validations.rdoc +52 -50
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel/adapters/ado/access.rb +15 -17
- data/lib/sequel/adapters/ado/mssql.rb +6 -15
- data/lib/sequel/adapters/ado.rb +150 -20
- data/lib/sequel/adapters/amalgalite.rb +11 -23
- data/lib/sequel/adapters/ibmdb.rb +47 -55
- data/lib/sequel/adapters/jdbc/db2.rb +29 -39
- data/lib/sequel/adapters/jdbc/derby.rb +58 -54
- data/lib/sequel/adapters/jdbc/h2.rb +93 -35
- data/lib/sequel/adapters/jdbc/hsqldb.rb +24 -31
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +3 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -20
- data/lib/sequel/adapters/jdbc/oracle.rb +22 -18
- data/lib/sequel/adapters/jdbc/postgresql.rb +69 -71
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +11 -23
- data/lib/sequel/adapters/jdbc/sqlite.rb +47 -11
- data/lib/sequel/adapters/jdbc/sqlserver.rb +34 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +22 -38
- data/lib/sequel/adapters/jdbc.rb +145 -130
- data/lib/sequel/adapters/mock.rb +100 -111
- data/lib/sequel/adapters/mysql.rb +114 -122
- data/lib/sequel/adapters/mysql2.rb +147 -63
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +8 -14
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/odbc.rb +20 -25
- data/lib/sequel/adapters/oracle.rb +50 -56
- data/lib/sequel/adapters/postgres.rb +305 -327
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +74 -78
- data/lib/sequel/adapters/shared/db2.rb +118 -71
- data/lib/sequel/adapters/shared/mssql.rb +301 -220
- data/lib/sequel/adapters/shared/mysql.rb +299 -217
- data/lib/sequel/adapters/shared/oracle.rb +226 -65
- data/lib/sequel/adapters/shared/postgres.rb +935 -395
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -126
- data/lib/sequel/adapters/shared/sqlite.rb +447 -173
- data/lib/sequel/adapters/sqlanywhere.rb +48 -35
- data/lib/sequel/adapters/sqlite.rb +156 -111
- data/lib/sequel/adapters/tinytds.rb +30 -38
- data/lib/sequel/adapters/utils/columns_limit_1.rb +22 -0
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +3 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +2 -2
- 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 +1 -4
- data/lib/sequel/adapters/utils/stored_procedures.rb +7 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +17 -89
- data/lib/sequel/connection_pool/sharded_single.rb +18 -15
- data/lib/sequel/connection_pool/sharded_threaded.rb +130 -111
- data/lib/sequel/connection_pool/single.rb +18 -13
- data/lib/sequel/connection_pool/threaded.rb +121 -120
- data/lib/sequel/connection_pool.rb +48 -29
- data/lib/sequel/core.rb +351 -301
- data/lib/sequel/database/connecting.rb +69 -57
- data/lib/sequel/database/dataset.rb +13 -5
- data/lib/sequel/database/dataset_defaults.rb +18 -102
- data/lib/sequel/database/features.rb +18 -4
- data/lib/sequel/database/logging.rb +12 -11
- data/lib/sequel/database/misc.rb +180 -122
- data/lib/sequel/database/query.rb +47 -27
- data/lib/sequel/database/schema_generator.rb +178 -84
- data/lib/sequel/database/schema_methods.rb +172 -97
- data/lib/sequel/database/transactions.rb +205 -44
- data/lib/sequel/database.rb +17 -2
- data/lib/sequel/dataset/actions.rb +339 -155
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +90 -35
- data/lib/sequel/dataset/graph.rb +80 -58
- data/lib/sequel/dataset/misc.rb +137 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +63 -25
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +530 -222
- data/lib/sequel/dataset/sql.rb +590 -368
- data/lib/sequel/dataset.rb +26 -16
- data/lib/sequel/deprecated.rb +12 -2
- data/lib/sequel/exceptions.rb +46 -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 +2 -5
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/async_thread_pool.rb +438 -0
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +8 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +4 -3
- data/lib/sequel/extensions/connection_expiration.rb +20 -10
- data/lib/sequel/extensions/connection_validator.rb +11 -10
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +62 -39
- data/lib/sequel/extensions/core_extensions.rb +42 -48
- data/lib/sequel/extensions/core_refinements.rb +80 -59
- data/lib/sequel/extensions/current_datetime_timestamp.rb +1 -4
- data/lib/sequel/extensions/date_arithmetic.rb +98 -39
- data/lib/sequel/extensions/date_parse_input_handler.rb +67 -0
- data/lib/sequel/extensions/datetime_parse_to_time.rb +41 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +21 -14
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +12 -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 +1 -34
- data/lib/sequel/extensions/graph_each.rb +4 -4
- 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 +13 -5
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/is_distinct_from.rb +141 -0
- data/lib/sequel/extensions/looser_typecasting.rb +17 -8
- data/lib/sequel/extensions/migration.rb +119 -78
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -82
- data/lib/sequel/extensions/null_dataset.rb +8 -8
- data/lib/sequel/extensions/pagination.rb +32 -29
- data/lib/sequel/extensions/pg_array.rb +221 -287
- data/lib/sequel/extensions/pg_array_ops.rb +17 -9
- data/lib/sequel/extensions/pg_enum.rb +63 -23
- data/lib/sequel/extensions/pg_extended_date_support.rb +241 -0
- data/lib/sequel/extensions/pg_hstore.rb +45 -54
- data/lib/sequel/extensions/pg_hstore_ops.rb +58 -6
- data/lib/sequel/extensions/pg_inet.rb +31 -12
- data/lib/sequel/extensions/pg_inet_ops.rb +2 -2
- data/lib/sequel/extensions/pg_interval.rb +56 -29
- data/lib/sequel/extensions/pg_json.rb +417 -140
- data/lib/sequel/extensions/pg_json_ops.rb +270 -18
- data/lib/sequel/extensions/pg_loose_count.rb +4 -2
- data/lib/sequel/extensions/pg_multirange.rb +372 -0
- data/lib/sequel/extensions/pg_range.rb +131 -191
- data/lib/sequel/extensions/pg_range_ops.rb +42 -13
- data/lib/sequel/extensions/pg_row.rb +48 -81
- data/lib/sequel/extensions/pg_row_ops.rb +33 -14
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/query.rb +9 -7
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +60 -0
- data/lib/sequel/extensions/schema_caching.rb +10 -1
- data/lib/sequel/extensions/schema_dumper.rb +71 -48
- data/lib/sequel/extensions/select_remove.rb +4 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +51 -27
- data/lib/sequel/extensions/split_array_nil.rb +4 -4
- data/lib/sequel/extensions/sql_comments.rb +119 -7
- data/lib/sequel/extensions/sql_expr.rb +2 -1
- data/lib/sequel/extensions/sql_log_normalizer.rb +108 -0
- data/lib/sequel/extensions/sqlite_json_ops.rb +255 -0
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/string_date_time.rb +19 -23
- data/lib/sequel/extensions/symbol_aref.rb +55 -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/to_dot.rb +10 -4
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model/associations.rb +1006 -284
- data/lib/sequel/model/base.rb +560 -805
- data/lib/sequel/model/dataset_module.rb +11 -10
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +10 -3
- data/lib/sequel/model/exceptions.rb +8 -10
- data/lib/sequel/model/inflections.rb +7 -20
- data/lib/sequel/model/plugins.rb +114 -0
- data/lib/sequel/model.rb +32 -82
- data/lib/sequel/plugins/active_model.rb +30 -14
- data/lib/sequel/plugins/after_initialize.rb +1 -1
- data/lib/sequel/plugins/association_dependencies.rb +25 -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 +147 -70
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/async_thread_pool.rb +39 -0
- data/lib/sequel/plugins/auto_restrict_eager_graph.rb +62 -0
- data/lib/sequel/plugins/auto_validations.rb +95 -28
- data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
- data/lib/sequel/plugins/before_after_save.rb +0 -42
- data/lib/sequel/plugins/blacklist_security.rb +21 -12
- data/lib/sequel/plugins/boolean_readers.rb +5 -5
- data/lib/sequel/plugins/boolean_subsets.rb +13 -8
- data/lib/sequel/plugins/caching.rb +25 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +179 -100
- data/lib/sequel/plugins/column_conflicts.rb +16 -3
- data/lib/sequel/plugins/column_encryption.rb +728 -0
- data/lib/sequel/plugins/column_select.rb +7 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +42 -26
- data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
- data/lib/sequel/plugins/constraint_validations.rb +20 -14
- data/lib/sequel/plugins/csv_serializer.rb +56 -35
- data/lib/sequel/plugins/dataset_associations.rb +40 -17
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +65 -10
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/dirty.rb +62 -24
- data/lib/sequel/plugins/eager_each.rb +3 -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/enum.rb +124 -0
- data/lib/sequel/plugins/error_splitter.rb +17 -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 +7 -12
- data/lib/sequel/plugins/hook_class_methods.rb +37 -54
- data/lib/sequel/plugins/input_transformer.rb +18 -10
- data/lib/sequel/plugins/insert_conflict.rb +76 -0
- data/lib/sequel/plugins/insert_returning_select.rb +2 -2
- data/lib/sequel/plugins/instance_filters.rb +10 -8
- data/lib/sequel/plugins/instance_hooks.rb +34 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +22 -13
- data/lib/sequel/plugins/json_serializer.rb +124 -64
- data/lib/sequel/plugins/lazy_attributes.rb +21 -14
- data/lib/sequel/plugins/list.rb +35 -21
- data/lib/sequel/plugins/many_through_many.rb +134 -21
- data/lib/sequel/plugins/modification_detection.rb +15 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +6 -5
- data/lib/sequel/plugins/nested_attributes.rb +61 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +103 -53
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +350 -0
- data/lib/sequel/plugins/pg_row.rb +5 -51
- data/lib/sequel/plugins/prepared_statements.rb +60 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +9 -4
- data/lib/sequel/plugins/rcte_tree.rb +68 -82
- data/lib/sequel/plugins/require_valid_schema.rb +67 -0
- data/lib/sequel/plugins/serialization.rb +43 -46
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -2
- data/lib/sequel/plugins/sharding.rb +15 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +67 -28
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +11 -6
- data/lib/sequel/plugins/sql_comments.rb +189 -0
- data/lib/sequel/plugins/static_cache.rb +77 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +43 -10
- data/lib/sequel/plugins/subset_conditions.rb +15 -5
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +96 -12
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +20 -8
- data/lib/sequel/plugins/touch.rb +19 -8
- data/lib/sequel/plugins/tree.rb +62 -32
- data/lib/sequel/plugins/typecast_on_load.rb +12 -4
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/unused_associations.rb +521 -0
- data/lib/sequel/plugins/update_or_create.rb +4 -4
- data/lib/sequel/plugins/update_primary_key.rb +1 -1
- data/lib/sequel/plugins/update_refresh.rb +26 -15
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validate_associated.rb +18 -0
- data/lib/sequel/plugins/validation_class_methods.rb +38 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +57 -41
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +30 -31
- data/lib/sequel/sql.rb +471 -331
- data/lib/sequel/timezones.rb +78 -47
- data/lib/sequel/version.rb +7 -2
- data/lib/sequel.rb +1 -1
- metadata +217 -521
- data/Rakefile +0 -164
- data/doc/active_record.rdoc +0 -928
- 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.27.0.txt +0 -78
- data/doc/release_notes/4.28.0.txt +0 -57
- data/doc/release_notes/4.29.0.txt +0 -41
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.30.0.txt +0 -37
- data/doc/release_notes/4.31.0.txt +0 -57
- data/doc/release_notes/4.32.0.txt +0 -132
- data/doc/release_notes/4.33.0.txt +0 -88
- data/doc/release_notes/4.34.0.txt +0 -86
- data/doc/release_notes/4.35.0.txt +0 -130
- data/doc/release_notes/4.36.0.txt +0 -116
- 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 -144
- data/lib/sequel/adapters/do/mysql.rb +0 -66
- data/lib/sequel/adapters/do/postgres.rb +0 -44
- data/lib/sequel/adapters/do/sqlite3.rb +0 -42
- data/lib/sequel/adapters/do.rb +0 -158
- data/lib/sequel/adapters/jdbc/as400.rb +0 -84
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -64
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -36
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -33
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -33
- data/lib/sequel/adapters/odbc/progress.rb +0 -10
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -247
- data/lib/sequel/adapters/shared/informix.rb +0 -54
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -152
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift/mysql.rb +0 -49
- data/lib/sequel/adapters/swift/postgres.rb +0 -47
- data/lib/sequel/adapters/swift/sqlite.rb +0 -49
- data/lib/sequel/adapters/swift.rb +0 -160
- data/lib/sequel/adapters/utils/pg_types.rb +0 -70
- data/lib/sequel/dataset/mutation.rb +0 -111
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -5
- data/lib/sequel/extensions/filter_having.rb +0 -63
- data/lib/sequel/extensions/hash_aliases.rb +0 -49
- data/lib/sequel/extensions/meta_def.rb +0 -35
- data/lib/sequel/extensions/query_literals.rb +0 -84
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -24
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -122
- data/lib/sequel/extensions/set_overrides.rb +0 -76
- data/lib/sequel/no_core_ext.rb +0 -3
- data/lib/sequel/plugins/association_autoreloading.rb +0 -9
- data/lib/sequel/plugins/identifier_columns.rb +0 -47
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -9
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -81
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -119
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -61
- data/lib/sequel/plugins/schema.rb +0 -82
- data/lib/sequel/plugins/scissors.rb +0 -35
- data/spec/adapter_spec.rb +0 -4
- 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 -733
- data/spec/adapters/mysql_spec.rb +0 -1319
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3790
- data/spec/adapters/spec_helper.rb +0 -49
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -688
- data/spec/bin_spec.rb +0 -258
- data/spec/core/connection_pool_spec.rb +0 -1045
- data/spec/core/database_spec.rb +0 -2636
- data/spec/core/dataset_spec.rb +0 -5175
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1247
- data/spec/core/mock_adapter_spec.rb +0 -464
- 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 -203
- data/spec/core/schema_spec.rb +0 -1676
- 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/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -85
- 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 -405
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/before_after_save_spec.rb +0 -40
- 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/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -444
- 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_expiration_spec.rb +0 -121
- data/spec/extensions/connection_validator_spec.rb +0 -127
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -288
- data/spec/extensions/constraint_validations_spec.rb +0 -389
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -180
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -343
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -167
- data/spec/extensions/defaults_setter_spec.rb +0 -102
- data/spec/extensions/delay_add_association_spec.rb +0 -74
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -110
- data/spec/extensions/eager_each_spec.rb +0 -66
- 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 -119
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/identifier_columns_spec.rb +0 -17
- 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 -304
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -278
- 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 -728
- 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/no_auto_literal_strings_spec.rb +0 -65
- 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 -390
- 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 -275
- 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 -473
- 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 -814
- 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/server_logging_spec.rb +0 -45
- 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_comments_spec.rb +0 -27
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- data/spec/extensions/string_agg_spec.rb +0 -85
- 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/subset_conditions_spec.rb +0 -38
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -136
- 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/uuid_spec.rb +0 -106
- 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 -554
- 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/double_migration/001_create_sessions.rb +0 -9
- data/spec/files/double_migration/002_create_nodes.rb +0 -19
- data/spec/files/double_migration/003_3_create_users.rb +0 -4
- 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/empty_migration/001_create_sessions.rb +0 -9
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_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/reversible_migrations/006_reversible.rb +0 -10
- data/spec/files/reversible_migrations/007_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 -2506
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1858
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -230
- data/spec/integration/plugin_test.rb +0 -2297
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -815
- data/spec/integration/spec_helper.rb +0 -56
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -406
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -565
- data/spec/model/associations_spec.rb +0 -4589
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -150
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2197
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -1097
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2162
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
|
@@ -1,59 +1,45 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
3
|
Sequel::JDBC.load_driver('com.ibm.db2.jcc.DB2Driver')
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
require_relative '../shared/db2'
|
|
5
|
+
require_relative 'transactions'
|
|
6
6
|
|
|
7
7
|
module Sequel
|
|
8
8
|
module JDBC
|
|
9
9
|
Sequel.synchronize do
|
|
10
10
|
DATABASE_SETUP[:db2] = proc do |db|
|
|
11
|
-
db.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
16
|
+
|
|
17
|
+
include Sequel::JDBC::DB2::DatabaseMethods
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
23
26
|
end
|
|
27
|
+
db.extend_datasets Sequel::DB2::DatasetMethods
|
|
28
|
+
com.ibm.db2.jcc.DB2Driver
|
|
24
29
|
end
|
|
25
30
|
end
|
|
26
31
|
|
|
27
|
-
class Database
|
|
28
|
-
# Alias the generic JDBC versions so they can be called directly later
|
|
29
|
-
alias jdbc_schema_parse_table schema_parse_table
|
|
30
|
-
alias jdbc_tables tables
|
|
31
|
-
alias jdbc_views views
|
|
32
|
-
alias jdbc_indexes indexes
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Database and Dataset instance methods for DB2 specific
|
|
36
|
-
# support via JDBC.
|
|
37
32
|
module DB2
|
|
38
|
-
# Database instance methods for DB2 databases accessed via JDBC.
|
|
39
33
|
module DatabaseMethods
|
|
40
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
41
|
-
PRIMARY_KEY_INDEX_RE = /\Asql\d+\z/i.freeze
|
|
42
|
-
|
|
43
34
|
include Sequel::DB2::DatabaseMethods
|
|
44
35
|
include Sequel::JDBC::Transactions
|
|
45
|
-
IDENTITY_VAL_LOCAL = "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1".freeze
|
|
46
|
-
|
|
47
|
-
%w'schema_parse_table tables views indexes'.each do |s|
|
|
48
|
-
class_eval("def #{s}(*a) jdbc_#{s}(*a) end", __FILE__, __LINE__)
|
|
49
|
-
end
|
|
50
36
|
|
|
51
37
|
private
|
|
52
38
|
|
|
53
39
|
def set_ps_arg(cps, arg, i)
|
|
54
40
|
case arg
|
|
55
41
|
when Sequel::SQL::Blob
|
|
56
|
-
if
|
|
42
|
+
if use_clob_as_blob
|
|
57
43
|
cps.setString(i, arg)
|
|
58
44
|
else
|
|
59
45
|
super
|
|
@@ -65,7 +51,7 @@ module Sequel
|
|
|
65
51
|
|
|
66
52
|
def last_insert_id(conn, opts=OPTS)
|
|
67
53
|
statement(conn) do |stmt|
|
|
68
|
-
sql = IDENTITY_VAL_LOCAL
|
|
54
|
+
sql = "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1"
|
|
69
55
|
rs = log_connection_yield(sql, conn){stmt.executeQuery(sql)}
|
|
70
56
|
rs.next
|
|
71
57
|
rs.getLong(1)
|
|
@@ -74,19 +60,23 @@ module Sequel
|
|
|
74
60
|
|
|
75
61
|
# Primary key indexes appear to be named sqlNNNN on DB2
|
|
76
62
|
def primary_key_index_re
|
|
77
|
-
|
|
63
|
+
/\Asql\d+\z/i
|
|
78
64
|
end
|
|
79
65
|
|
|
80
66
|
def setup_type_convertor_map
|
|
81
67
|
super
|
|
82
68
|
map = @type_convertor_map
|
|
83
69
|
types = Java::JavaSQL::Types
|
|
84
|
-
map[types::NCLOB] = map[types::CLOB] =
|
|
70
|
+
map[types::NCLOB] = map[types::CLOB] = method(:convert_clob)
|
|
85
71
|
end
|
|
86
|
-
end
|
|
87
72
|
|
|
88
|
-
|
|
89
|
-
|
|
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
|
|
90
80
|
end
|
|
91
81
|
end
|
|
92
82
|
end
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# frozen-string-literal: true
|
|
2
2
|
|
|
3
3
|
Sequel::JDBC.load_driver('org.apache.derby.jdbc.EmbeddedDriver', :Derby)
|
|
4
|
-
|
|
4
|
+
require_relative 'transactions'
|
|
5
|
+
require_relative '../utils/columns_limit_1'
|
|
5
6
|
|
|
6
7
|
module Sequel
|
|
7
8
|
module JDBC
|
|
@@ -13,13 +14,8 @@ module Sequel
|
|
|
13
14
|
end
|
|
14
15
|
end
|
|
15
16
|
|
|
16
|
-
# Database and Dataset support for Derby databases accessed via JDBC.
|
|
17
17
|
module Derby
|
|
18
|
-
# Instance methods for Derby Database objects accessed via JDBC.
|
|
19
18
|
module DatabaseMethods
|
|
20
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
21
|
-
PRIMARY_KEY_INDEX_RE = /\Asql\d+\z/i.freeze
|
|
22
|
-
|
|
23
19
|
include ::Sequel::JDBC::Transactions
|
|
24
20
|
|
|
25
21
|
# Derby doesn't support casting integer to varchar, only integer to char,
|
|
@@ -30,14 +26,18 @@ module Sequel
|
|
|
30
26
|
(type == String) ? 'CHAR(254)' : super
|
|
31
27
|
end
|
|
32
28
|
|
|
33
|
-
# Derby uses the :derby database type.
|
|
34
29
|
def database_type
|
|
35
30
|
:derby
|
|
36
31
|
end
|
|
37
32
|
|
|
33
|
+
def freeze
|
|
34
|
+
svn_version
|
|
35
|
+
super
|
|
36
|
+
end
|
|
37
|
+
|
|
38
38
|
# Derby uses an IDENTITY sequence for autoincrementing columns.
|
|
39
39
|
def serial_primary_key_options
|
|
40
|
-
{:primary_key => true, :type =>
|
|
40
|
+
{:primary_key => true, :type => Integer, :identity=>true, :start_with=>1}
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
# The SVN version of the database.
|
|
@@ -49,7 +49,7 @@ module Sequel
|
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
# Derby supports
|
|
52
|
+
# Derby supports transactional DDL statements.
|
|
53
53
|
def supports_transactional_ddl?
|
|
54
54
|
true
|
|
55
55
|
end
|
|
@@ -62,7 +62,6 @@ module Sequel
|
|
|
62
62
|
ds.first
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
# Derby-specific syntax for renaming columns and changing a columns type/nullity.
|
|
66
65
|
def alter_table_sql(table, op)
|
|
67
66
|
case op[:op]
|
|
68
67
|
when :rename_column
|
|
@@ -82,9 +81,15 @@ module Sequel
|
|
|
82
81
|
end
|
|
83
82
|
end
|
|
84
83
|
|
|
84
|
+
# Derby does not allow adding primary key constraints to NULLable columns.
|
|
85
|
+
def can_add_primary_key_constraint_on_nullable_columns?
|
|
86
|
+
false
|
|
87
|
+
end
|
|
88
|
+
|
|
85
89
|
# Derby doesn't allow specifying NULL for columns, only NOT NULL.
|
|
86
90
|
def column_definition_null_sql(sql, column)
|
|
87
|
-
|
|
91
|
+
null = column.fetch(:null, column[:allow_null])
|
|
92
|
+
sql << " NOT NULL" if null == false || (null.nil? && column[:primary_key])
|
|
88
93
|
end
|
|
89
94
|
|
|
90
95
|
# Add NOT LOGGED for temporary tables to improve performance.
|
|
@@ -149,7 +154,7 @@ module Sequel
|
|
|
149
154
|
|
|
150
155
|
# Primary key indexes appear to be named sqlNNNN on Derby
|
|
151
156
|
def primary_key_index_re
|
|
152
|
-
|
|
157
|
+
/\Asql\d+\z/i
|
|
153
158
|
end
|
|
154
159
|
|
|
155
160
|
# If an :identity option is present in the column, add the necessary IDENTITY SQL.
|
|
@@ -172,35 +177,16 @@ module Sequel
|
|
|
172
177
|
true
|
|
173
178
|
end
|
|
174
179
|
|
|
175
|
-
# The SQL query to issue to check if a connection is valid.
|
|
176
180
|
def valid_connection_sql
|
|
177
181
|
@valid_connection_sql ||= select(1).sql
|
|
178
182
|
end
|
|
179
183
|
end
|
|
180
184
|
|
|
181
|
-
# Dataset class for Derby datasets accessed via JDBC.
|
|
182
185
|
class Dataset < JDBC::Dataset
|
|
183
|
-
|
|
184
|
-
PAREN_OPEN = Dataset::PAREN_OPEN
|
|
185
|
-
OFFSET = Dataset::OFFSET
|
|
186
|
-
CAST_STRING_OPEN = "RTRIM(".freeze
|
|
187
|
-
BLOB_OPEN = "CAST(X'".freeze
|
|
188
|
-
BLOB_CLOSE = "' AS BLOB)".freeze
|
|
189
|
-
HSTAR = "H*".freeze
|
|
190
|
-
TIME_FORMAT = "'%H:%M:%S'".freeze
|
|
191
|
-
DEFAULT_FROM = " FROM sysibm.sysdummy1".freeze
|
|
192
|
-
ROWS = " ROWS".freeze
|
|
193
|
-
FETCH_FIRST = " FETCH FIRST ".freeze
|
|
194
|
-
ROWS_ONLY = " ROWS ONLY".freeze
|
|
195
|
-
BOOL_TRUE_OLD = '(1 = 1)'.freeze
|
|
196
|
-
BOOL_FALSE_OLD = '(1 = 0)'.freeze
|
|
197
|
-
BOOL_TRUE = 'TRUE'.freeze
|
|
198
|
-
BOOL_FALSE = 'FALSE'.freeze
|
|
199
|
-
EMULATED_FUNCTION_MAP = {:char_length=>'length'.freeze}
|
|
186
|
+
include ::Sequel::Dataset::ColumnsLimit1
|
|
200
187
|
|
|
201
188
|
# Derby doesn't support an expression between CASE and WHEN,
|
|
202
|
-
# so remove
|
|
203
|
-
# conditions.
|
|
189
|
+
# so remove conditions.
|
|
204
190
|
def case_expression_sql_append(sql, ce)
|
|
205
191
|
super(sql, ce.with_merged_expression)
|
|
206
192
|
end
|
|
@@ -210,9 +196,9 @@ module Sequel
|
|
|
210
196
|
# a string and the ending whitespace is important.
|
|
211
197
|
def cast_sql_append(sql, expr, type)
|
|
212
198
|
if type == String
|
|
213
|
-
sql <<
|
|
199
|
+
sql << "RTRIM("
|
|
214
200
|
super
|
|
215
|
-
sql <<
|
|
201
|
+
sql << ')'
|
|
216
202
|
else
|
|
217
203
|
super
|
|
218
204
|
end
|
|
@@ -224,10 +210,16 @@ module Sequel
|
|
|
224
210
|
complex_expression_emulate_append(sql, op, args)
|
|
225
211
|
when :&, :|, :^, :<<, :>>
|
|
226
212
|
raise Error, "Derby doesn't support the #{op} operator"
|
|
213
|
+
when :**
|
|
214
|
+
sql << 'exp('
|
|
215
|
+
literal_append(sql, args[1])
|
|
216
|
+
sql << ' * ln('
|
|
217
|
+
literal_append(sql, args[0])
|
|
218
|
+
sql << "))"
|
|
227
219
|
when :extract
|
|
228
|
-
sql << args
|
|
229
|
-
literal_append(sql, args
|
|
230
|
-
sql <<
|
|
220
|
+
sql << args[0].to_s << '('
|
|
221
|
+
literal_append(sql, args[1])
|
|
222
|
+
sql << ')'
|
|
231
223
|
else
|
|
232
224
|
super
|
|
233
225
|
end
|
|
@@ -243,6 +235,11 @@ module Sequel
|
|
|
243
235
|
false
|
|
244
236
|
end
|
|
245
237
|
|
|
238
|
+
# Derby 10.11+ supports MERGE.
|
|
239
|
+
def supports_merge?
|
|
240
|
+
db.svn_version >= 1616546
|
|
241
|
+
end
|
|
242
|
+
|
|
246
243
|
# Derby does not support IN/NOT IN with multiple columns
|
|
247
244
|
def supports_multiple_column_in?
|
|
248
245
|
false
|
|
@@ -251,12 +248,12 @@ module Sequel
|
|
|
251
248
|
private
|
|
252
249
|
|
|
253
250
|
def empty_from_sql
|
|
254
|
-
|
|
251
|
+
" FROM sysibm.sysdummy1"
|
|
255
252
|
end
|
|
256
253
|
|
|
257
254
|
# Derby needs a hex string casted to BLOB for blobs.
|
|
258
255
|
def literal_blob_append(sql, v)
|
|
259
|
-
sql <<
|
|
256
|
+
sql << "CAST(X'" << v.unpack("H*").first << "' AS BLOB)"
|
|
260
257
|
end
|
|
261
258
|
|
|
262
259
|
# Derby needs the standard workaround to insert all default values into
|
|
@@ -265,47 +262,54 @@ module Sequel
|
|
|
265
262
|
false
|
|
266
263
|
end
|
|
267
264
|
|
|
268
|
-
# Derby
|
|
269
|
-
# Newer versions can use the FALSE literal, but the latest gem version cannot.
|
|
265
|
+
# Newer Derby versions can use the FALSE literal, but older versions need an always false expression.
|
|
270
266
|
def literal_false
|
|
271
267
|
if db.svn_version >= 1040133
|
|
272
|
-
|
|
268
|
+
'FALSE'
|
|
273
269
|
else
|
|
274
|
-
|
|
270
|
+
'(1 = 0)'
|
|
275
271
|
end
|
|
276
272
|
end
|
|
277
273
|
|
|
278
274
|
# Derby handles fractional seconds in timestamps, but not in times
|
|
279
275
|
def literal_sqltime(v)
|
|
280
|
-
v.strftime(
|
|
276
|
+
v.strftime("'%H:%M:%S'")
|
|
281
277
|
end
|
|
282
278
|
|
|
283
|
-
# Derby
|
|
284
|
-
# Newer versions can use the TRUE literal, but the latest gem version cannot.
|
|
279
|
+
# Newer Derby versions can use the TRUE literal, but older versions need an always false expression.
|
|
285
280
|
def literal_true
|
|
286
281
|
if db.svn_version >= 1040133
|
|
287
|
-
|
|
282
|
+
'TRUE'
|
|
288
283
|
else
|
|
289
|
-
|
|
284
|
+
'(1 = 1)'
|
|
290
285
|
end
|
|
291
286
|
end
|
|
292
287
|
|
|
293
|
-
# Derby supports multiple rows in INSERT.
|
|
288
|
+
# Derby supports multiple rows for VALUES in INSERT.
|
|
294
289
|
def multi_insert_sql_strategy
|
|
295
290
|
:values
|
|
296
291
|
end
|
|
297
292
|
|
|
293
|
+
# Emulate the char_length function with length
|
|
294
|
+
def native_function_name(emulated_function)
|
|
295
|
+
if emulated_function == :char_length
|
|
296
|
+
'length'
|
|
297
|
+
else
|
|
298
|
+
super
|
|
299
|
+
end
|
|
300
|
+
end
|
|
301
|
+
|
|
298
302
|
# Offset comes before limit in Derby
|
|
299
303
|
def select_limit_sql(sql)
|
|
300
304
|
if o = @opts[:offset]
|
|
301
|
-
sql << OFFSET
|
|
305
|
+
sql << " OFFSET "
|
|
302
306
|
literal_append(sql, o)
|
|
303
|
-
sql << ROWS
|
|
307
|
+
sql << " ROWS"
|
|
304
308
|
end
|
|
305
309
|
if l = @opts[:limit]
|
|
306
|
-
sql <<
|
|
310
|
+
sql << " FETCH FIRST "
|
|
307
311
|
literal_append(sql, l)
|
|
308
|
-
sql <<
|
|
312
|
+
sql << " ROWS ONLY"
|
|
309
313
|
end
|
|
310
314
|
end
|
|
311
315
|
end
|
|
@@ -12,36 +12,36 @@ module Sequel
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
# Database and Dataset support for H2 databases accessed via JDBC.
|
|
16
15
|
module H2
|
|
17
|
-
# Instance methods for H2 Database objects accessed via JDBC.
|
|
18
16
|
module DatabaseMethods
|
|
19
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
20
|
-
PRIMARY_KEY_INDEX_RE = /\Aprimary_key/i.freeze
|
|
21
|
-
|
|
22
|
-
# Commit an existing prepared transaction with the given transaction
|
|
23
|
-
# identifier string.
|
|
24
17
|
def commit_prepared_transaction(transaction_id, opts=OPTS)
|
|
25
18
|
run("COMMIT TRANSACTION #{transaction_id}", opts)
|
|
26
19
|
end
|
|
27
20
|
|
|
28
|
-
# H2 uses the :h2 database type.
|
|
29
21
|
def database_type
|
|
30
22
|
:h2
|
|
31
23
|
end
|
|
32
24
|
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
def freeze
|
|
26
|
+
h2_version
|
|
27
|
+
version2?
|
|
28
|
+
super
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def h2_version
|
|
32
|
+
@h2_version ||= get(Sequel.function(:H2VERSION))
|
|
33
|
+
end
|
|
34
|
+
|
|
35
35
|
def rollback_prepared_transaction(transaction_id, opts=OPTS)
|
|
36
36
|
run("ROLLBACK TRANSACTION #{transaction_id}", opts)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
# H2 uses an IDENTITY type
|
|
39
|
+
# H2 uses an IDENTITY type for primary keys
|
|
40
40
|
def serial_primary_key_options
|
|
41
41
|
{:primary_key => true, :type => :identity, :identity=>true}
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
# H2 supports CREATE TABLE IF NOT EXISTS syntax
|
|
44
|
+
# H2 supports CREATE TABLE IF NOT EXISTS syntax
|
|
45
45
|
def supports_create_table_if_not_exists?
|
|
46
46
|
true
|
|
47
47
|
end
|
|
@@ -58,6 +58,11 @@ module Sequel
|
|
|
58
58
|
|
|
59
59
|
private
|
|
60
60
|
|
|
61
|
+
# H2 does not allow adding primary key constraints to NULLable columns.
|
|
62
|
+
def can_add_primary_key_constraint_on_nullable_columns?
|
|
63
|
+
false
|
|
64
|
+
end
|
|
65
|
+
|
|
61
66
|
# If the :prepare option is given and we aren't in a savepoint,
|
|
62
67
|
# prepare the transaction for a two-phase commit.
|
|
63
68
|
def commit_transaction(conn, opts=OPTS)
|
|
@@ -68,17 +73,27 @@ module Sequel
|
|
|
68
73
|
end
|
|
69
74
|
end
|
|
70
75
|
|
|
71
|
-
# H2 needs to add a primary key column as a constraint
|
|
72
76
|
def alter_table_sql(table, op)
|
|
73
77
|
case op[:op]
|
|
74
78
|
when :add_column
|
|
75
79
|
if (pk = op.delete(:primary_key)) || (ref = op.delete(:table))
|
|
80
|
+
if pk
|
|
81
|
+
op[:null] = false
|
|
82
|
+
end
|
|
83
|
+
|
|
76
84
|
sqls = [super(table, op)]
|
|
77
|
-
|
|
85
|
+
|
|
86
|
+
if pk && (h2_version >= '1.4' || op[:type] != :identity)
|
|
87
|
+
# H2 needs to add a primary key column as a constraint in this case
|
|
88
|
+
sqls << "ALTER TABLE #{quote_schema_table(table)} ADD PRIMARY KEY (#{quote_identifier(op[:name])})"
|
|
89
|
+
end
|
|
90
|
+
|
|
78
91
|
if ref
|
|
79
92
|
op[:table] = ref
|
|
80
|
-
|
|
93
|
+
constraint_name = op[:foreign_key_constraint_name]
|
|
94
|
+
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)}"
|
|
81
95
|
end
|
|
96
|
+
|
|
82
97
|
sqls
|
|
83
98
|
else
|
|
84
99
|
super(table, op)
|
|
@@ -126,18 +141,41 @@ module Sequel
|
|
|
126
141
|
DATABASE_ERROR_REGEXPS
|
|
127
142
|
end
|
|
128
143
|
|
|
129
|
-
|
|
144
|
+
def execute_statement_insert(stmt, sql)
|
|
145
|
+
stmt.executeUpdate(sql, JavaSQL::Statement::RETURN_GENERATED_KEYS)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def prepare_jdbc_statement(conn, sql, opts)
|
|
149
|
+
opts[:type] == :insert ? conn.prepareStatement(sql, JavaSQL::Statement::RETURN_GENERATED_KEYS) : super
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Get the last inserted id using getGeneratedKeys, scope_identity, or identity.
|
|
130
153
|
def last_insert_id(conn, opts=OPTS)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
154
|
+
if stmt = opts[:stmt]
|
|
155
|
+
rs = stmt.getGeneratedKeys
|
|
156
|
+
begin
|
|
157
|
+
if rs.next
|
|
158
|
+
begin
|
|
159
|
+
rs.getLong(1)
|
|
160
|
+
rescue
|
|
161
|
+
rs.getObject(1) rescue nil
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
ensure
|
|
165
|
+
rs.close
|
|
166
|
+
end
|
|
167
|
+
elsif !version2?
|
|
168
|
+
statement(conn) do |stmt|
|
|
169
|
+
sql = 'SELECT IDENTITY()'
|
|
170
|
+
rs = log_connection_yield(sql, conn){stmt.executeQuery(sql)}
|
|
171
|
+
rs.next
|
|
172
|
+
rs.getLong(1)
|
|
173
|
+
end
|
|
136
174
|
end
|
|
137
175
|
end
|
|
138
176
|
|
|
139
177
|
def primary_key_index_re
|
|
140
|
-
|
|
178
|
+
/\Aprimary_key/i
|
|
141
179
|
end
|
|
142
180
|
|
|
143
181
|
# H2 does not support named column constraints.
|
|
@@ -145,26 +183,25 @@ module Sequel
|
|
|
145
183
|
false
|
|
146
184
|
end
|
|
147
185
|
|
|
148
|
-
# Use BIGINT IDENTITY for identity columns that use
|
|
149
|
-
# the case where primary_key :column, :type=>:Bignum is used.
|
|
186
|
+
# Use BIGINT IDENTITY for identity columns that use :Bignum type
|
|
150
187
|
def type_literal_generic_bignum_symbol(column)
|
|
151
|
-
column[:identity] ? 'BIGINT
|
|
188
|
+
column[:identity] ? 'BIGINT AUTO_INCREMENT' : super
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def version2?
|
|
192
|
+
return @version2 if defined?(@version2)
|
|
193
|
+
@version2 = h2_version.to_i >= 2
|
|
152
194
|
end
|
|
153
195
|
end
|
|
154
196
|
|
|
155
|
-
# Dataset class for H2 datasets accessed via JDBC.
|
|
156
197
|
class Dataset < JDBC::Dataset
|
|
157
|
-
APOS = Dataset::APOS
|
|
158
|
-
HSTAR = "H*".freeze
|
|
159
198
|
ILIKE_PLACEHOLDER = ["CAST(".freeze, " AS VARCHAR_IGNORECASE)".freeze].freeze
|
|
160
|
-
TIME_FORMAT = "'%H:%M:%S'".freeze
|
|
161
|
-
ONLY_OFFSET = " LIMIT -1 OFFSET ".freeze
|
|
162
199
|
|
|
163
200
|
# Emulate the case insensitive LIKE operator and the bitwise operators.
|
|
164
201
|
def complex_expression_sql_append(sql, op, args)
|
|
165
202
|
case op
|
|
166
203
|
when :ILIKE, :"NOT ILIKE"
|
|
167
|
-
super(sql, (op == :ILIKE ? :LIKE : :"NOT LIKE"), [SQL::PlaceholderLiteralString.new(ILIKE_PLACEHOLDER, [args
|
|
204
|
+
super(sql, (op == :ILIKE ? :LIKE : :"NOT LIKE"), [SQL::PlaceholderLiteralString.new(ILIKE_PLACEHOLDER, [args[0]]), args[1]])
|
|
168
205
|
when :&, :|, :^, :<<, :>>, :'B~'
|
|
169
206
|
complex_expression_emulate_append(sql, op, args)
|
|
170
207
|
else
|
|
@@ -192,6 +229,11 @@ module Sequel
|
|
|
192
229
|
false
|
|
193
230
|
end
|
|
194
231
|
|
|
232
|
+
# H2 supports MERGE
|
|
233
|
+
def supports_merge?
|
|
234
|
+
true
|
|
235
|
+
end
|
|
236
|
+
|
|
195
237
|
# H2 doesn't support multiple columns in IN/NOT IN
|
|
196
238
|
def supports_multiple_column_in?
|
|
197
239
|
false
|
|
@@ -201,12 +243,24 @@ module Sequel
|
|
|
201
243
|
|
|
202
244
|
# H2 expects hexadecimal strings for blob values
|
|
203
245
|
def literal_blob_append(sql, v)
|
|
204
|
-
|
|
246
|
+
if db.send(:version2?)
|
|
247
|
+
super
|
|
248
|
+
else
|
|
249
|
+
sql << "'" << v.unpack("H*").first << "'"
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
def literal_false
|
|
254
|
+
'FALSE'
|
|
205
255
|
end
|
|
206
256
|
|
|
257
|
+
def literal_true
|
|
258
|
+
'TRUE'
|
|
259
|
+
end
|
|
260
|
+
|
|
207
261
|
# H2 handles fractional seconds in timestamps, but not in times
|
|
208
262
|
def literal_sqltime(v)
|
|
209
|
-
v.strftime(
|
|
263
|
+
v.strftime("'%H:%M:%S'")
|
|
210
264
|
end
|
|
211
265
|
|
|
212
266
|
# H2 supports multiple rows in INSERT.
|
|
@@ -215,8 +269,12 @@ module Sequel
|
|
|
215
269
|
end
|
|
216
270
|
|
|
217
271
|
def select_only_offset_sql(sql)
|
|
218
|
-
|
|
219
|
-
|
|
272
|
+
if db.send(:version2?)
|
|
273
|
+
super
|
|
274
|
+
else
|
|
275
|
+
sql << " LIMIT -1 OFFSET "
|
|
276
|
+
literal_append(sql, @opts[:offset])
|
|
277
|
+
end
|
|
220
278
|
end
|
|
221
279
|
|
|
222
280
|
# H2 supports quoted function names.
|