sequel 4.49.0 → 5.0.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 +4 -4
- data/CHANGELOG +70 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +3 -5
- data/doc/advanced_associations.rdoc +86 -163
- data/doc/association_basics.rdoc +197 -274
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +66 -43
- data/doc/code_order.rdoc +1 -8
- data/doc/core_extensions.rdoc +81 -56
- data/doc/dataset_basics.rdoc +8 -17
- data/doc/dataset_filtering.rdoc +81 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/mass_assignment.rdoc +73 -30
- data/doc/migration.rdoc +19 -36
- data/doc/model_dataset_method_design.rdoc +14 -17
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +10 -10
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +52 -70
- data/doc/opening_databases.rdoc +39 -32
- data/doc/postgresql.rdoc +48 -38
- data/doc/prepared_statements.rdoc +27 -22
- data/doc/querying.rdoc +173 -150
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/schema_modification.rdoc +63 -60
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +3 -5
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +18 -17
- data/doc/validations.rdoc +48 -45
- data/doc/virtual_rows.rdoc +87 -115
- data/lib/sequel.rb +1 -1
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- data/lib/sequel/adapters/jdbc.rb +13 -73
- data/lib/sequel/adapters/jdbc/db2.rb +8 -37
- data/lib/sequel/adapters/jdbc/derby.rb +4 -50
- data/lib/sequel/adapters/jdbc/h2.rb +4 -25
- data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
- data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
- data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
- data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
- data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
- data/lib/sequel/adapters/mock.rb +4 -30
- data/lib/sequel/adapters/mysql.rb +7 -44
- data/lib/sequel/adapters/mysql2.rb +5 -23
- data/lib/sequel/adapters/odbc.rb +0 -19
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +4 -12
- data/lib/sequel/adapters/odbc/oracle.rb +1 -1
- data/lib/sequel/adapters/oracle.rb +7 -13
- data/lib/sequel/adapters/postgres.rb +13 -57
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +11 -51
- data/lib/sequel/adapters/shared/db2.rb +3 -61
- data/lib/sequel/adapters/shared/mssql.rb +21 -157
- data/lib/sequel/adapters/shared/mysql.rb +23 -224
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +44 -259
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +12 -101
- data/lib/sequel/adapters/sqlanywhere.rb +4 -23
- data/lib/sequel/adapters/sqlite.rb +2 -19
- data/lib/sequel/adapters/tinytds.rb +5 -15
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
- data/lib/sequel/adapters/utils/replace.rb +0 -5
- data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
- data/lib/sequel/ast_transformer.rb +3 -94
- data/lib/sequel/connection_pool.rb +26 -28
- data/lib/sequel/connection_pool/sharded_single.rb +1 -4
- data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
- data/lib/sequel/connection_pool/single.rb +0 -2
- data/lib/sequel/connection_pool/threaded.rb +94 -110
- data/lib/sequel/core.rb +42 -101
- data/lib/sequel/database.rb +12 -2
- data/lib/sequel/database/connecting.rb +23 -60
- data/lib/sequel/database/dataset.rb +6 -9
- data/lib/sequel/database/dataset_defaults.rb +4 -48
- data/lib/sequel/database/features.rb +5 -4
- data/lib/sequel/database/logging.rb +2 -9
- data/lib/sequel/database/misc.rb +23 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +89 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/dataset.rb +18 -10
- data/lib/sequel/dataset/actions.rb +53 -107
- data/lib/sequel/dataset/dataset_module.rb +3 -15
- data/lib/sequel/dataset/features.rb +30 -30
- data/lib/sequel/dataset/graph.rb +40 -49
- data/lib/sequel/dataset/misc.rb +12 -37
- data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
- data/lib/sequel/dataset/prepared_statements.rb +23 -51
- data/lib/sequel/dataset/query.rb +71 -155
- data/lib/sequel/dataset/sql.rb +30 -225
- data/lib/sequel/deprecated.rb +18 -27
- data/lib/sequel/exceptions.rb +1 -17
- data/lib/sequel/extensions/_model_pg_row.rb +0 -7
- data/lib/sequel/extensions/_pretty_table.rb +1 -3
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/connection_expiration.rb +1 -1
- data/lib/sequel/extensions/connection_validator.rb +1 -1
- data/lib/sequel/extensions/constraint_validations.rb +11 -11
- data/lib/sequel/extensions/core_extensions.rb +39 -49
- data/lib/sequel/extensions/core_refinements.rb +39 -45
- data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
- data/lib/sequel/extensions/date_arithmetic.rb +7 -7
- data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/eval_inspect.rb +4 -11
- data/lib/sequel/extensions/freeze_datasets.rb +1 -69
- data/lib/sequel/extensions/from_block.rb +1 -35
- data/lib/sequel/extensions/graph_each.rb +2 -2
- data/lib/sequel/extensions/identifier_mangling.rb +9 -19
- data/lib/sequel/extensions/implicit_subquery.rb +2 -2
- data/lib/sequel/extensions/inflector.rb +4 -4
- data/lib/sequel/extensions/migration.rb +23 -40
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
- data/lib/sequel/extensions/null_dataset.rb +2 -8
- data/lib/sequel/extensions/pagination.rb +1 -17
- data/lib/sequel/extensions/pg_array.rb +20 -189
- data/lib/sequel/extensions/pg_hstore.rb +11 -50
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
- data/lib/sequel/extensions/pg_inet.rb +2 -15
- data/lib/sequel/extensions/pg_interval.rb +1 -20
- data/lib/sequel/extensions/pg_json.rb +7 -27
- data/lib/sequel/extensions/pg_loose_count.rb +1 -1
- data/lib/sequel/extensions/pg_range.rb +6 -121
- data/lib/sequel/extensions/pg_range_ops.rb +1 -3
- data/lib/sequel/extensions/pg_row.rb +5 -77
- data/lib/sequel/extensions/pg_row_ops.rb +2 -13
- data/lib/sequel/extensions/query.rb +3 -4
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/schema_dumper.rb +13 -13
- data/lib/sequel/extensions/select_remove.rb +3 -3
- data/lib/sequel/extensions/split_array_nil.rb +2 -2
- data/lib/sequel/extensions/sql_comments.rb +2 -2
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/symbol_aref.rb +6 -20
- data/lib/sequel/model.rb +27 -62
- data/lib/sequel/model/associations.rb +128 -131
- data/lib/sequel/model/base.rb +171 -711
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +0 -3
- data/lib/sequel/model/exceptions.rb +2 -6
- data/lib/sequel/model/inflections.rb +1 -26
- data/lib/sequel/model/plugins.rb +1 -0
- data/lib/sequel/plugins/active_model.rb +2 -5
- data/lib/sequel/plugins/association_dependencies.rb +15 -15
- data/lib/sequel/plugins/association_pks.rb +14 -28
- data/lib/sequel/plugins/association_proxies.rb +6 -7
- data/lib/sequel/plugins/auto_validations.rb +4 -4
- data/lib/sequel/plugins/before_after_save.rb +0 -43
- data/lib/sequel/plugins/blacklist_security.rb +9 -8
- data/lib/sequel/plugins/boolean_readers.rb +3 -3
- data/lib/sequel/plugins/boolean_subsets.rb +2 -2
- data/lib/sequel/plugins/caching.rb +5 -5
- data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
- data/lib/sequel/plugins/column_conflicts.rb +2 -2
- data/lib/sequel/plugins/column_select.rb +2 -2
- data/lib/sequel/plugins/composition.rb +15 -24
- data/lib/sequel/plugins/constraint_validations.rb +4 -3
- data/lib/sequel/plugins/csv_serializer.rb +13 -20
- data/lib/sequel/plugins/dataset_associations.rb +2 -2
- data/lib/sequel/plugins/def_dataset_method.rb +5 -5
- data/lib/sequel/plugins/defaults_setter.rb +1 -1
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/finder.rb +16 -10
- data/lib/sequel/plugins/force_encoding.rb +1 -7
- data/lib/sequel/plugins/hook_class_methods.rb +4 -106
- data/lib/sequel/plugins/input_transformer.rb +10 -11
- data/lib/sequel/plugins/insert_returning_select.rb +1 -9
- data/lib/sequel/plugins/instance_filters.rb +5 -5
- data/lib/sequel/plugins/instance_hooks.rb +7 -52
- data/lib/sequel/plugins/inverted_subsets.rb +3 -1
- data/lib/sequel/plugins/json_serializer.rb +19 -19
- data/lib/sequel/plugins/lazy_attributes.rb +1 -10
- data/lib/sequel/plugins/list.rb +6 -6
- data/lib/sequel/plugins/many_through_many.rb +11 -8
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/nested_attributes.rb +18 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +8 -2
- data/lib/sequel/plugins/pg_row.rb +2 -11
- data/lib/sequel/plugins/prepared_statements.rb +13 -66
- data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +7 -7
- data/lib/sequel/plugins/serialization.rb +15 -33
- data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
- data/lib/sequel/plugins/sharding.rb +2 -8
- data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/static_cache.rb +8 -9
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +1 -1
- data/lib/sequel/plugins/subset_conditions.rb +2 -2
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
- data/lib/sequel/plugins/timestamps.rb +6 -7
- data/lib/sequel/plugins/touch.rb +4 -8
- data/lib/sequel/plugins/tree.rb +3 -3
- data/lib/sequel/plugins/typecast_on_load.rb +2 -2
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/update_or_create.rb +3 -3
- data/lib/sequel/plugins/update_refresh.rb +3 -3
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validation_class_methods.rb +10 -9
- data/lib/sequel/plugins/validation_contexts.rb +4 -4
- data/lib/sequel/plugins/validation_helpers.rb +26 -25
- data/lib/sequel/plugins/whitelist_security.rb +13 -9
- data/lib/sequel/plugins/xml_serializer.rb +24 -25
- data/lib/sequel/sql.rb +145 -276
- data/lib/sequel/timezones.rb +8 -22
- data/lib/sequel/version.rb +2 -2
- data/spec/adapter_spec.rb +1 -1
- data/spec/adapters/db2_spec.rb +2 -103
- data/spec/adapters/mssql_spec.rb +89 -68
- data/spec/adapters/mysql_spec.rb +101 -480
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +312 -565
- data/spec/adapters/spec_helper.rb +12 -31
- data/spec/adapters/sqlanywhere_spec.rb +2 -77
- data/spec/adapters/sqlite_spec.rb +8 -146
- data/spec/bin_spec.rb +11 -16
- data/spec/core/connection_pool_spec.rb +173 -74
- data/spec/core/database_spec.rb +64 -244
- data/spec/core/dataset_spec.rb +81 -415
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +176 -4
- data/spec/core/object_graph_spec.rb +11 -60
- data/spec/core/placeholder_literalizer_spec.rb +1 -14
- data/spec/core/schema_generator_spec.rb +51 -40
- data/spec/core/schema_spec.rb +74 -77
- data/spec/core/spec_helper.rb +6 -24
- data/spec/core/version_spec.rb +1 -1
- data/spec/core_extensions_spec.rb +7 -83
- data/spec/core_model_spec.rb +2 -2
- data/spec/deprecation_helper.rb +2 -14
- data/spec/extensions/accessed_columns_spec.rb +1 -1
- data/spec/extensions/active_model_spec.rb +3 -3
- data/spec/extensions/after_initialize_spec.rb +1 -1
- data/spec/extensions/arbitrary_servers_spec.rb +2 -2
- data/spec/extensions/association_dependencies_spec.rb +1 -1
- data/spec/extensions/association_pks_spec.rb +4 -59
- data/spec/extensions/association_proxies_spec.rb +1 -1
- data/spec/extensions/auto_literal_strings_spec.rb +1 -12
- data/spec/extensions/auto_validations_spec.rb +1 -1
- data/spec/extensions/blacklist_security_spec.rb +1 -1
- data/spec/extensions/blank_spec.rb +1 -1
- data/spec/extensions/boolean_readers_spec.rb +1 -1
- data/spec/extensions/boolean_subsets_spec.rb +1 -1
- data/spec/extensions/caching_spec.rb +1 -1
- data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
- data/spec/extensions/column_conflicts_spec.rb +1 -1
- data/spec/extensions/column_select_spec.rb +4 -4
- data/spec/extensions/columns_introspection_spec.rb +1 -1
- data/spec/extensions/columns_updated_spec.rb +1 -1
- data/spec/extensions/composition_spec.rb +1 -7
- data/spec/extensions/connection_expiration_spec.rb +3 -3
- data/spec/extensions/connection_validator_spec.rb +3 -3
- data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
- data/spec/extensions/constraint_validations_spec.rb +1 -1
- data/spec/extensions/core_refinements_spec.rb +1 -3
- data/spec/extensions/csv_serializer_spec.rb +4 -9
- data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
- data/spec/extensions/dataset_associations_spec.rb +2 -1
- data/spec/extensions/dataset_source_alias_spec.rb +1 -1
- data/spec/extensions/date_arithmetic_spec.rb +3 -3
- data/spec/extensions/def_dataset_method_spec.rb +1 -1
- data/spec/extensions/defaults_setter_spec.rb +2 -2
- data/spec/extensions/delay_add_association_spec.rb +8 -9
- data/spec/extensions/dirty_spec.rb +1 -1
- data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
- data/spec/extensions/eager_each_spec.rb +2 -2
- data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
- data/spec/extensions/error_splitter_spec.rb +1 -1
- data/spec/extensions/error_sql_spec.rb +1 -1
- data/spec/extensions/eval_inspect_spec.rb +1 -1
- data/spec/extensions/finder_spec.rb +1 -1
- data/spec/extensions/force_encoding_spec.rb +2 -5
- data/spec/extensions/freeze_datasets_spec.rb +1 -1
- data/spec/extensions/graph_each_spec.rb +5 -5
- data/spec/extensions/hook_class_methods_spec.rb +1 -194
- data/spec/extensions/identifier_mangling_spec.rb +17 -170
- data/spec/extensions/implicit_subquery_spec.rb +1 -5
- data/spec/extensions/inflector_spec.rb +1 -1
- data/spec/extensions/input_transformer_spec.rb +7 -2
- data/spec/extensions/insert_returning_select_spec.rb +1 -1
- data/spec/extensions/instance_filters_spec.rb +1 -1
- data/spec/extensions/instance_hooks_spec.rb +1 -95
- data/spec/extensions/inverted_subsets_spec.rb +1 -1
- data/spec/extensions/json_serializer_spec.rb +1 -1
- data/spec/extensions/lazy_attributes_spec.rb +1 -7
- data/spec/extensions/list_spec.rb +1 -1
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +1 -1
- data/spec/extensions/migration_spec.rb +2 -2
- data/spec/extensions/modification_detection_spec.rb +1 -1
- data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
- data/spec/extensions/named_timezones_spec.rb +3 -3
- data/spec/extensions/nested_attributes_spec.rb +1 -29
- data/spec/extensions/null_dataset_spec.rb +1 -11
- data/spec/extensions/optimistic_locking_spec.rb +1 -1
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +4 -1
- data/spec/extensions/pg_array_ops_spec.rb +1 -1
- data/spec/extensions/pg_array_spec.rb +3 -48
- data/spec/extensions/pg_enum_spec.rb +1 -1
- data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +23 -32
- data/spec/extensions/pg_inet_ops_spec.rb +1 -1
- data/spec/extensions/pg_inet_spec.rb +1 -14
- data/spec/extensions/pg_interval_spec.rb +3 -13
- data/spec/extensions/pg_json_ops_spec.rb +1 -1
- data/spec/extensions/pg_json_spec.rb +1 -13
- data/spec/extensions/pg_loose_count_spec.rb +1 -1
- data/spec/extensions/pg_range_ops_spec.rb +1 -1
- data/spec/extensions/pg_range_spec.rb +3 -88
- data/spec/extensions/pg_row_ops_spec.rb +1 -1
- data/spec/extensions/pg_row_plugin_spec.rb +1 -1
- data/spec/extensions/pg_row_spec.rb +1 -44
- data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
- data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +1 -1
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +1 -1
- data/spec/extensions/round_timestamps_spec.rb +1 -5
- data/spec/extensions/s_spec.rb +1 -1
- data/spec/extensions/schema_caching_spec.rb +1 -1
- data/spec/extensions/schema_dumper_spec.rb +1 -1
- data/spec/extensions/select_remove_spec.rb +1 -1
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
- data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
- data/spec/extensions/serialization_spec.rb +2 -14
- data/spec/extensions/server_block_spec.rb +1 -1
- data/spec/extensions/server_logging_spec.rb +2 -2
- data/spec/extensions/sharding_spec.rb +1 -1
- data/spec/extensions/shared_caching_spec.rb +1 -28
- data/spec/extensions/single_table_inheritance_spec.rb +2 -5
- data/spec/extensions/singular_table_names_spec.rb +1 -1
- data/spec/extensions/skip_create_refresh_spec.rb +1 -1
- data/spec/extensions/spec_helper.rb +5 -27
- data/spec/extensions/split_array_nil_spec.rb +1 -1
- data/spec/extensions/split_values_spec.rb +1 -1
- data/spec/extensions/sql_comments_spec.rb +1 -1
- data/spec/extensions/sql_expr_spec.rb +1 -1
- data/spec/extensions/static_cache_spec.rb +1 -1
- data/spec/extensions/string_agg_spec.rb +2 -2
- data/spec/extensions/string_date_time_spec.rb +1 -1
- data/spec/extensions/string_stripper_spec.rb +1 -1
- data/spec/extensions/subclasses_spec.rb +1 -1
- data/spec/extensions/subset_conditions_spec.rb +1 -1
- data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
- data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
- data/spec/extensions/table_select_spec.rb +4 -4
- data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
- data/spec/extensions/thread_local_timezones_spec.rb +1 -1
- data/spec/extensions/timestamps_spec.rb +3 -3
- data/spec/extensions/to_dot_spec.rb +1 -1
- data/spec/extensions/touch_spec.rb +1 -1
- data/spec/extensions/tree_spec.rb +1 -1
- data/spec/extensions/typecast_on_load_spec.rb +1 -1
- data/spec/extensions/unlimited_update_spec.rb +1 -1
- data/spec/extensions/update_or_create_spec.rb +1 -1
- data/spec/extensions/update_primary_key_spec.rb +4 -3
- data/spec/extensions/update_refresh_spec.rb +1 -1
- data/spec/extensions/uuid_spec.rb +10 -12
- data/spec/extensions/validate_associated_spec.rb +1 -1
- data/spec/extensions/validation_class_methods_spec.rb +3 -3
- data/spec/extensions/validation_contexts_spec.rb +1 -1
- data/spec/extensions/validation_helpers_spec.rb +10 -44
- data/spec/extensions/whitelist_security_spec.rb +5 -5
- data/spec/extensions/xml_serializer_spec.rb +3 -3
- data/spec/guards_helper.rb +2 -1
- data/spec/integration/associations_test.rb +1 -23
- data/spec/integration/database_test.rb +7 -7
- data/spec/integration/dataset_test.rb +5 -47
- data/spec/integration/eager_loader_test.rb +1 -1
- data/spec/integration/migrator_test.rb +1 -1
- data/spec/integration/model_test.rb +4 -82
- data/spec/integration/plugin_test.rb +6 -22
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +6 -6
- data/spec/integration/spec_helper.rb +13 -21
- data/spec/integration/timezone_test.rb +5 -5
- data/spec/integration/transaction_test.rb +3 -55
- data/spec/integration/type_test.rb +9 -9
- data/spec/model/association_reflection_spec.rb +24 -9
- data/spec/model/associations_spec.rb +124 -303
- data/spec/model/base_spec.rb +18 -137
- data/spec/model/class_dataset_methods_spec.rb +2 -20
- data/spec/model/dataset_methods_spec.rb +1 -20
- data/spec/model/eager_loading_spec.rb +17 -11
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +15 -320
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +29 -121
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +8 -64
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- data/lib/sequel/adapters/do.rb +0 -166
- data/lib/sequel/adapters/do/mysql.rb +0 -69
- data/lib/sequel/adapters/do/postgres.rb +0 -46
- data/lib/sequel/adapters/do/sqlite3.rb +0 -41
- data/lib/sequel/adapters/jdbc/as400.rb +0 -92
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
- data/lib/sequel/adapters/odbc/progress.rb +0 -12
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -261
- data/lib/sequel/adapters/shared/informix.rb +0 -63
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift.rb +0 -169
- data/lib/sequel/adapters/swift/mysql.rb +0 -50
- data/lib/sequel/adapters/swift/postgres.rb +0 -49
- data/lib/sequel/adapters/swift/sqlite.rb +0 -48
- data/lib/sequel/adapters/utils/pg_types.rb +0 -4
- data/lib/sequel/dataset/mutation.rb +0 -98
- data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
- data/lib/sequel/extensions/filter_having.rb +0 -65
- data/lib/sequel/extensions/hash_aliases.rb +0 -51
- data/lib/sequel/extensions/meta_def.rb +0 -37
- data/lib/sequel/extensions/query_literals.rb +0 -86
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
- data/lib/sequel/extensions/set_overrides.rb +0 -82
- data/lib/sequel/no_core_ext.rb +0 -4
- data/lib/sequel/plugins/association_autoreloading.rb +0 -11
- data/lib/sequel/plugins/identifier_columns.rb +0 -49
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
- data/lib/sequel/plugins/schema.rb +0 -84
- data/lib/sequel/plugins/scissors.rb +0 -37
- data/spec/core/dataset_mutation_spec.rb +0 -253
- data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/filter_having_spec.rb +0 -42
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/hash_aliases_spec.rb +0 -26
- data/spec/extensions/identifier_columns_spec.rb +0 -19
- data/spec/extensions/meta_def_spec.rb +0 -35
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
- data/spec/extensions/query_literals_spec.rb +0 -185
- data/spec/extensions/schema_spec.rb +0 -123
- data/spec/extensions/scissors_spec.rb +0 -27
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
- data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -1,92 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
Sequel::Deprecation.deprecate("The jdbc/as400 adapter", "This gem will replace it: https://github.com/ecraft/sequel-jdbc-as400")
|
4
|
-
|
5
|
-
Sequel::JDBC.load_driver('com.ibm.as400.access.AS400JDBCDriver')
|
6
|
-
Sequel.require 'adapters/jdbc/transactions'
|
7
|
-
Sequel.require 'adapters/utils/emulate_offset_with_row_number'
|
8
|
-
|
9
|
-
module Sequel
|
10
|
-
module JDBC
|
11
|
-
Sequel.synchronize do
|
12
|
-
DATABASE_SETUP[:as400] = proc do |db|
|
13
|
-
db.extend(Sequel::JDBC::AS400::DatabaseMethods)
|
14
|
-
db.dataset_class = Sequel::JDBC::AS400::Dataset
|
15
|
-
com.ibm.as400.access.AS400JDBCDriver
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# Database and Dataset support for AS400 databases accessed via JDBC.
|
20
|
-
module AS400
|
21
|
-
# Instance methods for AS400 Database objects accessed via JDBC.
|
22
|
-
module DatabaseMethods
|
23
|
-
include Sequel::JDBC::Transactions
|
24
|
-
|
25
|
-
TRANSACTION_BEGIN = 'Transaction.begin'.freeze
|
26
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_BEGIN)
|
27
|
-
TRANSACTION_COMMIT = 'Transaction.commit'.freeze
|
28
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_COMMIT)
|
29
|
-
TRANSACTION_ROLLBACK = 'Transaction.rollback'.freeze
|
30
|
-
Sequel::Deprecation.deprecate_constant(self, :TRANSACTION_ROLLBACK)
|
31
|
-
|
32
|
-
# AS400 uses the :as400 database type.
|
33
|
-
def database_type
|
34
|
-
:as400
|
35
|
-
end
|
36
|
-
|
37
|
-
# TODO: Fix for AS400
|
38
|
-
def last_insert_id(conn, opts=OPTS)
|
39
|
-
nil
|
40
|
-
end
|
41
|
-
|
42
|
-
# AS400 supports transaction isolation levels
|
43
|
-
def supports_transaction_isolation_levels?
|
44
|
-
true
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def disconnect_error?(exception, opts)
|
50
|
-
super || exception.message =~ /\A(The connection does not exist|Communication link failure)\./
|
51
|
-
end
|
52
|
-
|
53
|
-
# Use JDBC connection's setAutoCommit to false to start transactions
|
54
|
-
def begin_transaction(conn, opts=OPTS)
|
55
|
-
set_transaction_isolation(conn, opts)
|
56
|
-
super
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# Dataset class for AS400 datasets accessed via JDBC.
|
61
|
-
class Dataset < JDBC::Dataset
|
62
|
-
include EmulateOffsetWithRowNumber
|
63
|
-
|
64
|
-
WILDCARD = Sequel::LiteralString.new('*').freeze
|
65
|
-
Sequel::Deprecation.deprecate_constant(self, :WILDCARD)
|
66
|
-
FETCH_FIRST_ROW_ONLY = " FETCH FIRST ROW ONLY".freeze
|
67
|
-
Sequel::Deprecation.deprecate_constant(self, :FETCH_FIRST_ROW_ONLY)
|
68
|
-
FETCH_FIRST = " FETCH FIRST ".freeze
|
69
|
-
Sequel::Deprecation.deprecate_constant(self, :FETCH_FIRST)
|
70
|
-
ROWS_ONLY = " ROWS ONLY".freeze
|
71
|
-
Sequel::Deprecation.deprecate_constant(self, :ROWS_ONLY)
|
72
|
-
|
73
|
-
# Modify the sql to limit the number of rows returned
|
74
|
-
def select_limit_sql(sql)
|
75
|
-
if l = @opts[:limit]
|
76
|
-
if l == 1
|
77
|
-
sql << " FETCH FIRST ROW ONLY"
|
78
|
-
elsif l > 1
|
79
|
-
sql << " FETCH FIRST "
|
80
|
-
literal_append(sql, l)
|
81
|
-
sql << " ROWS ONLY"
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def supports_window_functions?
|
87
|
-
true
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
#SEQUEL5: Remove
|
4
|
-
|
5
|
-
Sequel::JDBC.load_driver('Java::cubrid.jdbc.driver.CUBRIDDriver')
|
6
|
-
Sequel.require 'adapters/shared/cubrid'
|
7
|
-
Sequel.require 'adapters/jdbc/transactions'
|
8
|
-
|
9
|
-
module Sequel
|
10
|
-
module JDBC
|
11
|
-
Sequel.synchronize do
|
12
|
-
DATABASE_SETUP[:cubrid] = proc do |db|
|
13
|
-
db.extend(Sequel::JDBC::Cubrid::DatabaseMethods)
|
14
|
-
db.extend_datasets Sequel::Cubrid::DatasetMethods
|
15
|
-
Java::cubrid.jdbc.driver.CUBRIDDriver
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
module Cubrid
|
20
|
-
module DatabaseMethods
|
21
|
-
include Sequel::Cubrid::DatabaseMethods
|
22
|
-
include Sequel::JDBC::Transactions
|
23
|
-
|
24
|
-
def supports_savepoints?
|
25
|
-
false
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
# Get the last inserted id using LAST_INSERT_ID().
|
31
|
-
def last_insert_id(conn, opts=OPTS)
|
32
|
-
if stmt = opts[:stmt]
|
33
|
-
rs = stmt.getGeneratedKeys
|
34
|
-
begin
|
35
|
-
if rs.next
|
36
|
-
rs.getLong(1)
|
37
|
-
end
|
38
|
-
rescue NativeException
|
39
|
-
nil
|
40
|
-
ensure
|
41
|
-
rs.close
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
# Use execute instead of executeUpdate.
|
47
|
-
def execute_prepared_statement_insert(stmt)
|
48
|
-
stmt.execute
|
49
|
-
end
|
50
|
-
|
51
|
-
# Return generated keys for insert statements, and use
|
52
|
-
# execute intead of executeUpdate as CUBRID doesn't
|
53
|
-
# return generated keys in executeUpdate.
|
54
|
-
def execute_statement_insert(stmt, sql)
|
55
|
-
stmt.execute(sql, JavaSQL::Statement.RETURN_GENERATED_KEYS)
|
56
|
-
end
|
57
|
-
|
58
|
-
# Return generated keys for insert statements.
|
59
|
-
def prepare_jdbc_statement(conn, sql, opts)
|
60
|
-
opts[:type] == :insert ? conn.prepareStatement(sql, JavaSQL::Statement.RETURN_GENERATED_KEYS) : super
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
#SEQUEL5: Remove
|
4
|
-
|
5
|
-
Sequel::JDBC.load_driver('org.firebirdsql.jdbc.FBDriver')
|
6
|
-
Sequel.require 'adapters/shared/firebird'
|
7
|
-
Sequel.require 'adapters/jdbc/transactions'
|
8
|
-
|
9
|
-
module Sequel
|
10
|
-
module JDBC
|
11
|
-
Sequel.synchronize do
|
12
|
-
DATABASE_SETUP[:firebirdsql] = proc do |db|
|
13
|
-
db.extend(Sequel::JDBC::Firebird::DatabaseMethods)
|
14
|
-
db.extend_datasets Sequel::Firebird::DatasetMethods
|
15
|
-
org.firebirdsql.jdbc.FBDriver
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# Database and Dataset instance methods for Firebird specific
|
20
|
-
# support via JDBC.
|
21
|
-
module Firebird
|
22
|
-
# Database instance methods for Firebird databases accessed via JDBC.
|
23
|
-
module DatabaseMethods
|
24
|
-
include Sequel::Firebird::DatabaseMethods
|
25
|
-
include Sequel::JDBC::Transactions
|
26
|
-
|
27
|
-
# Add the primary_keys and primary_key_sequences instance variables,
|
28
|
-
# so we can get the correct return values for inserted rows.
|
29
|
-
def self.extended(db)
|
30
|
-
db.instance_eval do
|
31
|
-
@primary_keys = {}
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
#SEQUEL5: Remove
|
4
|
-
|
5
|
-
Sequel::JDBC.load_driver('com.informix.jdbc.IfxDriver')
|
6
|
-
Sequel.require 'adapters/shared/informix'
|
7
|
-
|
8
|
-
module Sequel
|
9
|
-
module JDBC
|
10
|
-
Sequel.synchronize do
|
11
|
-
DATABASE_SETUP[:"informix-sqli"] = proc do |db|
|
12
|
-
db.extend(Sequel::JDBC::Informix::DatabaseMethods)
|
13
|
-
db.extend_datasets Sequel::Informix::DatasetMethods
|
14
|
-
com.informix.jdbc.IfxDriver
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# Database and Dataset instance methods for Informix specific
|
19
|
-
# support via JDBC.
|
20
|
-
module Informix
|
21
|
-
# Database instance methods for Informix databases accessed via JDBC.
|
22
|
-
module DatabaseMethods
|
23
|
-
include Sequel::Informix::DatabaseMethods
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
# TODO: implement
|
28
|
-
def last_insert_id(conn, opts=OPTS)
|
29
|
-
nil
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
#SEQUEL5: Remove
|
4
|
-
|
5
|
-
Sequel::JDBC.load_driver('com.progress.sql.jdbc.JdbcProgressDriver')
|
6
|
-
Sequel.require 'adapters/shared/progress'
|
7
|
-
Sequel.require 'adapters/jdbc/transactions'
|
8
|
-
|
9
|
-
module Sequel
|
10
|
-
module JDBC
|
11
|
-
Sequel.synchronize do
|
12
|
-
DATABASE_SETUP[:jdbcprogress] = proc do |db|
|
13
|
-
db.extend(Sequel::JDBC::Progress::DatabaseMethods)
|
14
|
-
db.extend_datasets Sequel::Progress::DatasetMethods
|
15
|
-
com.progress.sql.jdbc.JdbcProgressDriver
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# Database and Dataset instance methods for Progress v9 specific
|
20
|
-
# support via JDBC.
|
21
|
-
module Progress
|
22
|
-
# Database instance methods for Progress databases accessed via JDBC.
|
23
|
-
module DatabaseMethods
|
24
|
-
include Sequel::Progress::DatabaseMethods
|
25
|
-
include Sequel::JDBC::Transactions
|
26
|
-
|
27
|
-
# Progress DatabaseMetaData doesn't even implement supportsSavepoints()
|
28
|
-
def supports_savepoints?
|
29
|
-
false
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
#SEQUEL5: Remove
|
4
|
-
|
5
|
-
Sequel.require 'adapters/shared/progress'
|
6
|
-
|
7
|
-
Sequel.synchronize do
|
8
|
-
Sequel::ODBC::DATABASE_SETUP[:progress] = proc do |db|
|
9
|
-
db.extend Sequel::Progress::DatabaseMethods
|
10
|
-
db.extend_datasets(Sequel::Progress::DatasetMethods)
|
11
|
-
end
|
12
|
-
end
|
@@ -1,245 +0,0 @@
|
|
1
|
-
# frozen-string-literal: true
|
2
|
-
|
3
|
-
Sequel::Deprecation.deprecate("Sequel support for Cubrid", "Please consider maintaining it yourself as an external sequel adapter if you want to continue using it")
|
4
|
-
|
5
|
-
Sequel.require %w'split_alter_table unmodified_identifiers', 'adapters/utils'
|
6
|
-
|
7
|
-
module Sequel
|
8
|
-
module Cubrid
|
9
|
-
Sequel::Database.set_shared_adapter_scheme(:cubrid, self)
|
10
|
-
|
11
|
-
module DatabaseMethods
|
12
|
-
include Sequel::Database::SplitAlterTable
|
13
|
-
include UnmodifiedIdentifiers::DatabaseMethods
|
14
|
-
|
15
|
-
AUTOINCREMENT = 'AUTO_INCREMENT'.freeze
|
16
|
-
Sequel::Deprecation.deprecate_constant(self, :AUTOINCREMENT)
|
17
|
-
COLUMN_DEFINITION_ORDER = [:auto_increment, :default, :null, :unique, :primary_key, :references]#.freeze # SEQUEL5
|
18
|
-
|
19
|
-
def database_type
|
20
|
-
:cubrid
|
21
|
-
end
|
22
|
-
|
23
|
-
def indexes(table, opts=OPTS)
|
24
|
-
m = output_identifier_meth
|
25
|
-
m2 = input_identifier_meth
|
26
|
-
indexes = {}
|
27
|
-
metadata_dataset.
|
28
|
-
from{db_index[:i]}.
|
29
|
-
join(Sequel[:db_index_key].as(:k), :index_name=>:index_name, :class_name=>:class_name).
|
30
|
-
where{{i[:class_name]=>m2.call(table), :is_primary_key=>'NO'}}.
|
31
|
-
order{k[:key_order]}.
|
32
|
-
select{[i[:index_name], k[:key_attr_name].as(:column), :is_unique]}.
|
33
|
-
each do |row|
|
34
|
-
index = indexes[m.call(row[:index_name])] ||= {:columns=>[], :unique=>row[:is_unique]=='YES'}
|
35
|
-
index[:columns] << m.call(row[:column])
|
36
|
-
end
|
37
|
-
indexes
|
38
|
-
end
|
39
|
-
|
40
|
-
def supports_savepoints?
|
41
|
-
false
|
42
|
-
end
|
43
|
-
|
44
|
-
def schema_parse_table(table_name, opts)
|
45
|
-
m = output_identifier_meth(opts[:dataset])
|
46
|
-
m2 = input_identifier_meth(opts[:dataset])
|
47
|
-
|
48
|
-
pks = metadata_dataset.
|
49
|
-
from{db_index[:i]}.
|
50
|
-
join(Sequel[:db_index_key].as(:k), :index_name=>:index_name, :class_name=>:class_name).
|
51
|
-
where{{i[:class_name]=>m2.call(table_name), :is_primary_key=>'YES'}}.
|
52
|
-
order{k[:key_order]}.
|
53
|
-
select_map{k[:key_attr_name]}.
|
54
|
-
map{|c| m.call(c)}
|
55
|
-
|
56
|
-
metadata_dataset.
|
57
|
-
from(:db_attribute).
|
58
|
-
where(:class_name=>m2.call(table_name)).
|
59
|
-
order(:def_order).
|
60
|
-
select{[:attr_name, data_type.as(:db_type), default_value.as(:default), is_nullable.as(:allow_null), :prec]}.
|
61
|
-
map do |row|
|
62
|
-
name = m.call(row.delete(:attr_name))
|
63
|
-
row[:allow_null] = row[:allow_null] == 'YES'
|
64
|
-
row[:primary_key] = pks.include?(name)
|
65
|
-
row[:type] = schema_column_type(row[:db_type])
|
66
|
-
row[:max_length] = row[:prec] if row[:type] == :string
|
67
|
-
[name, row]
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def tables(opts=OPTS)
|
72
|
-
_tables('CLASS')
|
73
|
-
end
|
74
|
-
|
75
|
-
def views(opts=OPTS)
|
76
|
-
_tables('VCLASS')
|
77
|
-
end
|
78
|
-
|
79
|
-
private
|
80
|
-
|
81
|
-
def _tables(type)
|
82
|
-
m = output_identifier_meth
|
83
|
-
metadata_dataset.
|
84
|
-
from(:db_class).
|
85
|
-
where(:is_system_class=>'NO', :class_type=>type).
|
86
|
-
select_map(:class_name).
|
87
|
-
map{|c| m.call(c)}
|
88
|
-
end
|
89
|
-
|
90
|
-
def alter_table_rename_column_sql(table, op)
|
91
|
-
"RENAME COLUMN #{quote_identifier(op[:name])} AS #{quote_identifier(op[:new_name])}"
|
92
|
-
end
|
93
|
-
|
94
|
-
def alter_table_change_column_sql(table, op)
|
95
|
-
o = op[:op]
|
96
|
-
opts = schema(table).find{|x| x.first == op[:name]}
|
97
|
-
opts = opts ? opts.last.dup : {}
|
98
|
-
opts[:name] = o == :rename_column ? op[:new_name] : op[:name]
|
99
|
-
opts[:type] = o == :set_column_type ? op[:type] : opts[:db_type]
|
100
|
-
opts[:null] = o == :set_column_null ? op[:null] : opts[:allow_null]
|
101
|
-
opts[:default] = o == :set_column_default ? op[:default] : opts[:ruby_default]
|
102
|
-
opts.delete(:default) if opts[:default] == nil
|
103
|
-
"CHANGE COLUMN #{quote_identifier(op[:name])} #{column_definition_sql(op.merge(opts))}"
|
104
|
-
end
|
105
|
-
alias alter_table_set_column_type_sql alter_table_change_column_sql
|
106
|
-
alias alter_table_set_column_null_sql alter_table_change_column_sql
|
107
|
-
alias alter_table_set_column_default_sql alter_table_change_column_sql
|
108
|
-
|
109
|
-
def alter_table_sql(table, op)
|
110
|
-
case op[:op]
|
111
|
-
when :drop_index
|
112
|
-
"ALTER TABLE #{quote_schema_table(table)} #{drop_index_sql(table, op)}"
|
113
|
-
else
|
114
|
-
super
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
def auto_increment_sql
|
119
|
-
'AUTO_INCREMENT'
|
120
|
-
end
|
121
|
-
|
122
|
-
# CUBRID requires auto increment before primary key
|
123
|
-
def column_definition_order
|
124
|
-
COLUMN_DEFINITION_ORDER
|
125
|
-
end
|
126
|
-
|
127
|
-
# CUBRID requires FOREIGN KEY keywords before a column reference
|
128
|
-
def column_references_sql(column)
|
129
|
-
sql = super
|
130
|
-
sql = " FOREIGN KEY#{sql}" unless column[:columns]
|
131
|
-
sql
|
132
|
-
end
|
133
|
-
|
134
|
-
def connection_execute_method
|
135
|
-
:query
|
136
|
-
end
|
137
|
-
|
138
|
-
DATABASE_ERROR_REGEXPS = {
|
139
|
-
/Operation would have caused one or more unique constraint violations/ => UniqueConstraintViolation,
|
140
|
-
/The constraint of the foreign key .+ is invalid|Update\/Delete operations are restricted by the foreign key/ => ForeignKeyConstraintViolation,
|
141
|
-
/cannot be made NULL/ => NotNullConstraintViolation,
|
142
|
-
/Your transaction .+ has been unilaterally aborted by the system/ => SerializationFailure,
|
143
|
-
}.freeze
|
144
|
-
def database_error_regexps
|
145
|
-
DATABASE_ERROR_REGEXPS
|
146
|
-
end
|
147
|
-
|
148
|
-
# CUBRID does not support named column constraints.
|
149
|
-
def supports_named_column_constraints?
|
150
|
-
false
|
151
|
-
end
|
152
|
-
|
153
|
-
# CUBRID doesn't support booleans, it recommends using smallint.
|
154
|
-
def type_literal_generic_trueclass(column)
|
155
|
-
:smallint
|
156
|
-
end
|
157
|
-
|
158
|
-
# CUBRID uses clob for text types.
|
159
|
-
def uses_clob_for_text?
|
160
|
-
true
|
161
|
-
end
|
162
|
-
|
163
|
-
# CUBRID supports views with check option, but not local.
|
164
|
-
def view_with_check_option_support
|
165
|
-
true
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
module DatasetMethods
|
170
|
-
include UnmodifiedIdentifiers::DatasetMethods
|
171
|
-
|
172
|
-
COMMA = ', '.freeze
|
173
|
-
Sequel::Deprecation.deprecate_constant(self, :COMMA)
|
174
|
-
LIMIT = " LIMIT ".freeze
|
175
|
-
Sequel::Deprecation.deprecate_constant(self, :LIMIT)
|
176
|
-
BOOL_FALSE = '0'.freeze
|
177
|
-
Sequel::Deprecation.deprecate_constant(self, :BOOL_FALSE)
|
178
|
-
BOOL_TRUE = '1'.freeze
|
179
|
-
Sequel::Deprecation.deprecate_constant(self, :BOOL_TRUE)
|
180
|
-
ONLY_OFFSET = ",4294967295".freeze
|
181
|
-
Sequel::Deprecation.deprecate_constant(self, :ONLY_OFFSET)
|
182
|
-
|
183
|
-
def supports_join_using?
|
184
|
-
false
|
185
|
-
end
|
186
|
-
|
187
|
-
def supports_multiple_column_in?
|
188
|
-
false
|
189
|
-
end
|
190
|
-
|
191
|
-
def supports_timestamp_usecs?
|
192
|
-
false
|
193
|
-
end
|
194
|
-
|
195
|
-
# CUBRID supposedly supports TRUNCATE, but it appears not to work in my testing.
|
196
|
-
# Fallback to using DELETE.
|
197
|
-
def truncate
|
198
|
-
delete
|
199
|
-
nil
|
200
|
-
end
|
201
|
-
|
202
|
-
private
|
203
|
-
|
204
|
-
def literal_false
|
205
|
-
'0'
|
206
|
-
end
|
207
|
-
|
208
|
-
def literal_true
|
209
|
-
'1'
|
210
|
-
end
|
211
|
-
|
212
|
-
# CUBRID supports multiple rows in INSERT.
|
213
|
-
def multi_insert_sql_strategy
|
214
|
-
:values
|
215
|
-
end
|
216
|
-
|
217
|
-
# CUBRID requires a limit to use an offset,
|
218
|
-
# and requires a FROM table if a limit is used.
|
219
|
-
def select_limit_sql(sql)
|
220
|
-
return unless @opts[:from]
|
221
|
-
l = @opts[:limit]
|
222
|
-
o = @opts[:offset]
|
223
|
-
if l || o
|
224
|
-
sql << " LIMIT "
|
225
|
-
if o
|
226
|
-
literal_append(sql, o)
|
227
|
-
if l
|
228
|
-
sql << ', '
|
229
|
-
literal_append(sql, l)
|
230
|
-
else
|
231
|
-
# Hope you don't have more than 2**32 + offset rows in your dataset
|
232
|
-
sql << ",4294967295"
|
233
|
-
end
|
234
|
-
else
|
235
|
-
literal_append(sql, l)
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
# CUBRID doesn't support FOR UPDATE.
|
241
|
-
def select_lock_sql(sql)
|
242
|
-
end
|
243
|
-
end
|
244
|
-
end
|
245
|
-
end
|