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,45 +0,0 @@
|
|
|
1
|
-
require 'swift/db/postgres'
|
|
2
|
-
Sequel.require 'adapters/shared/postgres'
|
|
3
|
-
|
|
4
|
-
module Sequel
|
|
5
|
-
Postgres::CONVERTED_EXCEPTIONS << ::Swift::Error
|
|
6
|
-
|
|
7
|
-
module Swift
|
|
8
|
-
# Adapter, Database, and Dataset support for accessing a PostgreSQL
|
|
9
|
-
# database via Swift.
|
|
10
|
-
module Postgres
|
|
11
|
-
# Methods to add to Database instances that access PostgreSQL via Swift.
|
|
12
|
-
module DatabaseMethods
|
|
13
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
14
|
-
include Sequel::Postgres::DatabaseMethods
|
|
15
|
-
|
|
16
|
-
# Add the primary_keys and primary_key_sequences instance variables,
|
|
17
|
-
# so we can get the correct return values for inserted rows.
|
|
18
|
-
def self.extended(db)
|
|
19
|
-
super
|
|
20
|
-
db.send(:initialize_postgres_adapter)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
private
|
|
24
|
-
|
|
25
|
-
# Remove all other options except for ones specifically handled, as
|
|
26
|
-
# otherwise swift passes them to dbic++ which passes them to PostgreSQL
|
|
27
|
-
# which can raise an error.
|
|
28
|
-
def server_opts(o)
|
|
29
|
-
o = super
|
|
30
|
-
so = {}
|
|
31
|
-
[:db, :user, :password, :host, :port].each{|s| so[s] = o[s] if o.has_key?(s)}
|
|
32
|
-
so
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Extend the adapter with the Swift PostgreSQL AdapterMethods.
|
|
36
|
-
def setup_connection(conn)
|
|
37
|
-
conn = super(conn)
|
|
38
|
-
conn.native_bind_format = true
|
|
39
|
-
connection_configuration_sqls.each{|sql| log_yield(sql){conn.execute(sql)}}
|
|
40
|
-
conn
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
require 'swift/db/sqlite3'
|
|
2
|
-
Sequel.require 'adapters/shared/sqlite'
|
|
3
|
-
|
|
4
|
-
module Sequel
|
|
5
|
-
module Swift
|
|
6
|
-
# Database and Dataset instance methods for SQLite specific
|
|
7
|
-
# support via Swift.
|
|
8
|
-
module SQLite
|
|
9
|
-
# Database instance methods for SQLite databases accessed via Swift.
|
|
10
|
-
module DatabaseMethods
|
|
11
|
-
extend Sequel::Database::ResetIdentifierMangling
|
|
12
|
-
include Sequel::SQLite::DatabaseMethods
|
|
13
|
-
|
|
14
|
-
DATABASE_ERROR_REGEXPS = {
|
|
15
|
-
/\AUNIQUE constraint failed: / => UniqueConstraintViolation,
|
|
16
|
-
/\AFOREIGN KEY constraint failed/ => ForeignKeyConstraintViolation,
|
|
17
|
-
/\ACHECK constraint failed/ => CheckConstraintViolation,
|
|
18
|
-
/\A(SQLITE ERROR 19 \(CONSTRAINT\) : )?constraint failed/ => ConstraintViolation,
|
|
19
|
-
/may not be NULL\z|NOT NULL constraint failed: .+/ => NotNullConstraintViolation,
|
|
20
|
-
/\ASQLITE ERROR \d+ \(\) : CHECK constraint failed: / => CheckConstraintViolation
|
|
21
|
-
}.freeze
|
|
22
|
-
def database_error_regexps
|
|
23
|
-
DATABASE_ERROR_REGEXPS
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Set the correct pragmas on the connection.
|
|
27
|
-
def connect(opts)
|
|
28
|
-
c = super
|
|
29
|
-
connection_pragmas.each{|s| log_yield(s){c.execute(s)}}
|
|
30
|
-
c
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Dataset class for SQLite datasets accessed via Swift.
|
|
35
|
-
class Dataset < Swift::Dataset
|
|
36
|
-
include Sequel::SQLite::DatasetMethods
|
|
37
|
-
|
|
38
|
-
private
|
|
39
|
-
|
|
40
|
-
# Use Swift's escape method for quoting.
|
|
41
|
-
def literal_string_append(sql, s)
|
|
42
|
-
sql << APOS << db.synchronize(@opts[:server]){|c| c.escape(s)} << APOS
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
module Sequel
|
|
2
|
-
module Postgres
|
|
3
|
-
NAN = 0.0/0.0
|
|
4
|
-
PLUS_INFINITY = 1.0/0.0
|
|
5
|
-
MINUS_INFINITY = -1.0/0.0
|
|
6
|
-
NAN_STR = 'NaN'.freeze
|
|
7
|
-
PLUS_INFINITY_STR = 'Infinity'.freeze
|
|
8
|
-
MINUS_INFINITY_STR = '-Infinity'.freeze
|
|
9
|
-
TRUE_STR = 't'.freeze
|
|
10
|
-
DASH_STR = '-'.freeze
|
|
11
|
-
|
|
12
|
-
TYPE_TRANSLATOR = tt = Class.new do
|
|
13
|
-
def boolean(s) s == TRUE_STR end
|
|
14
|
-
def integer(s) s.to_i end
|
|
15
|
-
def float(s)
|
|
16
|
-
case s
|
|
17
|
-
when NAN_STR
|
|
18
|
-
NAN
|
|
19
|
-
when PLUS_INFINITY_STR
|
|
20
|
-
PLUS_INFINITY
|
|
21
|
-
when MINUS_INFINITY_STR
|
|
22
|
-
MINUS_INFINITY
|
|
23
|
-
else
|
|
24
|
-
s.to_f
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
def date(s) ::Date.new(*s.split(DASH_STR).map(&:to_i)) end
|
|
28
|
-
def bytea(str)
|
|
29
|
-
str = if str =~ /\A\\x/
|
|
30
|
-
# PostgreSQL 9.0+ bytea hex format
|
|
31
|
-
str[2..-1].gsub(/(..)/){|s| s.to_i(16).chr}
|
|
32
|
-
else
|
|
33
|
-
# Historical PostgreSQL bytea escape format
|
|
34
|
-
str.gsub(/\\(\\|'|[0-3][0-7][0-7])/) {|s|
|
|
35
|
-
if s.size == 2 then s[1,1] else s[1,3].oct.chr end
|
|
36
|
-
}
|
|
37
|
-
end
|
|
38
|
-
::Sequel::SQL::Blob.new(str)
|
|
39
|
-
end
|
|
40
|
-
end.new
|
|
41
|
-
|
|
42
|
-
# Type OIDs for string types used by PostgreSQL. These types don't
|
|
43
|
-
# have conversion procs associated with them (since the data is
|
|
44
|
-
# already in the form of a string).
|
|
45
|
-
STRING_TYPES = [18, 19, 25, 1042, 1043]
|
|
46
|
-
|
|
47
|
-
# Hash with type name strings/symbols and callable values for converting PostgreSQL types.
|
|
48
|
-
# Non-builtin types that don't have fixed numbers should use this to register
|
|
49
|
-
# conversion procs.
|
|
50
|
-
PG_NAMED_TYPES = {} unless defined?(PG_NAMED_TYPES)
|
|
51
|
-
|
|
52
|
-
# Hash with integer keys and callable values for converting PostgreSQL types.
|
|
53
|
-
PG_TYPES = {} unless defined?(PG_TYPES)
|
|
54
|
-
|
|
55
|
-
{
|
|
56
|
-
[16] => tt.method(:boolean),
|
|
57
|
-
[17] => tt.method(:bytea),
|
|
58
|
-
[20, 21, 23, 26] => tt.method(:integer),
|
|
59
|
-
[700, 701] => tt.method(:float),
|
|
60
|
-
[1700] => ::BigDecimal.method(:new),
|
|
61
|
-
[1083, 1266] => ::Sequel.method(:string_to_time),
|
|
62
|
-
[1082] => ::Sequel.method(:string_to_date),
|
|
63
|
-
[1184, 1114] => ::Sequel.method(:database_to_application_timestamp),
|
|
64
|
-
}.each do |k,v|
|
|
65
|
-
k.each{|n| PG_TYPES[n] = v}
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
module Sequel
|
|
2
|
-
class Dataset
|
|
3
|
-
# ---------------------
|
|
4
|
-
# :section: 7 - Mutation methods
|
|
5
|
-
# These methods modify the receiving dataset and should be used with care.
|
|
6
|
-
# ---------------------
|
|
7
|
-
|
|
8
|
-
# All methods that should have a ! method added that modifies the receiver.
|
|
9
|
-
MUTATION_METHODS = QUERY_METHODS - [:naked, :from_self]
|
|
10
|
-
|
|
11
|
-
# Setup mutation (e.g. filter!) methods. These operate the same as the
|
|
12
|
-
# non-! methods, but replace the options of the current dataset with the
|
|
13
|
-
# options of the resulting dataset.
|
|
14
|
-
#
|
|
15
|
-
# Do not call this method with untrusted input, as that can result in
|
|
16
|
-
# arbitrary code execution.
|
|
17
|
-
def self.def_mutation_method(*meths)
|
|
18
|
-
options = meths.pop if meths.last.is_a?(Hash)
|
|
19
|
-
mod = options[:module] if options
|
|
20
|
-
mod ||= self
|
|
21
|
-
meths.each do |meth|
|
|
22
|
-
mod.class_eval("def #{meth}!(*args, &block); mutation_method(:#{meth}, *args, &block) end", __FILE__, __LINE__)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Add the mutation methods via metaprogramming
|
|
27
|
-
def_mutation_method(*MUTATION_METHODS)
|
|
28
|
-
|
|
29
|
-
# The row_proc for this database, should be any object that responds to +call+ with
|
|
30
|
-
# a single hash argument and returns the object you want #each to return.
|
|
31
|
-
attr_reader :row_proc
|
|
32
|
-
|
|
33
|
-
# Load an extension into the receiver. In addition to requiring the extension file, this
|
|
34
|
-
# also modifies the dataset to work with the extension (usually extending it with a
|
|
35
|
-
# module defined in the extension file). If no related extension file exists or the
|
|
36
|
-
# extension does not have specific support for Database objects, an Error will be raised.
|
|
37
|
-
# Returns self.
|
|
38
|
-
def extension!(*exts)
|
|
39
|
-
raise_if_frozen!
|
|
40
|
-
Sequel.extension(*exts)
|
|
41
|
-
exts.each do |ext|
|
|
42
|
-
if pr = Sequel.synchronize{EXTENSIONS[ext]}
|
|
43
|
-
pr.call(self)
|
|
44
|
-
else
|
|
45
|
-
raise(Error, "Extension #{ext} does not have specific support handling individual datasets (try: Sequel.extension #{ext.inspect})")
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
self
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Avoid self-referential dataset by cloning.
|
|
52
|
-
def from_self!(*args, &block)
|
|
53
|
-
raise_if_frozen!
|
|
54
|
-
@opts = clone.from_self(*args, &block).opts
|
|
55
|
-
self
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Set the method to call on identifiers going into the database for this dataset
|
|
59
|
-
def identifier_input_method=(v)
|
|
60
|
-
raise_if_frozen!
|
|
61
|
-
skip_symbol_cache!
|
|
62
|
-
@identifier_input_method = v
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Set the method to call on identifiers coming the database for this dataset
|
|
66
|
-
def identifier_output_method=(v)
|
|
67
|
-
raise_if_frozen!
|
|
68
|
-
@identifier_output_method = v
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# Remove the row_proc from the current dataset.
|
|
72
|
-
def naked!
|
|
73
|
-
raise_if_frozen!
|
|
74
|
-
self.row_proc = nil
|
|
75
|
-
self
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# Set whether to quote identifiers for this dataset
|
|
79
|
-
def quote_identifiers=(v)
|
|
80
|
-
raise_if_frozen!
|
|
81
|
-
skip_symbol_cache!
|
|
82
|
-
@quote_identifiers = v
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# Override the row_proc for this dataset
|
|
86
|
-
def row_proc=(v)
|
|
87
|
-
raise_if_frozen!
|
|
88
|
-
@row_proc = v
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
private
|
|
92
|
-
|
|
93
|
-
# Modify the receiver with the results of sending the meth, args, and block
|
|
94
|
-
# to the receiver and merging the options of the resulting dataset into
|
|
95
|
-
# the receiver's options.
|
|
96
|
-
def mutation_method(meth, *args, &block)
|
|
97
|
-
raise_if_frozen!
|
|
98
|
-
@opts = send(meth, *args, &block).opts
|
|
99
|
-
self
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# Raise a RuntimeError if the receiver is frozen
|
|
103
|
-
def raise_if_frozen!
|
|
104
|
-
if frozen?
|
|
105
|
-
raise RuntimeError, "can't modify frozen #{visible_class_name}"
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# The filter_having extension allows Dataset#filter, #and, #or
|
|
2
|
-
# and #exclude to operate on the HAVING clause if the dataset
|
|
3
|
-
# already has a HAVING clause, which was the historical behavior
|
|
4
|
-
# before Sequel 4. It is only recommended to use this for
|
|
5
|
-
# backwards compatibility.
|
|
6
|
-
#
|
|
7
|
-
# You can load this extension into specific datasets:
|
|
8
|
-
#
|
|
9
|
-
# ds = DB[:table]
|
|
10
|
-
# ds = ds.extension(:filter_having)
|
|
11
|
-
#
|
|
12
|
-
# Or you can load it into all of a database's datasets, which
|
|
13
|
-
# is probably the desired behavior if you are using this extension:
|
|
14
|
-
#
|
|
15
|
-
# DB.extension(:filter_having)
|
|
16
|
-
|
|
17
|
-
#
|
|
18
|
-
module Sequel
|
|
19
|
-
module FilterHaving
|
|
20
|
-
# Operate on HAVING clause if HAVING clause already present.
|
|
21
|
-
def and(*cond, &block)
|
|
22
|
-
if @opts[:having]
|
|
23
|
-
having(*cond, &block)
|
|
24
|
-
else
|
|
25
|
-
super
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Operate on HAVING clause if HAVING clause already present.
|
|
30
|
-
def exclude(*cond, &block)
|
|
31
|
-
if @opts[:having]
|
|
32
|
-
exclude_having(*cond, &block)
|
|
33
|
-
else
|
|
34
|
-
super
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Operate on HAVING clause if HAVING clause already present.
|
|
39
|
-
def filter(*cond, &block)
|
|
40
|
-
if @opts[:having]
|
|
41
|
-
having(*cond, &block)
|
|
42
|
-
else
|
|
43
|
-
super
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Operate on HAVING clause if HAVING clause already present.
|
|
48
|
-
def or(*cond, &block)
|
|
49
|
-
if having = @opts[:having]
|
|
50
|
-
cond = cond.first if cond.size == 1
|
|
51
|
-
clone(:having => SQL::BooleanExpression.new(:OR, having, filter_expr(cond, &block)))
|
|
52
|
-
else
|
|
53
|
-
super
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
Dataset.register_extension(:filter_having, FilterHaving)
|
|
59
|
-
end
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# The hash_aliases extension allows Dataset#select and Dataset#from
|
|
2
|
-
# to treat a hash argument as an alias specification, with keys
|
|
3
|
-
# being the expressions and values being the aliases,
|
|
4
|
-
# which was the historical behavior before Sequel 4.
|
|
5
|
-
# It is only recommended to use this for backwards compatibility.
|
|
6
|
-
#
|
|
7
|
-
# You can load this extension into specific datasets:
|
|
8
|
-
#
|
|
9
|
-
# ds = DB[:table]
|
|
10
|
-
# ds = ds.extension(:hash_aliases)
|
|
11
|
-
#
|
|
12
|
-
# Or you can load it into all of a database's datasets, which
|
|
13
|
-
# is probably the desired behavior if you are using this extension:
|
|
14
|
-
#
|
|
15
|
-
# DB.extension(:hash_aliases)
|
|
16
|
-
|
|
17
|
-
#
|
|
18
|
-
module Sequel
|
|
19
|
-
module HashAliases
|
|
20
|
-
def from(*source)
|
|
21
|
-
super(*convert_hash_aliases(source))
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def select(*columns, &block)
|
|
25
|
-
virtual_row_columns(columns, block)
|
|
26
|
-
super(*convert_hash_aliases(columns), &nil)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
def convert_hash_aliases(columns)
|
|
32
|
-
m = []
|
|
33
|
-
columns.each do |i|
|
|
34
|
-
if i.is_a?(Hash)
|
|
35
|
-
m.concat(i.map{|k, v| SQL::AliasedExpression.new(k,v)})
|
|
36
|
-
else
|
|
37
|
-
m << i
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
m
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
Dataset.register_extension(:hash_aliases, HashAliases)
|
|
45
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# The meta_def extension is designed for backwards compatibility
|
|
2
|
-
# with older Sequel code that uses the meta_def method on
|
|
3
|
-
# Database, Dataset, and Model classes and/or instances. It is
|
|
4
|
-
# not recommended for usage in new code. To load this extension:
|
|
5
|
-
#
|
|
6
|
-
# Sequel.extension :meta_def
|
|
7
|
-
|
|
8
|
-
#
|
|
9
|
-
module Sequel
|
|
10
|
-
# Contains meta_def method for adding methods to objects via blocks.
|
|
11
|
-
# Only recommended for backwards compatibility with existing code.
|
|
12
|
-
module Metaprogramming
|
|
13
|
-
# Define a method with the given name and block body on the receiver.
|
|
14
|
-
#
|
|
15
|
-
# ds = DB[:items]
|
|
16
|
-
# ds.meta_def(:x){42}
|
|
17
|
-
# ds.x # => 42
|
|
18
|
-
def meta_def(name, &block)
|
|
19
|
-
(class << self; self end).send(:define_method, name, &block)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
Database.extend Metaprogramming
|
|
24
|
-
Database.send(:include, Metaprogramming)
|
|
25
|
-
Dataset.extend Metaprogramming
|
|
26
|
-
Dataset.send(:include, Metaprogramming)
|
|
27
|
-
if defined?(Model)
|
|
28
|
-
Model.extend Metaprogramming
|
|
29
|
-
Model.send(:include, Metaprogramming)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
# The query_literals extension changes Sequel's default behavior of
|
|
2
|
-
# the select, order and group methods so that if the first argument
|
|
3
|
-
# is a regular string, it is treated as a literal string, with the
|
|
4
|
-
# rest of the arguments (if any) treated as placeholder values. This
|
|
5
|
-
# allows you to write code such as:
|
|
6
|
-
#
|
|
7
|
-
# DB[:table].select('a, b, ?', 2).group('a, b').order('c')
|
|
8
|
-
#
|
|
9
|
-
# The default Sequel behavior would literalize that as:
|
|
10
|
-
#
|
|
11
|
-
# SELECT 'a, b, ?', 2 FROM table GROUP BY 'a, b' ORDER BY 'c'
|
|
12
|
-
#
|
|
13
|
-
# Using this extension changes the literalization to:
|
|
14
|
-
#
|
|
15
|
-
# SELECT a, b, 2, FROM table GROUP BY a, b ORDER BY c
|
|
16
|
-
#
|
|
17
|
-
# This extension makes select, group, and order methods operate
|
|
18
|
-
# like filter methods, which support the same interface.
|
|
19
|
-
#
|
|
20
|
-
# There are very few places where Sequel's default behavior is
|
|
21
|
-
# desirable in this area, but for backwards compatibility, the
|
|
22
|
-
# defaults won't be changed until the next major release.
|
|
23
|
-
#
|
|
24
|
-
# You can load this extension into specific datasets:
|
|
25
|
-
#
|
|
26
|
-
# ds = DB[:table]
|
|
27
|
-
# ds = ds.extension(:query_literals)
|
|
28
|
-
#
|
|
29
|
-
# Or you can load it into all of a database's datasets, which
|
|
30
|
-
# is probably the desired behavior if you are using this extension:
|
|
31
|
-
#
|
|
32
|
-
# DB.extension(:query_literals)
|
|
33
|
-
|
|
34
|
-
#
|
|
35
|
-
module Sequel
|
|
36
|
-
# The QueryLiterals module can be used to make select, group, and
|
|
37
|
-
# order methods operate similar to the filter methods if the first
|
|
38
|
-
# argument is a plain string, treating it like a literal string,
|
|
39
|
-
# with any remaining arguments treated as placeholder values.
|
|
40
|
-
#
|
|
41
|
-
# This adds such support to the following methods: select, select_append,
|
|
42
|
-
# select_group, select_more, group, group_and_count, order, order_append,
|
|
43
|
-
# and order_more.
|
|
44
|
-
#
|
|
45
|
-
# Note that if you pass a block to these methods, it will use the default
|
|
46
|
-
# implementation without the special literal handling.
|
|
47
|
-
module QueryLiterals
|
|
48
|
-
%w'select select_append select_group select_more group group_and_count group_append order order_append order_more'.each do |m|
|
|
49
|
-
class_eval(<<-END, __FILE__, __LINE__ + 1)
|
|
50
|
-
def #{m}(*args)
|
|
51
|
-
if !block_given? && (l = query_literal(args))
|
|
52
|
-
super(l)
|
|
53
|
-
else
|
|
54
|
-
super
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
END
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
private
|
|
61
|
-
|
|
62
|
-
# If the first argument is a plain string, return a literal string
|
|
63
|
-
# if there are no additional args or a placeholder literal string with
|
|
64
|
-
# the remaining args. Otherwise, return nil.
|
|
65
|
-
def query_literal(args)
|
|
66
|
-
case (s = args[0])
|
|
67
|
-
when LiteralString, SQL::Blob
|
|
68
|
-
nil
|
|
69
|
-
when String
|
|
70
|
-
if args.length == 1
|
|
71
|
-
LiteralString.new(s)
|
|
72
|
-
else
|
|
73
|
-
SQL::PlaceholderLiteralString.new(s, args[1..-1])
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
Dataset.register_extension(:query_literals, QueryLiterals)
|
|
80
|
-
end
|