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
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
module Sequel
|
|
4
|
+
class Dataset
|
|
5
|
+
# This Module subclass is used by Database#extend_datasets
|
|
6
|
+
# and Dataset#with_extend to add dataset methods to classes.
|
|
7
|
+
# It adds some helper methods inside the module that can define
|
|
8
|
+
# named methods on the dataset instances which do specific actions.
|
|
9
|
+
# For example:
|
|
10
|
+
#
|
|
11
|
+
# DB.extend_datasets do
|
|
12
|
+
# order :by_id, :id
|
|
13
|
+
# select :with_id_and_name, :id, :name
|
|
14
|
+
# where :active, :active
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# DB[:table].active.with_id_and_name.by_id
|
|
18
|
+
# # SELECT id, name FROM table WHERE active ORDER BY id
|
|
19
|
+
class DatasetModule < ::Module
|
|
20
|
+
meths = (<<-METHS).split.map(&:to_sym)
|
|
21
|
+
where exclude exclude_having having
|
|
22
|
+
distinct grep group group_and_count group_append
|
|
23
|
+
limit offset order order_append order_prepend reverse
|
|
24
|
+
select select_all select_append select_group server
|
|
25
|
+
METHS
|
|
26
|
+
|
|
27
|
+
# Define a method in the module
|
|
28
|
+
def self.def_dataset_caching_method(mod, meth)
|
|
29
|
+
mod.send(:define_method, meth) do |name, *args, &block|
|
|
30
|
+
if block
|
|
31
|
+
define_method(name){public_send(meth, *args, &block)}
|
|
32
|
+
else
|
|
33
|
+
key = :"_#{meth}_#{name}_ds"
|
|
34
|
+
define_method(name) do
|
|
35
|
+
cached_dataset(key){public_send(meth, *args)}
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
meths.each do |meth|
|
|
42
|
+
def_dataset_caching_method(self, meth)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
class Dataset
|
|
3
5
|
# ---------------------
|
|
@@ -8,47 +10,42 @@ module Sequel
|
|
|
8
10
|
|
|
9
11
|
# Whether this dataset quotes identifiers.
|
|
10
12
|
def quote_identifiers?
|
|
11
|
-
|
|
12
|
-
@quote_identifiers
|
|
13
|
-
else
|
|
14
|
-
@quote_identifiers = db.quote_identifiers?
|
|
15
|
-
end
|
|
13
|
+
@opts.fetch(:quote_identifiers, true)
|
|
16
14
|
end
|
|
17
15
|
|
|
18
16
|
# Whether this dataset will provide accurate number of rows matched for
|
|
19
|
-
# delete and update statements. Accurate in this case is the number of
|
|
17
|
+
# delete and update statements, true by default. Accurate in this case is the number of
|
|
20
18
|
# rows matched by the dataset's filter.
|
|
21
19
|
def provides_accurate_rows_matched?
|
|
22
20
|
true
|
|
23
21
|
end
|
|
24
22
|
|
|
25
|
-
# Whether you must use a column alias list for recursive CTEs
|
|
26
|
-
# default).
|
|
23
|
+
# Whether you must use a column alias list for recursive CTEs, false by default.
|
|
27
24
|
def recursive_cte_requires_column_aliases?
|
|
28
25
|
false
|
|
29
26
|
end
|
|
30
27
|
|
|
31
|
-
# Whether the dataset requires SQL standard datetimes
|
|
32
|
-
# as most allow strings with ISO 8601 format
|
|
28
|
+
# Whether the dataset requires SQL standard datetimes. False by default,
|
|
29
|
+
# as most allow strings with ISO 8601 format.
|
|
33
30
|
def requires_sql_standard_datetimes?
|
|
34
31
|
false
|
|
35
32
|
end
|
|
36
33
|
|
|
37
34
|
# Whether type specifiers are required for prepared statement/bound
|
|
38
|
-
# variable argument placeholders (i.e. :bv__integer)
|
|
35
|
+
# variable argument placeholders (i.e. :bv__integer), false by default.
|
|
39
36
|
def requires_placeholder_type_specifiers?
|
|
40
37
|
false
|
|
41
38
|
end
|
|
42
39
|
|
|
43
|
-
# Whether the dataset supports common table expressions
|
|
40
|
+
# Whether the dataset supports common table expressions, false by default.
|
|
44
41
|
# If given, +type+ can be :select, :insert, :update, or :delete, in which case it
|
|
45
42
|
# determines whether WITH is supported for the respective statement type.
|
|
46
43
|
def supports_cte?(type=:select)
|
|
47
44
|
false
|
|
48
45
|
end
|
|
49
46
|
|
|
50
|
-
# Whether the dataset supports common table expressions
|
|
51
|
-
#
|
|
47
|
+
# Whether the dataset supports common table expressions in subqueries, false by default.
|
|
48
|
+
# If false, applies the WITH clause to the main query, which can cause issues
|
|
52
49
|
# if multiple WITH clauses use the same name.
|
|
53
50
|
def supports_cte_in_subqueries?
|
|
54
51
|
false
|
|
@@ -66,23 +63,23 @@ module Sequel
|
|
|
66
63
|
false
|
|
67
64
|
end
|
|
68
65
|
|
|
69
|
-
# Whether the dataset supports CUBE with GROUP BY.
|
|
66
|
+
# Whether the dataset supports CUBE with GROUP BY, false by default.
|
|
70
67
|
def supports_group_cube?
|
|
71
68
|
false
|
|
72
69
|
end
|
|
73
70
|
|
|
74
|
-
# Whether the dataset supports ROLLUP with GROUP BY.
|
|
71
|
+
# Whether the dataset supports ROLLUP with GROUP BY, false by default.
|
|
75
72
|
def supports_group_rollup?
|
|
76
73
|
false
|
|
77
74
|
end
|
|
78
75
|
|
|
79
|
-
# Whether the dataset supports GROUPING SETS with GROUP BY.
|
|
76
|
+
# Whether the dataset supports GROUPING SETS with GROUP BY, false by default.
|
|
80
77
|
def supports_grouping_sets?
|
|
81
78
|
false
|
|
82
79
|
end
|
|
83
80
|
|
|
84
81
|
# Whether this dataset supports the +insert_select+ method for returning all columns values
|
|
85
|
-
# directly from an insert query.
|
|
82
|
+
# directly from an insert query, false by default.
|
|
86
83
|
def supports_insert_select?
|
|
87
84
|
supports_returning?(:insert)
|
|
88
85
|
end
|
|
@@ -97,33 +94,39 @@ module Sequel
|
|
|
97
94
|
true
|
|
98
95
|
end
|
|
99
96
|
|
|
100
|
-
# Whether the dataset supports the IS TRUE syntax.
|
|
97
|
+
# Whether the dataset supports the IS TRUE syntax, true by default.
|
|
101
98
|
def supports_is_true?
|
|
102
99
|
true
|
|
103
100
|
end
|
|
104
101
|
|
|
105
|
-
# Whether the dataset supports the JOIN table USING (column1, ...) syntax.
|
|
102
|
+
# Whether the dataset supports the JOIN table USING (column1, ...) syntax, true by default.
|
|
103
|
+
# If false, support is emulated using JOIN table ON (table.column1 = other_table.column1).
|
|
106
104
|
def supports_join_using?
|
|
107
105
|
true
|
|
108
106
|
end
|
|
109
107
|
|
|
110
|
-
# Whether the dataset supports LATERAL for subqueries in the FROM or JOIN clauses.
|
|
108
|
+
# Whether the dataset supports LATERAL for subqueries in the FROM or JOIN clauses, false by default.
|
|
111
109
|
def supports_lateral_subqueries?
|
|
112
110
|
false
|
|
113
111
|
end
|
|
114
112
|
|
|
115
|
-
# Whether limits are supported in correlated subqueries
|
|
113
|
+
# Whether limits are supported in correlated subqueries, true by default.
|
|
116
114
|
def supports_limits_in_correlated_subqueries?
|
|
117
115
|
true
|
|
118
116
|
end
|
|
119
117
|
|
|
120
|
-
# Whether
|
|
118
|
+
# Whether the dataset supports skipping raising an error instead of waiting for locked rows when returning data, false by default.
|
|
119
|
+
def supports_nowait?
|
|
120
|
+
false
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Whether modifying joined datasets is supported, false by default.
|
|
121
124
|
def supports_modifying_joins?
|
|
122
125
|
false
|
|
123
126
|
end
|
|
124
127
|
|
|
125
128
|
# Whether the IN/NOT IN operators support multiple columns when an
|
|
126
|
-
# array of values is given.
|
|
129
|
+
# array of values is given, true by default.
|
|
127
130
|
def supports_multiple_column_in?
|
|
128
131
|
true
|
|
129
132
|
end
|
|
@@ -134,12 +137,12 @@ module Sequel
|
|
|
134
137
|
end
|
|
135
138
|
|
|
136
139
|
# Whether the dataset supports or can fully emulate the DISTINCT ON clause,
|
|
137
|
-
# including respecting the ORDER BY clause, false by default
|
|
140
|
+
# including respecting the ORDER BY clause, false by default.
|
|
138
141
|
def supports_ordered_distinct_on?
|
|
139
142
|
supports_distinct_on?
|
|
140
143
|
end
|
|
141
144
|
|
|
142
|
-
# Whether the dataset supports pattern matching by regular expressions.
|
|
145
|
+
# Whether the dataset supports pattern matching by regular expressions, false by default.
|
|
143
146
|
def supports_regexp?
|
|
144
147
|
false
|
|
145
148
|
end
|
|
@@ -149,34 +152,57 @@ module Sequel
|
|
|
149
152
|
false
|
|
150
153
|
end
|
|
151
154
|
|
|
152
|
-
# Whether the RETURNING clause is supported for the given type of query.
|
|
155
|
+
# Whether the RETURNING clause is supported for the given type of query, false by default.
|
|
153
156
|
# +type+ can be :insert, :update, or :delete.
|
|
154
157
|
def supports_returning?(type)
|
|
155
158
|
false
|
|
156
159
|
end
|
|
157
160
|
|
|
158
|
-
# Whether the
|
|
161
|
+
# Whether the dataset supports skipping locked rows when returning data, false by default.
|
|
162
|
+
def supports_skip_locked?
|
|
163
|
+
false
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Whether the database supports <tt>SELECT *, column FROM table</tt>, true by default.
|
|
159
167
|
def supports_select_all_and_column?
|
|
160
168
|
true
|
|
161
169
|
end
|
|
162
170
|
|
|
163
|
-
# Whether the dataset supports timezones in literal timestamps
|
|
171
|
+
# Whether the dataset supports timezones in literal timestamps, false by default.
|
|
164
172
|
def supports_timestamp_timezones?
|
|
165
173
|
false
|
|
166
174
|
end
|
|
167
175
|
|
|
168
|
-
# Whether the dataset supports fractional seconds in literal timestamps
|
|
176
|
+
# Whether the dataset supports fractional seconds in literal timestamps, true by default.
|
|
169
177
|
def supports_timestamp_usecs?
|
|
170
178
|
true
|
|
171
179
|
end
|
|
172
180
|
|
|
173
|
-
# Whether the dataset supports
|
|
181
|
+
# Whether the dataset supports the WINDOW clause to define windows used by multiple
|
|
182
|
+
# window functions, false by default.
|
|
183
|
+
def supports_window_clause?
|
|
184
|
+
false
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Whether the dataset supports window functions, false by default.
|
|
174
188
|
def supports_window_functions?
|
|
175
189
|
false
|
|
176
190
|
end
|
|
177
191
|
|
|
192
|
+
# Whether the dataset supports the given window function option. True by default.
|
|
193
|
+
# This should only be called if supports_window_functions? is true. Possible options
|
|
194
|
+
# are :rows, :range, :groups, :offset, :exclude.
|
|
195
|
+
def supports_window_function_frame_option?(option)
|
|
196
|
+
case option
|
|
197
|
+
when :rows, :range, :offset
|
|
198
|
+
true
|
|
199
|
+
else
|
|
200
|
+
false
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
|
|
178
204
|
# Whether the dataset supports WHERE TRUE (or WHERE 1 for databases that
|
|
179
|
-
# that use 1 for true).
|
|
205
|
+
# that use 1 for true), true by default.
|
|
180
206
|
def supports_where_true?
|
|
181
207
|
true
|
|
182
208
|
end
|
|
@@ -184,12 +210,33 @@ module Sequel
|
|
|
184
210
|
private
|
|
185
211
|
|
|
186
212
|
# Whether insert(nil) or insert({}) must be emulated by
|
|
187
|
-
# using at least one value
|
|
213
|
+
# using at least one value.
|
|
188
214
|
def insert_supports_empty_values?
|
|
189
215
|
true
|
|
190
216
|
end
|
|
191
217
|
|
|
192
|
-
# Whether the
|
|
218
|
+
# Whether the dataset needs ESCAPE for LIKE for correct behavior.
|
|
219
|
+
def requires_like_escape?
|
|
220
|
+
true
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# Whether ORDER BY col NULLS FIRST/LAST must be emulated.
|
|
224
|
+
def requires_emulating_nulls_first?
|
|
225
|
+
false
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
# Whether common table expressions are supported in UNION/INTERSECT/EXCEPT clauses.
|
|
229
|
+
def supports_cte_in_compounds?
|
|
230
|
+
supports_cte_in_subqueries?
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
# Whether the dataset supports the FILTER clause for aggregate functions.
|
|
234
|
+
# If not, support is emulated using CASE.
|
|
235
|
+
def supports_filtered_aggregates?
|
|
236
|
+
false
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Whether the database supports quoting function names.
|
|
193
240
|
def supports_quoted_function_names?
|
|
194
241
|
false
|
|
195
242
|
end
|
data/lib/sequel/dataset/graph.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
1
3
|
module Sequel
|
|
2
4
|
class Dataset
|
|
3
5
|
# ---------------------
|
|
@@ -9,16 +11,17 @@ module Sequel
|
|
|
9
11
|
|
|
10
12
|
# Adds the given graph aliases to the list of graph aliases to use,
|
|
11
13
|
# unlike +set_graph_aliases+, which replaces the list (the equivalent
|
|
12
|
-
# of +
|
|
14
|
+
# of +select_append+ when graphing). See +set_graph_aliases+.
|
|
13
15
|
#
|
|
14
|
-
# DB[:table].add_graph_aliases(:
|
|
16
|
+
# DB[:table].add_graph_aliases(some_alias: [:table, :column])
|
|
15
17
|
# # SELECT ..., table.column AS some_alias
|
|
16
18
|
def add_graph_aliases(graph_aliases)
|
|
17
|
-
|
|
19
|
+
graph = opts[:graph]
|
|
20
|
+
unless (graph && (ga = graph[:column_aliases]))
|
|
18
21
|
raise Error, "cannot call add_graph_aliases on a dataset that has not been called with graph or set_graph_aliases"
|
|
19
22
|
end
|
|
20
23
|
columns, graph_aliases = graph_alias_columns(graph_aliases)
|
|
21
|
-
|
|
24
|
+
select_append(*columns).clone(:graph => graph.merge(:column_aliases=>ga.merge(graph_aliases).freeze).freeze)
|
|
22
25
|
end
|
|
23
26
|
|
|
24
27
|
# Similar to Dataset#join_table, but uses unambiguous aliases for selected
|
|
@@ -57,7 +60,7 @@ module Sequel
|
|
|
57
60
|
case dataset
|
|
58
61
|
when Symbol
|
|
59
62
|
# let alias be the same as the table name (sans any optional schema)
|
|
60
|
-
# unless alias explicitly given in the symbol using ___ notation
|
|
63
|
+
# unless alias explicitly given in the symbol using ___ notation and symbol splitting is enabled
|
|
61
64
|
table_alias ||= split_symbol(table).compact.last
|
|
62
65
|
when Dataset
|
|
63
66
|
if dataset.simple_select_all?
|
|
@@ -93,10 +96,30 @@ module Sequel
|
|
|
93
96
|
|
|
94
97
|
table_alias_qualifier = qualifier_from_alias_symbol(table_alias, table)
|
|
95
98
|
implicit_qualifier = options[:implicit_qualifier]
|
|
99
|
+
joined_dataset = joined_dataset?
|
|
96
100
|
ds = self
|
|
101
|
+
graph = opts[:graph]
|
|
102
|
+
|
|
103
|
+
if !graph && (select = @opts[:select]) && !select.empty?
|
|
104
|
+
select_columns = nil
|
|
105
|
+
|
|
106
|
+
unless !joined_dataset && select.length == 1 && (select[0].is_a?(SQL::ColumnAll))
|
|
107
|
+
force_from_self = false
|
|
108
|
+
select_columns = select.map do |sel|
|
|
109
|
+
unless col = _hash_key_symbol(sel)
|
|
110
|
+
force_from_self = true
|
|
111
|
+
break
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
[sel, col]
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
select_columns = nil if force_from_self
|
|
118
|
+
end
|
|
119
|
+
end
|
|
97
120
|
|
|
98
121
|
# Use a from_self if this is already a joined table (or from_self specifically disabled for graphs)
|
|
99
|
-
if (@opts[:graph_from_self] != false &&
|
|
122
|
+
if (@opts[:graph_from_self] != false && !graph && (joined_dataset || force_from_self))
|
|
100
123
|
from_selfed = true
|
|
101
124
|
implicit_qualifier = options[:from_self_alias] || first_source
|
|
102
125
|
ds = ds.from_self(:alias=>implicit_qualifier)
|
|
@@ -111,11 +134,9 @@ module Sequel
|
|
|
111
134
|
|
|
112
135
|
# Whether to include the table in the result set
|
|
113
136
|
add_table = options[:select] == false ? false : true
|
|
114
|
-
# Whether to add the columns to the list of column aliases
|
|
115
|
-
add_columns = !ds.opts.include?(:graph_aliases)
|
|
116
137
|
|
|
117
|
-
if graph
|
|
118
|
-
|
|
138
|
+
if graph
|
|
139
|
+
graph = graph.dup
|
|
119
140
|
select = opts[:select].dup
|
|
120
141
|
[:column_aliases, :table_aliases, :column_alias_num].each{|k| graph[k] = graph[k].dup}
|
|
121
142
|
else
|
|
@@ -125,7 +146,7 @@ module Sequel
|
|
|
125
146
|
raise_alias_error.call if master == table_alias
|
|
126
147
|
|
|
127
148
|
# Master hash storing all .graph related information
|
|
128
|
-
graph =
|
|
149
|
+
graph = {}
|
|
129
150
|
|
|
130
151
|
# Associates column aliases back to tables and columns
|
|
131
152
|
column_aliases = graph[:column_aliases] = {}
|
|
@@ -136,30 +157,24 @@ module Sequel
|
|
|
136
157
|
# Keep track of the alias numbers used
|
|
137
158
|
ca_num = graph[:column_alias_num] = Hash.new(0)
|
|
138
159
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
Sequel.qualify(qualifier, Sequel.identifier(column))
|
|
151
|
-
else
|
|
152
|
-
# Initial dataset not wrapped in subslect, just make
|
|
153
|
-
# sure columns are qualified in some way.
|
|
154
|
-
qualified_expression(sel, qualifier)
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
else
|
|
158
|
-
select = columns.map do |column|
|
|
159
|
-
column_aliases[column] = [master, column]
|
|
160
|
-
SQL::QualifiedIdentifier.new(qualifier, column)
|
|
160
|
+
select = if select_columns
|
|
161
|
+
select_columns.map do |sel, column|
|
|
162
|
+
column_aliases[column] = [master, column]
|
|
163
|
+
if from_selfed
|
|
164
|
+
# Initial dataset was wrapped in subselect, selected all
|
|
165
|
+
# columns in the subselect, qualified by the subselect alias.
|
|
166
|
+
Sequel.qualify(qualifier, Sequel.identifier(column))
|
|
167
|
+
else
|
|
168
|
+
# Initial dataset not wrapped in subslect, just make
|
|
169
|
+
# sure columns are qualified in some way.
|
|
170
|
+
qualified_expression(sel, qualifier)
|
|
161
171
|
end
|
|
162
172
|
end
|
|
173
|
+
else
|
|
174
|
+
columns.map do |column|
|
|
175
|
+
column_aliases[column] = [master, column]
|
|
176
|
+
SQL::QualifiedIdentifier.new(qualifier, column)
|
|
177
|
+
end
|
|
163
178
|
end
|
|
164
179
|
end
|
|
165
180
|
|
|
@@ -171,7 +186,7 @@ module Sequel
|
|
|
171
186
|
table_aliases[table_alias] = add_table ? dataset : nil
|
|
172
187
|
|
|
173
188
|
# Add the columns to the selection unless we are ignoring them
|
|
174
|
-
if add_table
|
|
189
|
+
if add_table
|
|
175
190
|
column_aliases = graph[:column_aliases]
|
|
176
191
|
ca_num = graph[:column_alias_num]
|
|
177
192
|
# Which columns to add to the result set
|
|
@@ -194,11 +209,13 @@ module Sequel
|
|
|
194
209
|
ident = SQL::QualifiedIdentifier.new(table_alias_qualifier, column)
|
|
195
210
|
[column, ident]
|
|
196
211
|
end
|
|
197
|
-
column_aliases[col_alias] = [table_alias, column]
|
|
212
|
+
column_aliases[col_alias] = [table_alias, column].freeze
|
|
198
213
|
select.push(identifier)
|
|
199
214
|
end
|
|
200
215
|
end
|
|
201
|
-
|
|
216
|
+
[:column_aliases, :table_aliases, :column_alias_num].each{|k| graph[k].freeze}
|
|
217
|
+
ds = ds.clone(:graph=>graph.freeze)
|
|
218
|
+
ds.select(*select)
|
|
202
219
|
end
|
|
203
220
|
|
|
204
221
|
# This allows you to manually specify the graph aliases to use
|
|
@@ -208,44 +225,51 @@ module Sequel
|
|
|
208
225
|
# graphed dataset, and must be used instead of +select+ whenever
|
|
209
226
|
# graphing is used.
|
|
210
227
|
#
|
|
211
|
-
# graph_aliases
|
|
212
|
-
#
|
|
213
|
-
#
|
|
214
|
-
#
|
|
215
|
-
#
|
|
216
|
-
#
|
|
217
|
-
#
|
|
218
|
-
#
|
|
219
|
-
#
|
|
220
|
-
#
|
|
228
|
+
# graph_aliases should be a hash with keys being symbols of
|
|
229
|
+
# column aliases, and values being either symbols or arrays with one to three elements.
|
|
230
|
+
# If the value is a symbol, it is assumed to be the same as a one element
|
|
231
|
+
# array containing that symbol.
|
|
232
|
+
# The first element of the array should be the table alias symbol.
|
|
233
|
+
# The second should be the actual column name symbol. If the array only
|
|
234
|
+
# has a single element the column name symbol will be assumed to be the
|
|
235
|
+
# same as the corresponding hash key. If the array
|
|
236
|
+
# has a third element, it is used as the value returned, instead of
|
|
237
|
+
# table_alias.column_name.
|
|
221
238
|
#
|
|
222
|
-
# DB[:artists].graph(:albums, :artist_id
|
|
223
|
-
# set_graph_aliases(:
|
|
224
|
-
# :
|
|
225
|
-
# :
|
|
239
|
+
# DB[:artists].graph(:albums, :artist_id: :id).
|
|
240
|
+
# set_graph_aliases(name: :artists,
|
|
241
|
+
# album_name: [:albums, :name],
|
|
242
|
+
# forty_two: [:albums, :fourtwo, 42]).first
|
|
226
243
|
# # SELECT artists.name, albums.name AS album_name, 42 AS forty_two ...
|
|
227
244
|
def set_graph_aliases(graph_aliases)
|
|
228
245
|
columns, graph_aliases = graph_alias_columns(graph_aliases)
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
246
|
+
if graph = opts[:graph]
|
|
247
|
+
select(*columns).clone(:graph => graph.merge(:column_aliases=>graph_aliases.freeze).freeze)
|
|
248
|
+
else
|
|
249
|
+
raise Error, "cannot call #set_graph_aliases on an ungraphed dataset"
|
|
250
|
+
end
|
|
232
251
|
end
|
|
233
252
|
|
|
234
253
|
# Remove the splitting of results into subhashes, and all metadata
|
|
235
254
|
# related to the current graph (if any).
|
|
236
255
|
def ungraphed
|
|
237
|
-
clone(:graph=>nil
|
|
256
|
+
clone(:graph=>nil)
|
|
238
257
|
end
|
|
239
258
|
|
|
240
259
|
private
|
|
241
260
|
|
|
242
261
|
# Wrap the alias symbol in an SQL::Identifier if the identifier on which is based
|
|
243
|
-
# is an SQL::Identifier. This works around cases where the alias symbol contains
|
|
262
|
+
# is an SQL::Identifier. This works around cases where symbol splitting is enabled and the alias symbol contains
|
|
244
263
|
# double embedded underscores which would be considered an implicit qualified identifier
|
|
245
264
|
# if not wrapped in an SQL::Identifier.
|
|
246
265
|
def qualifier_from_alias_symbol(aliaz, identifier)
|
|
247
|
-
identifier = identifier.column if identifier.is_a?(SQL::QualifiedIdentifier)
|
|
248
266
|
case identifier
|
|
267
|
+
when SQL::QualifiedIdentifier
|
|
268
|
+
if identifier.column.is_a?(String)
|
|
269
|
+
Sequel.identifier(aliaz)
|
|
270
|
+
else
|
|
271
|
+
aliaz
|
|
272
|
+
end
|
|
249
273
|
when SQL::Identifier
|
|
250
274
|
Sequel.identifier(aliaz)
|
|
251
275
|
else
|
|
@@ -258,10 +282,10 @@ module Sequel
|
|
|
258
282
|
# a select method, and the second is a new hash of preprocessed graph aliases.
|
|
259
283
|
def graph_alias_columns(graph_aliases)
|
|
260
284
|
gas = {}
|
|
261
|
-
identifiers = graph_aliases.
|
|
285
|
+
identifiers = graph_aliases.map do |col_alias, tc|
|
|
262
286
|
table, column, value = Array(tc)
|
|
263
287
|
column ||= col_alias
|
|
264
|
-
gas[col_alias] = [table, column]
|
|
288
|
+
gas[col_alias] = [table, column].freeze
|
|
265
289
|
identifier = value || SQL::QualifiedIdentifier.new(table, column)
|
|
266
290
|
identifier = SQL::AliasedExpression.new(identifier, col_alias) if value || column != col_alias
|
|
267
291
|
identifier
|