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,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# The pg_hstore extension adds support for the PostgreSQL hstore type
|
|
2
4
|
# to Sequel. hstore is an extension that ships with PostgreSQL, and
|
|
3
5
|
# the hstore type stores an arbitrary key-value table, where the keys
|
|
@@ -28,7 +30,7 @@
|
|
|
28
30
|
# Since the hstore type only supports strings, non string keys and
|
|
29
31
|
# values are converted to strings
|
|
30
32
|
#
|
|
31
|
-
# Sequel.hstore(:
|
|
33
|
+
# Sequel.hstore(foo: 1).to_hash # {'foo'=>'1'}
|
|
32
34
|
# v = Sequel.hstore({})
|
|
33
35
|
# v[:foo] = 1
|
|
34
36
|
# v # {'foo'=>'1'}
|
|
@@ -47,18 +49,18 @@
|
|
|
47
49
|
#
|
|
48
50
|
# * \[\]
|
|
49
51
|
# * \[\]=
|
|
50
|
-
# * assoc
|
|
52
|
+
# * assoc
|
|
51
53
|
# * delete
|
|
52
54
|
# * fetch
|
|
53
55
|
# * has_key?
|
|
54
56
|
# * has_value?
|
|
55
57
|
# * include?
|
|
56
|
-
# * key
|
|
58
|
+
# * key
|
|
57
59
|
# * key?
|
|
58
60
|
# * member?
|
|
59
61
|
# * merge
|
|
60
62
|
# * merge!
|
|
61
|
-
# * rassoc
|
|
63
|
+
# * rassoc
|
|
62
64
|
# * replace
|
|
63
65
|
# * store
|
|
64
66
|
# * update
|
|
@@ -66,23 +68,24 @@
|
|
|
66
68
|
#
|
|
67
69
|
# If you want to insert a hash into an hstore database column:
|
|
68
70
|
#
|
|
69
|
-
# DB[:table].insert(:
|
|
71
|
+
# DB[:table].insert(column: Sequel.hstore('foo'=>'bar'))
|
|
70
72
|
#
|
|
71
|
-
#
|
|
72
|
-
# probably want to modify the schema parsing/typecasting so that it
|
|
73
|
-
# recognizes and correctly handles the hstore columns, which you can
|
|
74
|
-
# do by:
|
|
73
|
+
# To use this extension, first load it into your Sequel::Database instance:
|
|
75
74
|
#
|
|
76
75
|
# DB.extension :pg_hstore
|
|
77
76
|
#
|
|
77
|
+
# This extension integrates with the pg_array extension. If you plan
|
|
78
|
+
# to use arrays of hstore types, load the pg_array extension before the
|
|
79
|
+
# pg_interval extension:
|
|
80
|
+
#
|
|
81
|
+
# DB.extension :pg_array, :pg_hstore
|
|
82
|
+
#
|
|
78
83
|
# See the {schema modification guide}[rdoc-ref:doc/schema_modification.rdoc]
|
|
79
84
|
# for details on using hstore columns in CREATE/ALTER TABLE statements.
|
|
80
85
|
#
|
|
81
|
-
# If you are not using the native postgres or jdbc/postgresql adapters and are using hstore
|
|
82
|
-
# types as model column values you probably should use the
|
|
83
|
-
# pg_typecast_on_load plugin if the column values are returned as a string.
|
|
84
|
-
#
|
|
85
86
|
# This extension requires the delegate and strscan libraries.
|
|
87
|
+
#
|
|
88
|
+
# Related module: Sequel::Postgres::HStore
|
|
86
89
|
|
|
87
90
|
require 'delegate'
|
|
88
91
|
require 'strscan'
|
|
@@ -94,14 +97,6 @@ module Sequel
|
|
|
94
97
|
|
|
95
98
|
# Parser for PostgreSQL hstore output format.
|
|
96
99
|
class Parser < StringScanner
|
|
97
|
-
QUOTE_RE = /"/.freeze
|
|
98
|
-
KV_SEP_RE = /"\s*=>\s*/.freeze
|
|
99
|
-
NULL_RE = /NULL/.freeze
|
|
100
|
-
SEP_RE = /,\s*/.freeze
|
|
101
|
-
QUOTED_RE = /(\\"|[^"])*/.freeze
|
|
102
|
-
REPLACE_RE = /\\(.)/.freeze
|
|
103
|
-
REPLACE_WITH = '\1'.freeze
|
|
104
|
-
|
|
105
100
|
# Parse the output format that PostgreSQL uses for hstore
|
|
106
101
|
# columns. Note that this does not attempt to parse all
|
|
107
102
|
# input formats that PostgreSQL will accept. For instance,
|
|
@@ -114,17 +109,17 @@ module Sequel
|
|
|
114
109
|
return @result if @result
|
|
115
110
|
hash = {}
|
|
116
111
|
while !eos?
|
|
117
|
-
skip(
|
|
112
|
+
skip(/"/)
|
|
118
113
|
k = parse_quoted
|
|
119
|
-
skip(
|
|
120
|
-
if skip(
|
|
114
|
+
skip(/"\s*=>\s*/)
|
|
115
|
+
if skip(/"/)
|
|
121
116
|
v = parse_quoted
|
|
122
|
-
skip(
|
|
117
|
+
skip(/"/)
|
|
123
118
|
else
|
|
124
|
-
scan(
|
|
119
|
+
scan(/NULL/)
|
|
125
120
|
v = nil
|
|
126
121
|
end
|
|
127
|
-
skip(
|
|
122
|
+
skip(/,\s*/)
|
|
128
123
|
hash[k] = v
|
|
129
124
|
end
|
|
130
125
|
@result = hash
|
|
@@ -134,14 +129,14 @@ module Sequel
|
|
|
134
129
|
|
|
135
130
|
# Parse and unescape a quoted key/value.
|
|
136
131
|
def parse_quoted
|
|
137
|
-
scan(
|
|
132
|
+
scan(/(\\"|[^"])*/).gsub(/\\(.)/, '\1')
|
|
138
133
|
end
|
|
139
134
|
end
|
|
140
135
|
|
|
141
136
|
module DatabaseMethods
|
|
142
137
|
def self.extended(db)
|
|
143
|
-
db.
|
|
144
|
-
add_named_conversion_proc(:hstore)
|
|
138
|
+
db.instance_exec do
|
|
139
|
+
add_named_conversion_proc(:hstore, &HStore.method(:parse))
|
|
145
140
|
@schema_type_classes[:hstore] = HStore
|
|
146
141
|
end
|
|
147
142
|
end
|
|
@@ -165,6 +160,16 @@ module Sequel
|
|
|
165
160
|
db_type == 'hstore' ? :hstore : super
|
|
166
161
|
end
|
|
167
162
|
|
|
163
|
+
# Set the :callable_default value if the default value is recognized as an empty hstore.
|
|
164
|
+
def schema_post_process(_)
|
|
165
|
+
super.each do |a|
|
|
166
|
+
h = a[1]
|
|
167
|
+
if h[:type] == :hstore && h[:default] =~ /\A''::hstore\z/
|
|
168
|
+
h[:callable_default] = lambda{HStore.new({})}
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
168
173
|
# Typecast value correctly to HStore. If already an
|
|
169
174
|
# HStore instance, return as is. If a hash, return
|
|
170
175
|
# an HStore version of it. If a string, assume it is
|
|
@@ -187,22 +192,12 @@ module Sequel
|
|
|
187
192
|
# keys to strings during lookup.
|
|
188
193
|
DEFAULT_PROC = lambda{|h, k| h[k.to_s] unless k.is_a?(String)}
|
|
189
194
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
HSTORE_CAST = '::hstore'.freeze
|
|
197
|
-
|
|
198
|
-
if RUBY_VERSION >= '1.9'
|
|
199
|
-
# Undef 1.9 marshal_{dump,load} methods in the delegate class,
|
|
200
|
-
# so that ruby 1.9 uses the old style _dump/_load methods defined
|
|
201
|
-
# in the delegate class, instead of the marshal_{dump,load} methods
|
|
202
|
-
# in the Hash class.
|
|
203
|
-
undef_method :marshal_load
|
|
204
|
-
undef_method :marshal_dump
|
|
205
|
-
end
|
|
195
|
+
# Undef marshal_{dump,load} methods in the delegate class,
|
|
196
|
+
# so that ruby uses the old style _dump/_load methods defined
|
|
197
|
+
# in the delegate class, instead of the marshal_{dump,load} methods
|
|
198
|
+
# in the Hash class.
|
|
199
|
+
undef_method :marshal_load
|
|
200
|
+
undef_method :marshal_dump
|
|
206
201
|
|
|
207
202
|
# Use custom marshal loading, since underlying hash uses a default proc.
|
|
208
203
|
def self._load(args)
|
|
@@ -216,12 +211,12 @@ module Sequel
|
|
|
216
211
|
end
|
|
217
212
|
|
|
218
213
|
# Override methods that accept key argument to convert to string.
|
|
219
|
-
|
|
214
|
+
%w'[] delete has_key? include? key? member? assoc'.each do |m|
|
|
220
215
|
class_eval("def #{m}(k) super(k.to_s) end", __FILE__, __LINE__)
|
|
221
216
|
end
|
|
222
217
|
|
|
223
218
|
# Override methods that accept value argument to convert to string unless nil.
|
|
224
|
-
|
|
219
|
+
%w'has_value? value? key rassoc'.each do |m|
|
|
225
220
|
class_eval("def #{m}(v) super(convert_value(v)) end", __FILE__, __LINE__)
|
|
226
221
|
end
|
|
227
222
|
|
|
@@ -258,19 +253,19 @@ module Sequel
|
|
|
258
253
|
# Append a literalize version of the hstore to the sql.
|
|
259
254
|
def sql_literal_append(ds, sql)
|
|
260
255
|
ds.literal_append(sql, unquoted_literal)
|
|
261
|
-
sql <<
|
|
256
|
+
sql << '::hstore'
|
|
262
257
|
end
|
|
263
258
|
|
|
264
259
|
# Return a string containing the unquoted, unstring-escaped
|
|
265
260
|
# literal version of the hstore. Separated out for use by
|
|
266
261
|
# the bound argument code.
|
|
267
262
|
def unquoted_literal
|
|
268
|
-
str =
|
|
263
|
+
str = String.new
|
|
269
264
|
comma = false
|
|
270
|
-
commas =
|
|
271
|
-
quote =
|
|
272
|
-
kv_sep =
|
|
273
|
-
null = NULL
|
|
265
|
+
commas = ","
|
|
266
|
+
quote = '"'
|
|
267
|
+
kv_sep = "=>"
|
|
268
|
+
null = "NULL"
|
|
274
269
|
each do |k, v|
|
|
275
270
|
str << commas if comma
|
|
276
271
|
str << quote << escape_value(k) << quote
|
|
@@ -303,13 +298,9 @@ module Sequel
|
|
|
303
298
|
# Escape key/value strings when literalizing to
|
|
304
299
|
# correctly handle backslash and quote characters.
|
|
305
300
|
def escape_value(k)
|
|
306
|
-
k.to_s.gsub(
|
|
301
|
+
k.to_s.gsub(/("|\\)/, '\\\\\1')
|
|
307
302
|
end
|
|
308
303
|
end
|
|
309
|
-
|
|
310
|
-
PG_NAMED_TYPES = {} unless defined?(PG_NAMED_TYPES)
|
|
311
|
-
# Associate the named types by default.
|
|
312
|
-
PG_NAMED_TYPES[:hstore] = HStore.method(:parse)
|
|
313
304
|
end
|
|
314
305
|
|
|
315
306
|
module SQL::Builders
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# The pg_hstore_ops extension adds support to Sequel's DSL to make
|
|
2
4
|
# it easier to call PostgreSQL hstore functions and operators.
|
|
3
5
|
#
|
|
@@ -18,7 +20,7 @@
|
|
|
18
20
|
# Also, on most Sequel expression objects, you can call the hstore
|
|
19
21
|
# method:
|
|
20
22
|
#
|
|
21
|
-
# h = Sequel
|
|
23
|
+
# h = Sequel[:hstore_column].hstore
|
|
22
24
|
#
|
|
23
25
|
# If you have loaded the {core_extensions extension}[rdoc-ref:doc/core_extensions.rdoc],
|
|
24
26
|
# or you have loaded the core_refinements extension
|
|
@@ -55,10 +57,10 @@
|
|
|
55
57
|
# Here are a couple examples for updating an existing hstore column:
|
|
56
58
|
#
|
|
57
59
|
# # Add a key, or update an existing key with a new value
|
|
58
|
-
# DB[:tab].update(:
|
|
60
|
+
# DB[:tab].update(h: Sequel.hstore_op(:h).concat('c'=>3))
|
|
59
61
|
#
|
|
60
62
|
# # Delete a key
|
|
61
|
-
# DB[:tab].update(:
|
|
63
|
+
# DB[:tab].update(h: Sequel.hstore_op(:h).delete('k1'))
|
|
62
64
|
#
|
|
63
65
|
# See the PostgreSQL hstore function and operator documentation for more
|
|
64
66
|
# details on what these functions and operators do.
|
|
@@ -73,6 +75,8 @@
|
|
|
73
75
|
# pg_hstore extension is loaded. Methods representing expressions that return
|
|
74
76
|
# PostgreSQL arrays will have the returned expression automatically wrapped in a
|
|
75
77
|
# Postgres::ArrayOp if the pg_array_ops extension is loaded.
|
|
78
|
+
#
|
|
79
|
+
# Related module: Sequel::Postgres::HStoreOp
|
|
76
80
|
|
|
77
81
|
#
|
|
78
82
|
module Sequel
|
|
@@ -308,7 +312,9 @@ module Sequel
|
|
|
308
312
|
end
|
|
309
313
|
end
|
|
310
314
|
|
|
315
|
+
# :nocov:
|
|
311
316
|
if defined?(HStore)
|
|
317
|
+
# :nocov:
|
|
312
318
|
class HStore
|
|
313
319
|
# Wrap the receiver in an HStoreOp so you can easily use the PostgreSQL
|
|
314
320
|
# hstore functions and operators with it.
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# The pg_inet extension adds support for Sequel to handle
|
|
2
4
|
# PostgreSQL's inet and cidr types using ruby's IPAddr class.
|
|
3
5
|
#
|
|
4
6
|
# This extension integrates with Sequel's native postgres and jdbc/postgresql
|
|
5
7
|
# adapters, so that when inet/cidr fields are retrieved, they are returned as
|
|
6
|
-
# IPAddr instances
|
|
8
|
+
# IPAddr instances.
|
|
7
9
|
#
|
|
8
10
|
# To use this extension, load it into your database:
|
|
9
11
|
#
|
|
10
12
|
# DB.extension :pg_inet
|
|
11
13
|
#
|
|
12
|
-
# If you are not using the native postgres or jdbc/postgresql adapters and are using inet/cidr
|
|
13
|
-
# types as model column values you probably should use the
|
|
14
|
-
# pg_typecast_on_load plugin if the column values are returned as a string.
|
|
15
|
-
#
|
|
16
14
|
# This extension integrates with the pg_array extension. If you plan
|
|
17
15
|
# to use the inet[] or cidr[] types, load the pg_array extension before
|
|
18
16
|
# the pg_inet extension:
|
|
@@ -27,9 +25,10 @@
|
|
|
27
25
|
#
|
|
28
26
|
# See the {schema modification guide}[rdoc-ref:doc/schema_modification.rdoc]
|
|
29
27
|
# for details on using inet/cidr columns in CREATE/ALTER TABLE statements.
|
|
28
|
+
#
|
|
29
|
+
# Related module: Sequel::Postgres::InetDatabaseMethods
|
|
30
30
|
|
|
31
31
|
require 'ipaddr'
|
|
32
|
-
Sequel.require 'adapters/utils/pg_types'
|
|
33
32
|
|
|
34
33
|
module Sequel
|
|
35
34
|
module Postgres
|
|
@@ -39,9 +38,26 @@ module Sequel
|
|
|
39
38
|
# it will pick up the inet/cidr converter. Also, extend the datasets
|
|
40
39
|
# with support for literalizing the IPAddr types.
|
|
41
40
|
def self.extended(db)
|
|
42
|
-
db.
|
|
41
|
+
db.instance_exec do
|
|
43
42
|
extend_datasets(InetDatasetMethods)
|
|
44
|
-
|
|
43
|
+
|
|
44
|
+
# :nocov:
|
|
45
|
+
if !defined?(SEQUEL_PG_VERSION_INTEGER) || SEQUEL_PG_VERSION_INTEGER >= 11300
|
|
46
|
+
# :nocov:
|
|
47
|
+
# sequel_pg 1.13.0+ will use inet/cidr conversion procs, but doing so is
|
|
48
|
+
# slower, so don't add the conversion procs if using sequel_pg 1.13.0+.
|
|
49
|
+
meth = IPAddr.method(:new)
|
|
50
|
+
add_conversion_proc(869, meth)
|
|
51
|
+
add_conversion_proc(650, meth)
|
|
52
|
+
if respond_to?(:register_array_type)
|
|
53
|
+
register_array_type('inet', :oid=>1041, :scalar_oid=>869)
|
|
54
|
+
register_array_type('cidr', :oid=>651, :scalar_oid=>650)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
if respond_to?(:register_array_type)
|
|
59
|
+
register_array_type('macaddr', :oid=>1040, :scalar_oid=>829)
|
|
60
|
+
end
|
|
45
61
|
@schema_type_classes[:ipaddr] = IPAddr
|
|
46
62
|
end
|
|
47
63
|
end
|
|
@@ -79,6 +95,16 @@ module Sequel
|
|
|
79
95
|
end
|
|
80
96
|
end
|
|
81
97
|
|
|
98
|
+
# Set the :ruby_default value if the default value is recognized as an ip address.
|
|
99
|
+
def schema_post_process(_)
|
|
100
|
+
super.each do |a|
|
|
101
|
+
h = a[1]
|
|
102
|
+
if h[:type] == :ipaddr && h[:default] =~ /\A'([:a-fA-F0-9\.\/]+)'::(?:inet|cidr)\z/
|
|
103
|
+
h[:ruby_default] = IPAddr.new($1)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
82
108
|
# Typecast the given value to an IPAddr object.
|
|
83
109
|
def typecast_value_ipaddr(value)
|
|
84
110
|
case value
|
|
@@ -105,13 +131,6 @@ module Sequel
|
|
|
105
131
|
end
|
|
106
132
|
end
|
|
107
133
|
end
|
|
108
|
-
|
|
109
|
-
PG_TYPES[869] = PG_TYPES[650] = IPAddr.method(:new)
|
|
110
|
-
if defined?(PGArray) && PGArray.respond_to?(:register)
|
|
111
|
-
PGArray.register('inet', :oid=>1041, :scalar_oid=>869)
|
|
112
|
-
PGArray.register('cidr', :oid=>651, :scalar_oid=>650)
|
|
113
|
-
PGArray.register('macaddr', :oid=>1040)
|
|
114
|
-
end
|
|
115
134
|
end
|
|
116
135
|
|
|
117
136
|
Database.register_extension(:pg_inet, Postgres::InetDatabaseMethods)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# The pg_inet_ops extension adds support to Sequel's DSL to make
|
|
2
4
|
# it easier to call PostgreSQL inet functions and operators.
|
|
3
5
|
#
|
|
@@ -12,7 +14,7 @@
|
|
|
12
14
|
# Also, on most Sequel expression objects, you can call the pg_inet
|
|
13
15
|
# method:
|
|
14
16
|
#
|
|
15
|
-
# r = Sequel
|
|
17
|
+
# r = Sequel[:ip].pg_inet
|
|
16
18
|
#
|
|
17
19
|
# If you have loaded the {core_extensions extension}[rdoc-ref:doc/core_extensions.rdoc],
|
|
18
20
|
# or you have loaded the core_refinements extension
|
|
@@ -54,6 +56,8 @@
|
|
|
54
56
|
#
|
|
55
57
|
# See the PostgreSQL network function and operator documentation for more
|
|
56
58
|
# details on what these functions and operators do.
|
|
59
|
+
#
|
|
60
|
+
# Related module: Sequel::Postgres::InetOp
|
|
57
61
|
|
|
58
62
|
require 'ipaddr'
|
|
59
63
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
#
|
|
1
3
|
# The pg_interval extension adds support for PostgreSQL's interval type.
|
|
2
4
|
#
|
|
3
5
|
# This extension integrates with Sequel's native postgres and jdbc/postgresql
|
|
@@ -8,17 +10,10 @@
|
|
|
8
10
|
# ActiveSupport::Duration that use the standard Sequel literalization
|
|
9
11
|
# callbacks, so they work on all adapters.
|
|
10
12
|
#
|
|
11
|
-
#
|
|
12
|
-
# probably want to modify the typecasting so that it
|
|
13
|
-
# recognizes and correctly handles the interval columns, which you can
|
|
14
|
-
# do by:
|
|
13
|
+
# To use this extension, load it into the Database instance:
|
|
15
14
|
#
|
|
16
15
|
# DB.extension :pg_interval
|
|
17
16
|
#
|
|
18
|
-
# If you are not using the native postgres or jdbc/postgresql adapters and are using interval
|
|
19
|
-
# types as model column values you probably should use the
|
|
20
|
-
# pg_typecast_on_load plugin if the column values are returned as a string.
|
|
21
|
-
#
|
|
22
17
|
# This extension integrates with the pg_array extension. If you plan
|
|
23
18
|
# to use arrays of interval types, load the pg_array extension before the
|
|
24
19
|
# pg_interval extension:
|
|
@@ -34,22 +29,22 @@
|
|
|
34
29
|
#
|
|
35
30
|
# See the {schema modification guide}[rdoc-ref:doc/schema_modification.rdoc]
|
|
36
31
|
# for details on using interval columns in CREATE/ALTER TABLE statements.
|
|
32
|
+
#
|
|
33
|
+
# Related module: Sequel::Postgres::IntervalDatabaseMethods
|
|
37
34
|
|
|
38
35
|
require 'active_support/duration'
|
|
39
|
-
Sequel.require 'adapters/utils/pg_types'
|
|
40
36
|
|
|
41
37
|
module Sequel
|
|
42
38
|
module Postgres
|
|
43
39
|
module IntervalDatabaseMethods
|
|
44
|
-
|
|
45
|
-
DURATION_UNITS = [:years, :months, :days, :minutes, :seconds].freeze
|
|
40
|
+
DURATION_UNITS = [:years, :months, :weeks, :days, :hours, :minutes, :seconds].freeze
|
|
46
41
|
|
|
47
42
|
# Return an unquoted string version of the duration object suitable for
|
|
48
43
|
# use as a bound variable.
|
|
49
44
|
def self.literal_duration(duration)
|
|
50
45
|
h = Hash.new(0)
|
|
51
46
|
duration.parts.each{|unit, value| h[unit] += value}
|
|
52
|
-
s =
|
|
47
|
+
s = String.new
|
|
53
48
|
|
|
54
49
|
DURATION_UNITS.each do |unit|
|
|
55
50
|
if (v = h[unit]) != 0
|
|
@@ -58,7 +53,7 @@ module Sequel
|
|
|
58
53
|
end
|
|
59
54
|
|
|
60
55
|
if s.empty?
|
|
61
|
-
|
|
56
|
+
'0'
|
|
62
57
|
else
|
|
63
58
|
s
|
|
64
59
|
end
|
|
@@ -66,12 +61,9 @@ module Sequel
|
|
|
66
61
|
|
|
67
62
|
# Creates callable objects that convert strings into ActiveSupport::Duration instances.
|
|
68
63
|
class Parser
|
|
69
|
-
# Regexp that parses the full range of PostgreSQL interval type output.
|
|
70
|
-
PARSER = /\A([+-]?\d+ years?\s?)?([+-]?\d+ mons?\s?)?([+-]?\d+ days?\s?)?(?:(?:([+-])?(\d{2,10}):(\d\d):(\d\d(\.\d+)?))|([+-]?\d+ hours?\s?)?([+-]?\d+ mins?\s?)?([+-]?\d+(\.\d+)? secs?\s?)?)?\z/o
|
|
71
|
-
|
|
72
64
|
# Parse the interval input string into an ActiveSupport::Duration instance.
|
|
73
65
|
def call(string)
|
|
74
|
-
raise(InvalidValue, "invalid or unhandled interval format: #{string.inspect}") unless matches =
|
|
66
|
+
raise(InvalidValue, "invalid or unhandled interval format: #{string.inspect}") unless matches = /\A([+-]?\d+ years?\s?)?([+-]?\d+ mons?\s?)?([+-]?\d+ days?\s?)?(?:(?:([+-])?(\d{2,10}):(\d\d):(\d\d(\.\d+)?))|([+-]?\d+ hours?\s?)?([+-]?\d+ mins?\s?)?([+-]?\d+(\.\d+)? secs?\s?)?)?\z/.match(string)
|
|
75
67
|
|
|
76
68
|
value = 0
|
|
77
69
|
parts = []
|
|
@@ -122,9 +114,12 @@ module Sequel
|
|
|
122
114
|
# Reset the conversion procs if using the native postgres adapter,
|
|
123
115
|
# and extend the datasets to correctly literalize ActiveSupport::Duration values.
|
|
124
116
|
def self.extended(db)
|
|
125
|
-
db.
|
|
117
|
+
db.instance_exec do
|
|
126
118
|
extend_datasets(IntervalDatasetMethods)
|
|
127
|
-
|
|
119
|
+
add_conversion_proc(1186, Postgres::IntervalDatabaseMethods::PARSER)
|
|
120
|
+
if respond_to?(:register_array_type)
|
|
121
|
+
register_array_type('interval', :oid=>1187, :scalar_oid=>1186)
|
|
122
|
+
end
|
|
128
123
|
@schema_type_classes[:interval] = ActiveSupport::Duration
|
|
129
124
|
end
|
|
130
125
|
end
|
|
@@ -151,6 +146,16 @@ module Sequel
|
|
|
151
146
|
end
|
|
152
147
|
end
|
|
153
148
|
|
|
149
|
+
# Set the :ruby_default value if the default value is recognized as an interval.
|
|
150
|
+
def schema_post_process(_)
|
|
151
|
+
super.each do |a|
|
|
152
|
+
h = a[1]
|
|
153
|
+
if h[:type] == :interval && h[:default] =~ /\A'([\w ]+)'::interval\z/
|
|
154
|
+
h[:ruby_default] = PARSER.call($1)
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
154
159
|
# Typecast value correctly to an ActiveSupport::Duration instance.
|
|
155
160
|
# If already an ActiveSupport::Duration, return it.
|
|
156
161
|
# If a numeric argument is given, assume it represents a number
|
|
@@ -173,7 +178,7 @@ module Sequel
|
|
|
173
178
|
end
|
|
174
179
|
|
|
175
180
|
module IntervalDatasetMethods
|
|
176
|
-
|
|
181
|
+
private
|
|
177
182
|
|
|
178
183
|
# Handle literalization of ActiveSupport::Duration objects, treating them as
|
|
179
184
|
# PostgreSQL intervals.
|
|
@@ -181,17 +186,12 @@ module Sequel
|
|
|
181
186
|
case v
|
|
182
187
|
when ActiveSupport::Duration
|
|
183
188
|
literal_append(sql, IntervalDatabaseMethods.literal_duration(v))
|
|
184
|
-
sql <<
|
|
189
|
+
sql << '::interval'
|
|
185
190
|
else
|
|
186
191
|
super
|
|
187
192
|
end
|
|
188
193
|
end
|
|
189
194
|
end
|
|
190
|
-
|
|
191
|
-
PG_TYPES[1186] = Postgres::IntervalDatabaseMethods::PARSER
|
|
192
|
-
if defined?(PGArray) && PGArray.respond_to?(:register)
|
|
193
|
-
PGArray.register('interval', :oid=>1187, :scalar_oid=>1186)
|
|
194
|
-
end
|
|
195
195
|
end
|
|
196
196
|
|
|
197
197
|
Database.register_extension(:pg_interval, Postgres::IntervalDatabaseMethods)
|