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,62 +0,0 @@
|
|
|
1
|
-
Sequel::JDBC.load_driver('Java::cubrid.jdbc.driver.CUBRIDDriver')
|
|
2
|
-
Sequel.require 'adapters/shared/cubrid'
|
|
3
|
-
Sequel.require 'adapters/jdbc/transactions'
|
|
4
|
-
|
|
5
|
-
module Sequel
|
|
6
|
-
module JDBC
|
|
7
|
-
Sequel.synchronize do
|
|
8
|
-
DATABASE_SETUP[:cubrid] = proc do |db|
|
|
9
|
-
db.extend(Sequel::JDBC::Cubrid::DatabaseMethods)
|
|
10
|
-
db.extend_datasets Sequel::Cubrid::DatasetMethods
|
|
11
|
-
Java::cubrid.jdbc.driver.CUBRIDDriver
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
module Cubrid
|
|
16
|
-
module DatabaseMethods
|
|
17
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
18
|
-
include Sequel::Cubrid::DatabaseMethods
|
|
19
|
-
include Sequel::JDBC::Transactions
|
|
20
|
-
|
|
21
|
-
def supports_savepoints?
|
|
22
|
-
false
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
# Get the last inserted id using LAST_INSERT_ID().
|
|
28
|
-
def last_insert_id(conn, opts=OPTS)
|
|
29
|
-
if stmt = opts[:stmt]
|
|
30
|
-
rs = stmt.getGeneratedKeys
|
|
31
|
-
begin
|
|
32
|
-
if rs.next
|
|
33
|
-
rs.getLong(1)
|
|
34
|
-
end
|
|
35
|
-
rescue NativeException
|
|
36
|
-
nil
|
|
37
|
-
ensure
|
|
38
|
-
rs.close
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Use execute instead of executeUpdate.
|
|
44
|
-
def execute_prepared_statement_insert(stmt)
|
|
45
|
-
stmt.execute
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Return generated keys for insert statements, and use
|
|
49
|
-
# execute intead of executeUpdate as CUBRID doesn't
|
|
50
|
-
# return generated keys in executeUpdate.
|
|
51
|
-
def execute_statement_insert(stmt, sql)
|
|
52
|
-
stmt.execute(sql, JavaSQL::Statement.RETURN_GENERATED_KEYS)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Return generated keys for insert statements.
|
|
56
|
-
def prepare_jdbc_statement(conn, sql, opts)
|
|
57
|
-
opts[:type] == :insert ? conn.prepareStatement(sql, JavaSQL::Statement.RETURN_GENERATED_KEYS) : super
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Sequel::JDBC.load_driver('org.firebirdsql.jdbc.FBDriver')
|
|
2
|
-
Sequel.require 'adapters/shared/firebird'
|
|
3
|
-
Sequel.require 'adapters/jdbc/transactions'
|
|
4
|
-
|
|
5
|
-
module Sequel
|
|
6
|
-
module JDBC
|
|
7
|
-
Sequel.synchronize do
|
|
8
|
-
DATABASE_SETUP[:firebirdsql] = proc do |db|
|
|
9
|
-
db.extend(Sequel::JDBC::Firebird::DatabaseMethods)
|
|
10
|
-
db.extend_datasets Sequel::Firebird::DatasetMethods
|
|
11
|
-
org.firebirdsql.jdbc.FBDriver
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Database and Dataset instance methods for Firebird specific
|
|
16
|
-
# support via JDBC.
|
|
17
|
-
module Firebird
|
|
18
|
-
# Database instance methods for Firebird databases accessed via JDBC.
|
|
19
|
-
module DatabaseMethods
|
|
20
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
21
|
-
include Sequel::Firebird::DatabaseMethods
|
|
22
|
-
include Sequel::JDBC::Transactions
|
|
23
|
-
|
|
24
|
-
# Add the primary_keys and primary_key_sequences instance variables,
|
|
25
|
-
# so we can get the correct return values for inserted rows.
|
|
26
|
-
def self.extended(db)
|
|
27
|
-
db.instance_eval do
|
|
28
|
-
@primary_keys = {}
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
Sequel::JDBC.load_driver('com.informix.jdbc.IfxDriver')
|
|
2
|
-
Sequel.require 'adapters/shared/informix'
|
|
3
|
-
|
|
4
|
-
module Sequel
|
|
5
|
-
module JDBC
|
|
6
|
-
Sequel.synchronize do
|
|
7
|
-
DATABASE_SETUP[:"informix-sqli"] = proc do |db|
|
|
8
|
-
db.extend(Sequel::JDBC::Informix::DatabaseMethods)
|
|
9
|
-
db.extend_datasets Sequel::Informix::DatasetMethods
|
|
10
|
-
com.informix.jdbc.IfxDriver
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Database and Dataset instance methods for Informix specific
|
|
15
|
-
# support via JDBC.
|
|
16
|
-
module Informix
|
|
17
|
-
# Database instance methods for Informix databases accessed via JDBC.
|
|
18
|
-
module DatabaseMethods
|
|
19
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
20
|
-
include Sequel::Informix::DatabaseMethods
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
# TODO: implement
|
|
25
|
-
def last_insert_id(conn, opts=OPTS)
|
|
26
|
-
nil
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
Sequel::JDBC.load_driver('com.progress.sql.jdbc.JdbcProgressDriver')
|
|
2
|
-
Sequel.require 'adapters/shared/progress'
|
|
3
|
-
Sequel.require 'adapters/jdbc/transactions'
|
|
4
|
-
|
|
5
|
-
module Sequel
|
|
6
|
-
module JDBC
|
|
7
|
-
Sequel.synchronize do
|
|
8
|
-
DATABASE_SETUP[:jdbcprogress] = proc do |db|
|
|
9
|
-
db.extend(Sequel::JDBC::Progress::DatabaseMethods)
|
|
10
|
-
db.extend_datasets Sequel::Progress::DatasetMethods
|
|
11
|
-
com.progress.sql.jdbc.JdbcProgressDriver
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Database and Dataset instance methods for Progress v9 specific
|
|
16
|
-
# support via JDBC.
|
|
17
|
-
module Progress
|
|
18
|
-
# Database instance methods for Progress databases accessed via JDBC.
|
|
19
|
-
module DatabaseMethods
|
|
20
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
21
|
-
include Sequel::Progress::DatabaseMethods
|
|
22
|
-
include Sequel::JDBC::Transactions
|
|
23
|
-
|
|
24
|
-
# Progress DatabaseMetaData doesn't even implement supportsSavepoints()
|
|
25
|
-
def supports_savepoints?
|
|
26
|
-
false
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
Sequel.require 'adapters/utils/split_alter_table'
|
|
2
|
-
|
|
3
|
-
module Sequel
|
|
4
|
-
module Cubrid
|
|
5
|
-
module DatabaseMethods
|
|
6
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
7
|
-
|
|
8
|
-
include Sequel::Database::SplitAlterTable
|
|
9
|
-
|
|
10
|
-
AUTOINCREMENT = 'AUTO_INCREMENT'.freeze
|
|
11
|
-
COLUMN_DEFINITION_ORDER = [:auto_increment, :default, :null, :unique, :primary_key, :references]
|
|
12
|
-
|
|
13
|
-
def database_type
|
|
14
|
-
:cubrid
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def indexes(table, opts=OPTS)
|
|
18
|
-
m = output_identifier_meth
|
|
19
|
-
m2 = input_identifier_meth
|
|
20
|
-
indexes = {}
|
|
21
|
-
metadata_dataset.
|
|
22
|
-
from(:db_index___i).
|
|
23
|
-
join(:db_index_key___k, :index_name=>:index_name, :class_name=>:class_name).
|
|
24
|
-
where(:i__class_name=>m2.call(table), :is_primary_key=>'NO').
|
|
25
|
-
order(:k__key_order).
|
|
26
|
-
select(:i__index_name, :k__key_attr_name___column, :is_unique).
|
|
27
|
-
each do |row|
|
|
28
|
-
index = indexes[m.call(row[:index_name])] ||= {:columns=>[], :unique=>row[:is_unique]=='YES'}
|
|
29
|
-
index[:columns] << m.call(row[:column])
|
|
30
|
-
end
|
|
31
|
-
indexes
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def supports_savepoints?
|
|
35
|
-
false
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def schema_parse_table(table_name, opts)
|
|
39
|
-
m = output_identifier_meth(opts[:dataset])
|
|
40
|
-
m2 = input_identifier_meth(opts[:dataset])
|
|
41
|
-
|
|
42
|
-
pks = metadata_dataset.
|
|
43
|
-
from(:db_index___i).
|
|
44
|
-
join(:db_index_key___k, :index_name=>:index_name, :class_name=>:class_name).
|
|
45
|
-
where(:i__class_name=>m2.call(table_name), :is_primary_key=>'YES').
|
|
46
|
-
order(:k__key_order).
|
|
47
|
-
select_map(:k__key_attr_name).
|
|
48
|
-
map{|c| m.call(c)}
|
|
49
|
-
|
|
50
|
-
metadata_dataset.
|
|
51
|
-
from(:db_attribute).
|
|
52
|
-
where(:class_name=>m2.call(table_name)).
|
|
53
|
-
order(:def_order).
|
|
54
|
-
select(:attr_name, :data_type___db_type, :default_value___default, :is_nullable___allow_null, :prec).
|
|
55
|
-
map do |row|
|
|
56
|
-
name = m.call(row.delete(:attr_name))
|
|
57
|
-
row[:allow_null] = row[:allow_null] == 'YES'
|
|
58
|
-
row[:primary_key] = pks.include?(name)
|
|
59
|
-
row[:type] = schema_column_type(row[:db_type])
|
|
60
|
-
row[:max_length] = row[:prec] if row[:type] == :string
|
|
61
|
-
[name, row]
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def tables(opts=OPTS)
|
|
66
|
-
_tables('CLASS')
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def views(opts=OPTS)
|
|
70
|
-
_tables('VCLASS')
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
private
|
|
74
|
-
|
|
75
|
-
def _tables(type)
|
|
76
|
-
m = output_identifier_meth
|
|
77
|
-
metadata_dataset.
|
|
78
|
-
from(:db_class).
|
|
79
|
-
where(:is_system_class=>'NO', :class_type=>type).
|
|
80
|
-
select_map(:class_name).
|
|
81
|
-
map{|c| m.call(c)}
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def alter_table_rename_column_sql(table, op)
|
|
85
|
-
"RENAME COLUMN #{quote_identifier(op[:name])} AS #{quote_identifier(op[:new_name])}"
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def alter_table_change_column_sql(table, op)
|
|
89
|
-
o = op[:op]
|
|
90
|
-
opts = schema(table).find{|x| x.first == op[:name]}
|
|
91
|
-
opts = opts ? opts.last.dup : {}
|
|
92
|
-
opts[:name] = o == :rename_column ? op[:new_name] : op[:name]
|
|
93
|
-
opts[:type] = o == :set_column_type ? op[:type] : opts[:db_type]
|
|
94
|
-
opts[:null] = o == :set_column_null ? op[:null] : opts[:allow_null]
|
|
95
|
-
opts[:default] = o == :set_column_default ? op[:default] : opts[:ruby_default]
|
|
96
|
-
opts.delete(:default) if opts[:default] == nil
|
|
97
|
-
"CHANGE COLUMN #{quote_identifier(op[:name])} #{column_definition_sql(op.merge(opts))}"
|
|
98
|
-
end
|
|
99
|
-
alias alter_table_set_column_type_sql alter_table_change_column_sql
|
|
100
|
-
alias alter_table_set_column_null_sql alter_table_change_column_sql
|
|
101
|
-
alias alter_table_set_column_default_sql alter_table_change_column_sql
|
|
102
|
-
|
|
103
|
-
def alter_table_sql(table, op)
|
|
104
|
-
case op[:op]
|
|
105
|
-
when :drop_index
|
|
106
|
-
"ALTER TABLE #{quote_schema_table(table)} #{drop_index_sql(table, op)}"
|
|
107
|
-
else
|
|
108
|
-
super
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def auto_increment_sql
|
|
113
|
-
AUTOINCREMENT
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# CUBRID requires auto increment before primary key
|
|
117
|
-
def column_definition_order
|
|
118
|
-
COLUMN_DEFINITION_ORDER
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
# CUBRID requires FOREIGN KEY keywords before a column reference
|
|
122
|
-
def column_references_sql(column)
|
|
123
|
-
sql = super
|
|
124
|
-
sql = " FOREIGN KEY#{sql}" unless column[:columns]
|
|
125
|
-
sql
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def connection_execute_method
|
|
129
|
-
:query
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
DATABASE_ERROR_REGEXPS = {
|
|
133
|
-
/Operation would have caused one or more unique constraint violations/ => UniqueConstraintViolation,
|
|
134
|
-
/The constraint of the foreign key .+ is invalid|Update\/Delete operations are restricted by the foreign key/ => ForeignKeyConstraintViolation,
|
|
135
|
-
/cannot be made NULL/ => NotNullConstraintViolation,
|
|
136
|
-
/Your transaction .+ has been unilaterally aborted by the system/ => SerializationFailure,
|
|
137
|
-
}.freeze
|
|
138
|
-
def database_error_regexps
|
|
139
|
-
DATABASE_ERROR_REGEXPS
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
# CUBRID is case insensitive, so don't modify identifiers
|
|
143
|
-
def identifier_input_method_default
|
|
144
|
-
nil
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
# CUBRID is case insensitive, so don't modify identifiers
|
|
148
|
-
def identifier_output_method_default
|
|
149
|
-
nil
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# CUBRID does not support named column constraints.
|
|
153
|
-
def supports_named_column_constraints?
|
|
154
|
-
false
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
# CUBRID doesn't support booleans, it recommends using smallint.
|
|
158
|
-
def type_literal_generic_trueclass(column)
|
|
159
|
-
:smallint
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
# CUBRID uses clob for text types.
|
|
163
|
-
def uses_clob_for_text?
|
|
164
|
-
true
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
# CUBRID supports views with check option, but not local.
|
|
168
|
-
def view_with_check_option_support
|
|
169
|
-
true
|
|
170
|
-
end
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
module DatasetMethods
|
|
174
|
-
COMMA = Sequel::Dataset::COMMA
|
|
175
|
-
LIMIT = Sequel::Dataset::LIMIT
|
|
176
|
-
BOOL_FALSE = '0'.freeze
|
|
177
|
-
BOOL_TRUE = '1'.freeze
|
|
178
|
-
|
|
179
|
-
# Hope you don't have more than 2**32 + offset rows in your dataset
|
|
180
|
-
ONLY_OFFSET = ",4294967295".freeze
|
|
181
|
-
|
|
182
|
-
def supports_join_using?
|
|
183
|
-
false
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
def supports_multiple_column_in?
|
|
187
|
-
false
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
def supports_timestamp_usecs?
|
|
191
|
-
false
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
# CUBRID supposedly supports TRUNCATE, but it appears not to work in my testing.
|
|
195
|
-
# Fallback to using DELETE.
|
|
196
|
-
def truncate
|
|
197
|
-
delete
|
|
198
|
-
nil
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
private
|
|
202
|
-
|
|
203
|
-
def literal_false
|
|
204
|
-
BOOL_FALSE
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def literal_true
|
|
208
|
-
BOOL_TRUE
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
# CUBRID supports multiple rows in INSERT.
|
|
212
|
-
def multi_insert_sql_strategy
|
|
213
|
-
:values
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
# CUBRID requires a limit to use an offset,
|
|
217
|
-
# and requires a FROM table if a limit is used.
|
|
218
|
-
def select_limit_sql(sql)
|
|
219
|
-
return unless @opts[:from]
|
|
220
|
-
l = @opts[:limit]
|
|
221
|
-
o = @opts[:offset]
|
|
222
|
-
if l || o
|
|
223
|
-
sql << LIMIT
|
|
224
|
-
if o
|
|
225
|
-
literal_append(sql, o)
|
|
226
|
-
if l
|
|
227
|
-
sql << COMMA
|
|
228
|
-
literal_append(sql, l)
|
|
229
|
-
else
|
|
230
|
-
sql << ONLY_OFFSET
|
|
231
|
-
end
|
|
232
|
-
else
|
|
233
|
-
literal_append(sql, l)
|
|
234
|
-
end
|
|
235
|
-
end
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
# CUBRID doesn't support FOR UPDATE.
|
|
239
|
-
def select_lock_sql(sql)
|
|
240
|
-
end
|
|
241
|
-
end
|
|
242
|
-
end
|
|
243
|
-
end
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
module Sequel
|
|
2
|
-
module Firebird
|
|
3
|
-
module DatabaseMethods
|
|
4
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
5
|
-
|
|
6
|
-
AUTO_INCREMENT = ''.freeze
|
|
7
|
-
TEMPORARY = 'GLOBAL TEMPORARY '.freeze
|
|
8
|
-
|
|
9
|
-
def clear_primary_key(*tables)
|
|
10
|
-
tables.each{|t| @primary_keys.delete(dataset.send(:input_identifier, t))}
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def create_trigger(*args)
|
|
14
|
-
self << create_trigger_sql(*args)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def database_type
|
|
18
|
-
:firebird
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def drop_sequence(name)
|
|
22
|
-
self << drop_sequence_sql(name)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# Return primary key for the given table.
|
|
26
|
-
def primary_key(table)
|
|
27
|
-
t = dataset.send(:input_identifier, table)
|
|
28
|
-
@primary_keys.fetch(t) do
|
|
29
|
-
pk = fetch("SELECT RDB$FIELD_NAME FROM RDB$INDEX_SEGMENTS NATURAL JOIN RDB$RELATION_CONSTRAINTS WHERE RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' AND RDB$RELATION_NAME = ?", t).single_value
|
|
30
|
-
@primary_keys[t] = dataset.send(:output_identifier, pk.rstrip) if pk
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def restart_sequence(*args)
|
|
35
|
-
self << restart_sequence_sql(*args)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def sequences(opts=OPTS)
|
|
39
|
-
ds = self[:"rdb$generators"].server(opts[:server]).filter(:"rdb$system_flag" => 0).select(:"rdb$generator_name")
|
|
40
|
-
block_given? ? yield(ds) : ds.map{|r| ds.send(:output_identifier, r[:"rdb$generator_name"])}
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def tables(opts=OPTS)
|
|
44
|
-
tables_or_views(0, opts)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def views(opts=OPTS)
|
|
48
|
-
tables_or_views(1, opts)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
# Use Firebird specific syntax for add column
|
|
54
|
-
def alter_table_sql(table, op)
|
|
55
|
-
case op[:op]
|
|
56
|
-
when :add_column
|
|
57
|
-
"ALTER TABLE #{quote_schema_table(table)} ADD #{column_definition_sql(op)}"
|
|
58
|
-
when :drop_column
|
|
59
|
-
"ALTER TABLE #{quote_schema_table(table)} DROP #{column_definition_sql(op)}"
|
|
60
|
-
when :rename_column
|
|
61
|
-
"ALTER TABLE #{quote_schema_table(table)} ALTER #{quote_identifier(op[:name])} TO #{quote_identifier(op[:new_name])}"
|
|
62
|
-
when :set_column_type
|
|
63
|
-
"ALTER TABLE #{quote_schema_table(table)} ALTER #{quote_identifier(op[:name])} TYPE #{type_literal(op)}"
|
|
64
|
-
else
|
|
65
|
-
super(table, op)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def auto_increment_sql()
|
|
70
|
-
AUTO_INCREMENT
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def create_sequence_sql(name, opts=OPTS)
|
|
74
|
-
"CREATE SEQUENCE #{quote_identifier(name)}"
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Firebird gets an override because of the mess of creating a
|
|
78
|
-
# sequence and trigger for auto-incrementing primary keys.
|
|
79
|
-
def create_table_from_generator(name, generator, options)
|
|
80
|
-
drop_statement, create_statements = create_table_sql_list(name, generator, options)
|
|
81
|
-
(execute_ddl(drop_statement) rescue nil) if drop_statement
|
|
82
|
-
create_statements.each{|sql| execute_ddl(sql)}
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def create_table_sql_list(name, generator, options=OPTS)
|
|
86
|
-
statements = [create_table_sql(name, generator, options)]
|
|
87
|
-
drop_seq_statement = nil
|
|
88
|
-
generator.columns.each do |c|
|
|
89
|
-
if c[:auto_increment]
|
|
90
|
-
c[:sequence_name] ||= "seq_#{name}_#{c[:name]}"
|
|
91
|
-
unless c[:create_sequence] == false
|
|
92
|
-
drop_seq_statement = drop_sequence_sql(c[:sequence_name])
|
|
93
|
-
statements << create_sequence_sql(c[:sequence_name])
|
|
94
|
-
statements << restart_sequence_sql(c[:sequence_name], {:restart_position => c[:sequence_start_position]}) if c[:sequence_start_position]
|
|
95
|
-
end
|
|
96
|
-
unless c[:create_trigger] == false
|
|
97
|
-
c[:trigger_name] ||= "BI_#{name}_#{c[:name]}"
|
|
98
|
-
c[:quoted_name] = quote_identifier(c[:name])
|
|
99
|
-
trigger_definition = <<-END
|
|
100
|
-
begin
|
|
101
|
-
if ((new.#{c[:quoted_name]} is null) or (new.#{c[:quoted_name]} = 0)) then
|
|
102
|
-
begin
|
|
103
|
-
new.#{c[:quoted_name]} = next value for #{c[:sequence_name]};
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
END
|
|
107
|
-
statements << create_trigger_sql(name, c[:trigger_name], trigger_definition, {:events => [:insert]})
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
[drop_seq_statement, statements]
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
def create_trigger_sql(table, name, definition, opts=OPTS)
|
|
115
|
-
events = opts[:events] ? Array(opts[:events]) : [:insert, :update, :delete]
|
|
116
|
-
whence = opts[:after] ? 'AFTER' : 'BEFORE'
|
|
117
|
-
inactive = opts[:inactive] ? 'INACTIVE' : 'ACTIVE'
|
|
118
|
-
position = opts.fetch(:position, 0)
|
|
119
|
-
sql = <<-end_sql
|
|
120
|
-
CREATE TRIGGER #{quote_identifier(name)} for #{quote_identifier(table)}
|
|
121
|
-
#{inactive} #{whence} #{events.map{|e| e.to_s.upcase}.join(' OR ')} position #{position}
|
|
122
|
-
as #{definition}
|
|
123
|
-
end_sql
|
|
124
|
-
sql
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
def drop_sequence_sql(name)
|
|
128
|
-
"DROP SEQUENCE #{quote_identifier(name)}"
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def remove_cached_schema(table)
|
|
132
|
-
clear_primary_key(table)
|
|
133
|
-
super
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def restart_sequence_sql(name, opts=OPTS)
|
|
137
|
-
seq_name = quote_identifier(name)
|
|
138
|
-
"ALTER SEQUENCE #{seq_name} RESTART WITH #{opts[:restart_position]}"
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
def tables_or_views(type, opts)
|
|
142
|
-
ds = self[:"rdb$relations"].server(opts[:server]).filter(:"rdb$relation_type" => type, Sequel::SQL::Function.new(:COALESCE, :"rdb$system_flag", 0) => 0).select(:"rdb$relation_name")
|
|
143
|
-
ds.map{|r| ds.send(:output_identifier, r[:"rdb$relation_name"].rstrip)}
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
def type_literal_generic_string(column)
|
|
147
|
-
column[:text] ? :"BLOB SUB_TYPE TEXT" : super
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
# Firebird supports views with check option, but not local.
|
|
151
|
-
def view_with_check_option_support
|
|
152
|
-
true
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
module DatasetMethods
|
|
157
|
-
BOOL_TRUE = '1'.freeze
|
|
158
|
-
BOOL_FALSE = '0'.freeze
|
|
159
|
-
NULL = LiteralString.new('NULL').freeze
|
|
160
|
-
FIRST = " FIRST ".freeze
|
|
161
|
-
SKIP = " SKIP ".freeze
|
|
162
|
-
DEFAULT_FROM = " FROM RDB$DATABASE"
|
|
163
|
-
|
|
164
|
-
Dataset.def_sql_method(self, :select, %w'with select distinct limit columns from join where group having compounds order')
|
|
165
|
-
Dataset.def_sql_method(self, :insert, %w'insert into columns values returning')
|
|
166
|
-
|
|
167
|
-
# Insert given values into the database.
|
|
168
|
-
def insert(*values)
|
|
169
|
-
if @opts[:sql] || @opts[:returning]
|
|
170
|
-
super
|
|
171
|
-
else
|
|
172
|
-
returning(insert_pk).insert(*values){|r| return r.values.first}
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
# Insert a record returning the record inserted
|
|
177
|
-
def insert_select(*values)
|
|
178
|
-
with_sql_first(insert_select_sql(*values))
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
# The SQL to use for an insert_select, adds a RETURNING clause to the insert
|
|
182
|
-
# unless the RETURNING clause is already present.
|
|
183
|
-
def insert_select_sql(*values)
|
|
184
|
-
ds = opts[:returning] ? self : returning
|
|
185
|
-
ds.insert_sql(*values)
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
def requires_sql_standard_datetimes?
|
|
189
|
-
true
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
def supports_cte?(type=:select)
|
|
193
|
-
type == :select
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
def supports_insert_select?
|
|
197
|
-
true
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
# Firebird does not support INTERSECT or EXCEPT
|
|
201
|
-
def supports_intersect_except?
|
|
202
|
-
false
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
def supports_returning?(type)
|
|
206
|
-
type == :insert
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
private
|
|
210
|
-
|
|
211
|
-
def empty_from_sql
|
|
212
|
-
DEFAULT_FROM
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
def insert_pk(*values)
|
|
216
|
-
pk = db.primary_key(opts[:from].first)
|
|
217
|
-
pk ? Sequel::SQL::Identifier.new(pk) : NULL
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
def literal_false
|
|
221
|
-
BOOL_FALSE
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
def literal_true
|
|
225
|
-
BOOL_TRUE
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
# Firebird can insert multiple rows using a UNION
|
|
229
|
-
def multi_insert_sql_strategy
|
|
230
|
-
:union
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
def select_limit_sql(sql)
|
|
234
|
-
if l = @opts[:limit]
|
|
235
|
-
sql << FIRST
|
|
236
|
-
literal_append(sql, l)
|
|
237
|
-
end
|
|
238
|
-
if o = @opts[:offset]
|
|
239
|
-
sql << SKIP
|
|
240
|
-
literal_append(sql, o)
|
|
241
|
-
end
|
|
242
|
-
end
|
|
243
|
-
end
|
|
244
|
-
end
|
|
245
|
-
end
|