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,80 +0,0 @@
|
|
|
1
|
-
module Sequel
|
|
2
|
-
module Plugins
|
|
3
|
-
# Sequel's built in schema plugin allows you to define your schema
|
|
4
|
-
# directly in the model using Model.set_schema (which takes a block
|
|
5
|
-
# similar to Database#create_table), and use Model.create_table to
|
|
6
|
-
# create a table using the schema information.
|
|
7
|
-
#
|
|
8
|
-
# This plugin is mostly suited to test code. If there is any
|
|
9
|
-
# chance that your application's schema could change, you should
|
|
10
|
-
# be using the migration extension instead.
|
|
11
|
-
#
|
|
12
|
-
# Usage:
|
|
13
|
-
#
|
|
14
|
-
# # Add the schema methods to all model subclasses (called before loading subclasses)
|
|
15
|
-
# Sequel::Model.plugin :schema
|
|
16
|
-
#
|
|
17
|
-
# # Add the schema methods to the Album class
|
|
18
|
-
# Album.plugin :schema
|
|
19
|
-
module Schema
|
|
20
|
-
module ClassMethods
|
|
21
|
-
# Creates table, using the column information from set_schema.
|
|
22
|
-
def create_table(*args, &block)
|
|
23
|
-
set_schema(*args, &block) if block
|
|
24
|
-
db.create_table(table_name, :generator=>@schema)
|
|
25
|
-
@db_schema = get_db_schema(true)
|
|
26
|
-
columns
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Drops the table if it exists and then runs create_table. Should probably
|
|
30
|
-
# not be used except in testing.
|
|
31
|
-
def create_table!(*args, &block)
|
|
32
|
-
drop_table?
|
|
33
|
-
create_table(*args, &block)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Creates the table unless the table already exists
|
|
37
|
-
def create_table?(*args, &block)
|
|
38
|
-
create_table(*args, &block) unless table_exists?
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Drops table. If the table doesn't exist, this will probably raise an error.
|
|
42
|
-
def drop_table
|
|
43
|
-
db.drop_table(table_name)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Drops table if it already exists, do nothing if it doesn't exist.
|
|
47
|
-
def drop_table?
|
|
48
|
-
db.drop_table?(table_name)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Returns table schema created with set_schema for direct descendant of Model.
|
|
52
|
-
# Does not retreive schema information from the database, see db_schema if you
|
|
53
|
-
# want that.
|
|
54
|
-
def schema
|
|
55
|
-
@schema || (superclass.schema unless superclass == Model)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Defines a table schema (see Schema::Generator for more information).
|
|
59
|
-
#
|
|
60
|
-
# This is only needed if you want to use the create_table/create_table! methods.
|
|
61
|
-
# Will also set the dataset if you provide a name, as well as setting
|
|
62
|
-
# the primary key if you defined one in the passed block.
|
|
63
|
-
#
|
|
64
|
-
# In general, it is a better idea to use migrations for production code, as
|
|
65
|
-
# migrations allow changes to existing schema. set_schema is mostly useful for
|
|
66
|
-
# test code or simple examples.
|
|
67
|
-
def set_schema(name = nil, &block)
|
|
68
|
-
set_dataset(db[name]) if name
|
|
69
|
-
@schema = db.create_table_generator(&block)
|
|
70
|
-
set_primary_key(@schema.primary_key_name) if @schema.primary_key_name
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Returns true if table exists, false otherwise.
|
|
74
|
-
def table_exists?
|
|
75
|
-
db.table_exists?(table_name)
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module Sequel
|
|
2
|
-
module Plugins
|
|
3
|
-
# The scissors plugin adds class methods for update, delete, and destroy.
|
|
4
|
-
# It is so named because this is considered dangerous, since it is easy
|
|
5
|
-
# to write:
|
|
6
|
-
#
|
|
7
|
-
# Album.delete
|
|
8
|
-
#
|
|
9
|
-
# and delete all rows in the table, when you meant to write:
|
|
10
|
-
#
|
|
11
|
-
# album.delete
|
|
12
|
-
#
|
|
13
|
-
# and only delete a single row.
|
|
14
|
-
#
|
|
15
|
-
# This plugin is mostly useful for backwards compatibility, and not
|
|
16
|
-
# recommended for use in production. However, it can cut down on
|
|
17
|
-
# verbosity in non-transactional test code, so it may be appropriate
|
|
18
|
-
# to use when testing.
|
|
19
|
-
#
|
|
20
|
-
# Usage:
|
|
21
|
-
#
|
|
22
|
-
# # Make all model subclass run with scissors
|
|
23
|
-
# Sequel::Model.plugin :scissors
|
|
24
|
-
#
|
|
25
|
-
# # Make the Album class run with scissors
|
|
26
|
-
# Album.plugin :scissors
|
|
27
|
-
module Scissors
|
|
28
|
-
module ClassMethods
|
|
29
|
-
Plugins.def_dataset_methods(self, [:update, :delete, :destroy])
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
data/spec/adapters/db2_spec.rb
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
SEQUEL_ADAPTER_TEST = :db2
|
|
2
|
-
|
|
3
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
|
|
4
|
-
|
|
5
|
-
if DB.table_exists?(:test)
|
|
6
|
-
DB.drop_table(:test)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
describe Sequel::Database do
|
|
10
|
-
before do
|
|
11
|
-
@db = DB
|
|
12
|
-
@db.create_table(:test){String :a}
|
|
13
|
-
@ds = @db[:test]
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
after do
|
|
17
|
-
@db.drop_table(:test)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "should provide disconnect functionality after preparing a connection" do
|
|
21
|
-
@ds.prepare(:first, :a).call
|
|
22
|
-
@db.disconnect
|
|
23
|
-
@db.pool.size.must_equal 0
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "should return version correctly" do
|
|
27
|
-
@db.db2_version.must_match(/DB2 v/i)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
describe "Simple Dataset operations" do
|
|
32
|
-
before(:all) do
|
|
33
|
-
Sequel::DB2.use_clob_as_blob = true
|
|
34
|
-
DB.create_table!(:items) do
|
|
35
|
-
Integer :id, :primary_key => true
|
|
36
|
-
Integer :number
|
|
37
|
-
column :bin_string, 'varchar(20) for bit data'
|
|
38
|
-
column :bin_clob, 'clob'
|
|
39
|
-
end
|
|
40
|
-
@ds = DB[:items]
|
|
41
|
-
end
|
|
42
|
-
after(:each) do
|
|
43
|
-
@ds.delete
|
|
44
|
-
end
|
|
45
|
-
after(:all) do
|
|
46
|
-
Sequel::DB2.use_clob_as_blob = false
|
|
47
|
-
DB.drop_table(:items)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "should insert with a primary key specified" do
|
|
51
|
-
@ds.insert(:id => 1, :number => 10)
|
|
52
|
-
@ds.insert(:id => 100, :number => 20)
|
|
53
|
-
@ds.select_hash(:id, :number).must_equal(1 => 10, 100 => 20)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it "should insert into binary columns" do
|
|
57
|
-
@ds.insert(:id => 1, :bin_string => Sequel.blob("\1"), :bin_clob => Sequel.blob("\2"))
|
|
58
|
-
@ds.select(:bin_string, :bin_clob).first.must_equal(:bin_string => "\1", :bin_clob => "\2")
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
describe Sequel::Database do
|
|
63
|
-
before do
|
|
64
|
-
@db = DB
|
|
65
|
-
end
|
|
66
|
-
after do
|
|
67
|
-
@db.drop_table(:items)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "should parse primary keys from the schema properly" do
|
|
71
|
-
@db.create_table!(:items){Integer :number}
|
|
72
|
-
@db.schema(:items).collect{|k,v| k if v[:primary_key]}.compact.must_equal []
|
|
73
|
-
@db.create_table!(:items){primary_key :number}
|
|
74
|
-
@db.schema(:items).collect{|k,v| k if v[:primary_key]}.compact.must_equal [:number]
|
|
75
|
-
@db.create_table!(:items){Integer :number1, :null => false; Integer :number2, :null => false; primary_key [:number1, :number2]}
|
|
76
|
-
@db.schema(:items).collect{|k,v| k if v[:primary_key]}.compact.must_equal [:number1, :number2]
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "should not error on alter_table operations that need REORG" do
|
|
80
|
-
@db.create_table!(:items) do
|
|
81
|
-
varchar :a
|
|
82
|
-
end
|
|
83
|
-
@db.alter_table(:items) do
|
|
84
|
-
add_column :b, :varchar, :null => true
|
|
85
|
-
set_column_allow_null :a, false
|
|
86
|
-
add_index :a, :unique => true
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
describe "Sequel::IBMDB.convert_smallint_to_bool" do
|
|
92
|
-
before do
|
|
93
|
-
@db = DB
|
|
94
|
-
@db.create_table!(:booltest){column :b, 'smallint'; column :i, 'integer'}
|
|
95
|
-
@ds = @db[:booltest]
|
|
96
|
-
end
|
|
97
|
-
after do
|
|
98
|
-
Sequel::IBMDB.convert_smallint_to_bool = true
|
|
99
|
-
@db.drop_table(:booltest)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
it "should consider smallint datatypes as boolean if set, but not larger smallints" do
|
|
103
|
-
@db.schema(:booltest, :reload=>true).first.last[:type].must_equal :boolean
|
|
104
|
-
@db.schema(:booltest, :reload=>true).first.last[:db_type].must_match /smallint/i
|
|
105
|
-
Sequel::IBMDB.convert_smallint_to_bool = false
|
|
106
|
-
@db.schema(:booltest, :reload=>true).first.last[:type].must_equal :integer
|
|
107
|
-
@db.schema(:booltest, :reload=>true).first.last[:db_type].must_match /smallint/i
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
it "should return smallints as bools and integers as integers when set" do
|
|
111
|
-
Sequel::IBMDB.convert_smallint_to_bool = true
|
|
112
|
-
@ds.delete
|
|
113
|
-
@ds << {:b=>true, :i=>10}
|
|
114
|
-
@ds.all.must_equal [{:b=>true, :i=>10}]
|
|
115
|
-
@ds.delete
|
|
116
|
-
@ds << {:b=>false, :i=>0}
|
|
117
|
-
@ds.all.must_equal [{:b=>false, :i=>0}]
|
|
118
|
-
@ds.delete
|
|
119
|
-
@ds << {:b=>true, :i=>1}
|
|
120
|
-
@ds.all.must_equal [{:b=>true, :i=>1}]
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it "should return all smallints as integers when unset" do
|
|
124
|
-
Sequel::IBMDB.convert_smallint_to_bool = false
|
|
125
|
-
@ds.delete
|
|
126
|
-
@ds << {:b=>true, :i=>10}
|
|
127
|
-
@ds.all.must_equal [{:b=>1, :i=>10}]
|
|
128
|
-
@ds.delete
|
|
129
|
-
@ds << {:b=>false, :i=>0}
|
|
130
|
-
@ds.all.must_equal [{:b=>0, :i=>0}]
|
|
131
|
-
|
|
132
|
-
@ds.delete
|
|
133
|
-
@ds << {:b=>1, :i=>10}
|
|
134
|
-
@ds.all.must_equal [{:b=>1, :i=>10}]
|
|
135
|
-
@ds.delete
|
|
136
|
-
@ds << {:b=>0, :i=>0}
|
|
137
|
-
@ds.all.must_equal [{:b=>0, :i=>0}]
|
|
138
|
-
end
|
|
139
|
-
end if DB.adapter_scheme == :ibmdb
|
|
140
|
-
|
|
141
|
-
describe "Simple Dataset operations in transactions" do
|
|
142
|
-
before do
|
|
143
|
-
DB.create_table!(:items_insert_in_transaction) do
|
|
144
|
-
Integer :id, :primary_key => true
|
|
145
|
-
integer :number
|
|
146
|
-
end
|
|
147
|
-
@ds = DB[:items_insert_in_transaction]
|
|
148
|
-
end
|
|
149
|
-
after do
|
|
150
|
-
DB.drop_table(:items_insert_in_transaction)
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
it "should insert correctly with a primary key specified inside a transaction" do
|
|
154
|
-
DB.transaction do
|
|
155
|
-
@ds.insert(:id=>100, :number=>20)
|
|
156
|
-
@ds.count.must_equal 1
|
|
157
|
-
@ds.order(:id).all.must_equal [{:id=>100, :number=>20}]
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
end
|
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
SEQUEL_ADAPTER_TEST = :firebird
|
|
2
|
-
|
|
3
|
-
require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper.rb')
|
|
4
|
-
|
|
5
|
-
def DB.sqls
|
|
6
|
-
(@sqls ||= [])
|
|
7
|
-
end
|
|
8
|
-
logger = Object.new
|
|
9
|
-
def logger.method_missing(m, msg)
|
|
10
|
-
DB.sqls.push(msg)
|
|
11
|
-
end
|
|
12
|
-
DB.loggers = [logger]
|
|
13
|
-
|
|
14
|
-
DB.create_table! :test do
|
|
15
|
-
varchar :name, :size => 50
|
|
16
|
-
integer :val, :index => true
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
DB.create_table! :test2 do
|
|
20
|
-
integer :val
|
|
21
|
-
timestamp :time_stamp
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
DB.create_table! :test3 do
|
|
25
|
-
integer :val
|
|
26
|
-
timestamp :time_stamp
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
DB.create_table! :test5 do
|
|
30
|
-
primary_key :xid
|
|
31
|
-
integer :val
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
DB.create_table! :test6 do
|
|
35
|
-
primary_key :xid
|
|
36
|
-
blob :val
|
|
37
|
-
String :val2
|
|
38
|
-
varchar :val3, :size=>200
|
|
39
|
-
String :val4, :text=>true
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
describe "A Firebird database" do
|
|
43
|
-
before do
|
|
44
|
-
@db = DB
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it "should provide disconnect functionality" do
|
|
48
|
-
@db.tables
|
|
49
|
-
@db.pool.size.must_equal 1
|
|
50
|
-
@db.disconnect
|
|
51
|
-
@db.pool.size.must_equal 0
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it "should raise Sequel::Error on error" do
|
|
55
|
-
proc{@db << "SELECT 1 + 'a'"}.must_raise(Sequel::Error)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
describe "A Firebird dataset" do
|
|
60
|
-
before do
|
|
61
|
-
@d = DB[:test]
|
|
62
|
-
@d.delete # remove all records
|
|
63
|
-
@d.quote_identifiers = true
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it "should return the correct record count" do
|
|
67
|
-
@d.count.must_equal 0
|
|
68
|
-
@d << {:name => 'abc', :val => 123}
|
|
69
|
-
@d << {:name => 'abc', :val => 456}
|
|
70
|
-
@d << {:name => 'def', :val => 789}
|
|
71
|
-
@d.count.must_equal 3
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "should return the correct records" do
|
|
75
|
-
@d.to_a.must_equal []
|
|
76
|
-
@d << {:name => 'abc', :val => 123}
|
|
77
|
-
@d << {:name => 'abc', :val => 456}
|
|
78
|
-
@d << {:name => 'def', :val => 789}
|
|
79
|
-
|
|
80
|
-
@d.order(:val).to_a.must_equal [
|
|
81
|
-
{:name => 'abc', :val => 123},
|
|
82
|
-
{:name => 'abc', :val => 456},
|
|
83
|
-
{:name => 'def', :val => 789}
|
|
84
|
-
]
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
it "should update records correctly" do
|
|
88
|
-
@d << {:name => 'abc', :val => 123}
|
|
89
|
-
@d << {:name => 'abc', :val => 456}
|
|
90
|
-
@d << {:name => 'def', :val => 789}
|
|
91
|
-
@d.filter(:name => 'abc').update(:val => 530)
|
|
92
|
-
|
|
93
|
-
# the third record should stay the same
|
|
94
|
-
# floating-point precision bullshit
|
|
95
|
-
@d[:name => 'def'][:val].must_equal 789
|
|
96
|
-
@d.filter(:val => 530).count.must_equal 2
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it "should delete records correctly" do
|
|
100
|
-
@d << {:name => 'abc', :val => 123}
|
|
101
|
-
@d << {:name => 'abc', :val => 456}
|
|
102
|
-
@d << {:name => 'def', :val => 789}
|
|
103
|
-
@d.filter(:name => 'abc').delete
|
|
104
|
-
|
|
105
|
-
@d.count.must_equal 1
|
|
106
|
-
@d.first[:name].must_equal 'def'
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
it "should be able to literalize booleans" do
|
|
110
|
-
@d.literal(true)
|
|
111
|
-
@d.literal(false)
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
it "should quote columns and tables using double quotes if quoting identifiers" do
|
|
115
|
-
@d.quote_identifiers = true
|
|
116
|
-
@d.select(:name).sql.must_equal \
|
|
117
|
-
'SELECT "NAME" FROM "TEST"'
|
|
118
|
-
|
|
119
|
-
@d.select('COUNT(*)'.lit).sql.must_equal \
|
|
120
|
-
'SELECT COUNT(*) FROM "TEST"'
|
|
121
|
-
|
|
122
|
-
@d.select(:max[:val]).sql.must_equal \
|
|
123
|
-
'SELECT max("VAL") FROM "TEST"'
|
|
124
|
-
|
|
125
|
-
@d.select(:now[]).sql.must_equal \
|
|
126
|
-
'SELECT now() FROM "TEST"'
|
|
127
|
-
|
|
128
|
-
@d.select(:max[:items__val]).sql.must_equal \
|
|
129
|
-
'SELECT max("ITEMS"."VAL") FROM "TEST"'
|
|
130
|
-
|
|
131
|
-
@d.order(:name.desc).sql.must_equal \
|
|
132
|
-
'SELECT * FROM "TEST" ORDER BY "NAME" DESC'
|
|
133
|
-
|
|
134
|
-
@d.select('TEST.NAME AS item_:name'.lit).sql.must_equal \
|
|
135
|
-
'SELECT TEST.NAME AS item_:name FROM "TEST"'
|
|
136
|
-
|
|
137
|
-
@d.select('"NAME"'.lit).sql.must_equal \
|
|
138
|
-
'SELECT "NAME" FROM "TEST"'
|
|
139
|
-
|
|
140
|
-
@d.select('max(TEST."NAME") AS "max_:name"'.lit).sql.must_equal \
|
|
141
|
-
'SELECT max(TEST."NAME") AS "max_:name" FROM "TEST"'
|
|
142
|
-
|
|
143
|
-
@d.select(:test[:ABC, 'hello']).sql.must_equal \
|
|
144
|
-
"SELECT test(\"ABC\", 'hello') FROM \"TEST\""
|
|
145
|
-
|
|
146
|
-
@d.select(:test[:ABC__DEF, 'hello']).sql.must_equal \
|
|
147
|
-
"SELECT test(\"ABC\".\"DEF\", 'hello') FROM \"TEST\""
|
|
148
|
-
|
|
149
|
-
@d.select(:test[:ABC__DEF, 'hello'].as(:X2)).sql.must_equal \
|
|
150
|
-
"SELECT test(\"ABC\".\"DEF\", 'hello') AS \"X2\" FROM \"TEST\""
|
|
151
|
-
|
|
152
|
-
@d.insert_sql(:val => 333).must_match \
|
|
153
|
-
/\AINSERT INTO "TEST" \("VAL"\) VALUES \(333\)( RETURNING NULL)?\z/
|
|
154
|
-
|
|
155
|
-
@d.insert_sql(:X => :Y).must_match \
|
|
156
|
-
/\AINSERT INTO "TEST" \("X"\) VALUES \("Y"\)( RETURNING NULL)?\z/
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
it "should quote fields correctly when reversing the order if quoting identifiers" do
|
|
160
|
-
@d.quote_identifiers = true
|
|
161
|
-
@d.reverse_order(:name).sql.must_equal \
|
|
162
|
-
'SELECT * FROM "TEST" ORDER BY "NAME" DESC'
|
|
163
|
-
|
|
164
|
-
@d.reverse_order(:name.desc).sql.must_equal \
|
|
165
|
-
'SELECT * FROM "TEST" ORDER BY "NAME" ASC'
|
|
166
|
-
|
|
167
|
-
@d.reverse_order(:name, :test.desc).sql.must_equal \
|
|
168
|
-
'SELECT * FROM "TEST" ORDER BY "NAME" DESC, "TEST" ASC'
|
|
169
|
-
|
|
170
|
-
@d.reverse_order(:name.desc, :test).sql.must_equal \
|
|
171
|
-
'SELECT * FROM "TEST" ORDER BY "NAME" ASC, "TEST" DESC'
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
it "should support transactions" do
|
|
175
|
-
DB.transaction do
|
|
176
|
-
@d << {:name => 'abc', :val => 1}
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
@d.count.must_equal 1
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
it "should have #transaction yield the connection" do
|
|
183
|
-
DB.transaction do |conn|
|
|
184
|
-
conn.wont_equal nil
|
|
185
|
-
end
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
it "should correctly rollback transactions" do
|
|
189
|
-
proc do
|
|
190
|
-
DB.transaction do
|
|
191
|
-
@d << {:name => 'abc', :val => 1}
|
|
192
|
-
raise RuntimeError, 'asdf'
|
|
193
|
-
end
|
|
194
|
-
end.must_raise(RuntimeError)
|
|
195
|
-
|
|
196
|
-
@d.count.must_equal 0
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
it "should handle returning inside of the block by committing" do
|
|
200
|
-
def DB.ret_commit
|
|
201
|
-
transaction do
|
|
202
|
-
self[:test] << {:name => 'abc'}
|
|
203
|
-
return
|
|
204
|
-
self[:test] << {:name => 'd'}
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
@d.count.must_equal 0
|
|
208
|
-
DB.ret_commit
|
|
209
|
-
@d.count.must_equal 1
|
|
210
|
-
DB.ret_commit
|
|
211
|
-
@d.count.must_equal 2
|
|
212
|
-
proc do
|
|
213
|
-
DB.transaction do
|
|
214
|
-
raise RuntimeError, 'asdf'
|
|
215
|
-
end
|
|
216
|
-
end.must_raise(RuntimeError)
|
|
217
|
-
|
|
218
|
-
@d.count.must_equal 2
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
it "should quote and upcase reserved keywords" do
|
|
222
|
-
@d = DB[:testing]
|
|
223
|
-
@d.quote_identifiers = true
|
|
224
|
-
@d.select(:select).sql.must_equal \
|
|
225
|
-
'SELECT "SELECT" FROM "TESTING"'
|
|
226
|
-
end
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
describe "A Firebird dataset with a timestamp field" do
|
|
230
|
-
before do
|
|
231
|
-
@d = DB[:test3]
|
|
232
|
-
@d.delete
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
it "should store milliseconds in time fields" do
|
|
236
|
-
t = Time.now
|
|
237
|
-
@d << {:val=>1, :time_stamp=>t}
|
|
238
|
-
@d.literal(@d[:val =>'1'][:time_stamp]).must_equal @d.literal(t)
|
|
239
|
-
@d[:val=>'1'][:time_stamp].usec.must_equal t.usec - t.usec % 100
|
|
240
|
-
end
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
describe "A Firebird database" do
|
|
244
|
-
before do
|
|
245
|
-
@db = DB
|
|
246
|
-
@db.drop_table?(:posts)
|
|
247
|
-
@db.sqls.clear
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
it "should allow us to name the sequences" do
|
|
251
|
-
@db.create_table(:posts){primary_key :id, :sequence_name => "seq_test"}
|
|
252
|
-
check_sqls do
|
|
253
|
-
@db.sqls.must_equal [
|
|
254
|
-
"DROP SEQUENCE SEQ_TEST",
|
|
255
|
-
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
|
|
256
|
-
"CREATE SEQUENCE SEQ_TEST",
|
|
257
|
-
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_test;\n end\n end\n\n"
|
|
258
|
-
]
|
|
259
|
-
end
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
it "should allow us to set the starting position for the sequences" do
|
|
263
|
-
@db.create_table(:posts){primary_key :id, :sequence_start_position => 999}
|
|
264
|
-
check_sqls do
|
|
265
|
-
@db.sqls.must_equal [
|
|
266
|
-
"DROP SEQUENCE SEQ_POSTS_ID",
|
|
267
|
-
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
|
|
268
|
-
"CREATE SEQUENCE SEQ_POSTS_ID",
|
|
269
|
-
"ALTER SEQUENCE SEQ_POSTS_ID RESTART WITH 999",
|
|
270
|
-
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
|
|
271
|
-
]
|
|
272
|
-
end
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
it "should allow us to name and set the starting position for the sequences" do
|
|
276
|
-
@db.create_table(:posts){primary_key :id, :sequence_name => "seq_test", :sequence_start_position => 999}
|
|
277
|
-
check_sqls do
|
|
278
|
-
@db.sqls.must_equal [
|
|
279
|
-
"DROP SEQUENCE SEQ_TEST",
|
|
280
|
-
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
|
|
281
|
-
"CREATE SEQUENCE SEQ_TEST",
|
|
282
|
-
"ALTER SEQUENCE SEQ_TEST RESTART WITH 999",
|
|
283
|
-
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_test;\n end\n end\n\n"
|
|
284
|
-
]
|
|
285
|
-
end
|
|
286
|
-
end
|
|
287
|
-
|
|
288
|
-
it "should allow us to name the triggers" do
|
|
289
|
-
@db.create_table(:posts){primary_key :id, :trigger_name => "trig_test"}
|
|
290
|
-
check_sqls do
|
|
291
|
-
@db.sqls.must_equal [
|
|
292
|
-
"DROP SEQUENCE SEQ_POSTS_ID",
|
|
293
|
-
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
|
|
294
|
-
"CREATE SEQUENCE SEQ_POSTS_ID",
|
|
295
|
-
" CREATE TRIGGER TRIG_TEST for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
|
|
296
|
-
]
|
|
297
|
-
end
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
it "should allow us to not create the sequence" do
|
|
301
|
-
@db.create_table(:posts){primary_key :id, :create_sequence => false}
|
|
302
|
-
check_sqls do
|
|
303
|
-
@db.sqls.must_equal [
|
|
304
|
-
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
|
|
305
|
-
" CREATE TRIGGER BI_POSTS_ID for POSTS\n ACTIVE BEFORE INSERT position 0\n as begin\n if ((new.ID is null) or (new.ID = 0)) then\n begin\n new.ID = next value for seq_posts_id;\n end\n end\n\n"
|
|
306
|
-
]
|
|
307
|
-
end
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
it "should allow us to not create the trigger" do
|
|
311
|
-
@db.create_table(:posts){primary_key :id, :create_trigger => false}
|
|
312
|
-
check_sqls do
|
|
313
|
-
@db.sqls.must_equal [
|
|
314
|
-
"DROP SEQUENCE SEQ_POSTS_ID",
|
|
315
|
-
"CREATE TABLE POSTS (ID integer PRIMARY KEY )",
|
|
316
|
-
"CREATE SEQUENCE SEQ_POSTS_ID",
|
|
317
|
-
]
|
|
318
|
-
end
|
|
319
|
-
end
|
|
320
|
-
|
|
321
|
-
it "should allow us to not create either the sequence nor the trigger" do
|
|
322
|
-
@db.create_table(:posts){primary_key :id, :create_sequence => false, :create_trigger => false}
|
|
323
|
-
check_sqls do
|
|
324
|
-
@db.sqls.must_equal [
|
|
325
|
-
"CREATE TABLE POSTS (ID integer PRIMARY KEY )"
|
|
326
|
-
]
|
|
327
|
-
end
|
|
328
|
-
end
|
|
329
|
-
|
|
330
|
-
it "should support column operations" do
|
|
331
|
-
@db.create_table!(:test2){varchar :name, :size => 50; integer :val}
|
|
332
|
-
@db[:test2] << {}
|
|
333
|
-
@db[:test2].columns.must_equal [:name, :val]
|
|
334
|
-
|
|
335
|
-
@db.add_column :test2, :xyz, :varchar, :size => 50
|
|
336
|
-
@db[:test2].columns.must_equal [:name, :val, :xyz]
|
|
337
|
-
|
|
338
|
-
@db[:test2].columns.must_equal [:name, :val, :xyz]
|
|
339
|
-
@db.drop_column :test2, :xyz
|
|
340
|
-
|
|
341
|
-
@db[:test2].columns.must_equal [:name, :val]
|
|
342
|
-
|
|
343
|
-
@db[:test2].delete
|
|
344
|
-
@db.add_column :test2, :xyz, :varchar, :default => '000', :size => 50#, :create_domain => 'xyz_varchar'
|
|
345
|
-
@db[:test2] << {:name => 'mmm', :val => 111, :xyz => 'qqqq'}
|
|
346
|
-
|
|
347
|
-
@db[:test2].columns.must_equal [:name, :val, :xyz]
|
|
348
|
-
@db.rename_column :test2, :xyz, :zyx
|
|
349
|
-
@db[:test2].columns.must_equal [:name, :val, :zyx]
|
|
350
|
-
@db[:test2].first[:zyx].must_equal 'qqqq'
|
|
351
|
-
|
|
352
|
-
@db.add_column :test2, :xyz, :decimal, :elements => [12, 2]
|
|
353
|
-
@db[:test2].delete
|
|
354
|
-
@db[:test2] << {:name => 'mmm', :val => 111, :xyz => 56.4}
|
|
355
|
-
@db.set_column_type :test2, :xyz, :varchar, :size => 50
|
|
356
|
-
|
|
357
|
-
@db[:test2].first[:xyz].must_equal "56.40"
|
|
358
|
-
end
|
|
359
|
-
|
|
360
|
-
it "should allow us to retrieve the primary key for a table" do
|
|
361
|
-
@db.create_table!(:test2){primary_key :id}
|
|
362
|
-
@db.primary_key(:test2).must_equal ["id"]
|
|
363
|
-
end
|
|
364
|
-
end
|
|
365
|
-
|
|
366
|
-
describe "Postgres::Dataset#insert" do
|
|
367
|
-
before do
|
|
368
|
-
@ds = DB[:test5]
|
|
369
|
-
@ds.delete
|
|
370
|
-
end
|
|
371
|
-
|
|
372
|
-
it "should have insert_returning_sql use the RETURNING keyword" do
|
|
373
|
-
@ds.insert_returning_sql(:XID, :val=>10).must_equal "INSERT INTO TEST5 (VAL) VALUES (10) RETURNING XID"
|
|
374
|
-
@ds.insert_returning_sql('*'.lit, :val=>10).must_equal "INSERT INTO TEST5 (VAL) VALUES (10) RETURNING *"
|
|
375
|
-
@ds.insert_returning_sql('NULL'.lit, :val=>10).must_equal "INSERT INTO TEST5 (VAL) VALUES (10) RETURNING NULL"
|
|
376
|
-
end
|
|
377
|
-
|
|
378
|
-
it "should correctly return the inserted record's primary key value" do
|
|
379
|
-
value1 = 10
|
|
380
|
-
id1 = @ds.insert(:val=>value1)
|
|
381
|
-
@ds.first(:XID=>id1)[:val].must_equal value1
|
|
382
|
-
value2 = 20
|
|
383
|
-
id2 = @ds.insert(:val=>value2)
|
|
384
|
-
@ds.first(:XID=>id2)[:val].must_equal value2
|
|
385
|
-
end
|
|
386
|
-
|
|
387
|
-
it "should return nil if the table has no primary key" do
|
|
388
|
-
ds = DB[:test]
|
|
389
|
-
ds.delete
|
|
390
|
-
ds.insert(:name=>'a').must_equal nil
|
|
391
|
-
end
|
|
392
|
-
end
|
|
393
|
-
|
|
394
|
-
describe "Postgres::Dataset#insert" do
|
|
395
|
-
before do
|
|
396
|
-
@ds = DB[:test6]
|
|
397
|
-
@ds.delete
|
|
398
|
-
end
|
|
399
|
-
|
|
400
|
-
it "should insert and retrieve a blob successfully" do
|
|
401
|
-
value1 = "\1\2\2\2\2222\2\2\2"
|
|
402
|
-
value2 = "abcd"
|
|
403
|
-
value3 = "efgh"
|
|
404
|
-
value4 = "ijkl"
|
|
405
|
-
id1 = @ds.insert(:val=>value1, :val2=>value2, :val3=>value3, :val4=>value4)
|
|
406
|
-
@ds.first(:XID=>id1)[:val].must_equal value1
|
|
407
|
-
@ds.first(:XID=>id1)[:val2].must_equal value2
|
|
408
|
-
@ds.first(:XID=>id1)[:val3].must_equal value3
|
|
409
|
-
@ds.first(:XID=>id1)[:val4].must_equal value4
|
|
410
|
-
end
|
|
411
|
-
end
|