sequel 4.49.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +70 -0
- data/README.rdoc +195 -136
- data/Rakefile +26 -42
- data/bin/sequel +3 -5
- data/doc/advanced_associations.rdoc +86 -163
- data/doc/association_basics.rdoc +197 -274
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +66 -43
- data/doc/code_order.rdoc +1 -8
- data/doc/core_extensions.rdoc +81 -56
- data/doc/dataset_basics.rdoc +8 -17
- data/doc/dataset_filtering.rdoc +81 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/mass_assignment.rdoc +73 -30
- data/doc/migration.rdoc +19 -36
- data/doc/model_dataset_method_design.rdoc +14 -17
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +10 -10
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +52 -70
- data/doc/opening_databases.rdoc +39 -32
- data/doc/postgresql.rdoc +48 -38
- data/doc/prepared_statements.rdoc +27 -22
- data/doc/querying.rdoc +173 -150
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/schema_modification.rdoc +63 -60
- data/doc/security.rdoc +97 -88
- data/doc/sharding.rdoc +43 -30
- data/doc/sql.rdoc +53 -65
- data/doc/testing.rdoc +3 -5
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +18 -17
- data/doc/validations.rdoc +48 -45
- data/doc/virtual_rows.rdoc +87 -115
- data/lib/sequel.rb +1 -1
- data/lib/sequel/adapters/ado.rb +9 -25
- data/lib/sequel/adapters/ado/access.rb +7 -13
- data/lib/sequel/adapters/ado/mssql.rb +2 -9
- data/lib/sequel/adapters/amalgalite.rb +3 -18
- data/lib/sequel/adapters/ibmdb.rb +9 -45
- data/lib/sequel/adapters/jdbc.rb +13 -73
- data/lib/sequel/adapters/jdbc/db2.rb +8 -37
- data/lib/sequel/adapters/jdbc/derby.rb +4 -50
- data/lib/sequel/adapters/jdbc/h2.rb +4 -25
- data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
- data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
- data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
- data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
- data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
- data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
- data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
- data/lib/sequel/adapters/mock.rb +4 -30
- data/lib/sequel/adapters/mysql.rb +7 -44
- data/lib/sequel/adapters/mysql2.rb +5 -23
- data/lib/sequel/adapters/odbc.rb +0 -19
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +4 -12
- data/lib/sequel/adapters/odbc/oracle.rb +1 -1
- data/lib/sequel/adapters/oracle.rb +7 -13
- data/lib/sequel/adapters/postgres.rb +13 -57
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +11 -51
- data/lib/sequel/adapters/shared/db2.rb +3 -61
- data/lib/sequel/adapters/shared/mssql.rb +21 -157
- data/lib/sequel/adapters/shared/mysql.rb +23 -224
- data/lib/sequel/adapters/shared/oracle.rb +13 -41
- data/lib/sequel/adapters/shared/postgres.rb +44 -259
- data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
- data/lib/sequel/adapters/shared/sqlite.rb +12 -101
- data/lib/sequel/adapters/sqlanywhere.rb +4 -23
- data/lib/sequel/adapters/sqlite.rb +2 -19
- data/lib/sequel/adapters/tinytds.rb +5 -15
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
- data/lib/sequel/adapters/utils/replace.rb +0 -5
- data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
- data/lib/sequel/ast_transformer.rb +3 -94
- data/lib/sequel/connection_pool.rb +26 -28
- data/lib/sequel/connection_pool/sharded_single.rb +1 -4
- data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
- data/lib/sequel/connection_pool/single.rb +0 -2
- data/lib/sequel/connection_pool/threaded.rb +94 -110
- data/lib/sequel/core.rb +42 -101
- data/lib/sequel/database.rb +12 -2
- data/lib/sequel/database/connecting.rb +23 -60
- data/lib/sequel/database/dataset.rb +6 -9
- data/lib/sequel/database/dataset_defaults.rb +4 -48
- data/lib/sequel/database/features.rb +5 -4
- data/lib/sequel/database/logging.rb +2 -9
- data/lib/sequel/database/misc.rb +23 -55
- data/lib/sequel/database/query.rb +8 -13
- data/lib/sequel/database/schema_generator.rb +89 -64
- data/lib/sequel/database/schema_methods.rb +61 -79
- data/lib/sequel/database/transactions.rb +4 -24
- data/lib/sequel/dataset.rb +18 -10
- data/lib/sequel/dataset/actions.rb +53 -107
- data/lib/sequel/dataset/dataset_module.rb +3 -15
- data/lib/sequel/dataset/features.rb +30 -30
- data/lib/sequel/dataset/graph.rb +40 -49
- data/lib/sequel/dataset/misc.rb +12 -37
- data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
- data/lib/sequel/dataset/prepared_statements.rb +23 -51
- data/lib/sequel/dataset/query.rb +71 -155
- data/lib/sequel/dataset/sql.rb +30 -225
- data/lib/sequel/deprecated.rb +18 -27
- data/lib/sequel/exceptions.rb +1 -17
- data/lib/sequel/extensions/_model_pg_row.rb +0 -7
- data/lib/sequel/extensions/_pretty_table.rb +1 -3
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/connection_expiration.rb +1 -1
- data/lib/sequel/extensions/connection_validator.rb +1 -1
- data/lib/sequel/extensions/constraint_validations.rb +11 -11
- data/lib/sequel/extensions/core_extensions.rb +39 -49
- data/lib/sequel/extensions/core_refinements.rb +39 -45
- data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
- data/lib/sequel/extensions/date_arithmetic.rb +7 -7
- data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/eval_inspect.rb +4 -11
- data/lib/sequel/extensions/freeze_datasets.rb +1 -69
- data/lib/sequel/extensions/from_block.rb +1 -35
- data/lib/sequel/extensions/graph_each.rb +2 -2
- data/lib/sequel/extensions/identifier_mangling.rb +9 -19
- data/lib/sequel/extensions/implicit_subquery.rb +2 -2
- data/lib/sequel/extensions/inflector.rb +4 -4
- data/lib/sequel/extensions/migration.rb +23 -40
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
- data/lib/sequel/extensions/null_dataset.rb +2 -8
- data/lib/sequel/extensions/pagination.rb +1 -17
- data/lib/sequel/extensions/pg_array.rb +20 -189
- data/lib/sequel/extensions/pg_hstore.rb +11 -50
- data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
- data/lib/sequel/extensions/pg_inet.rb +2 -15
- data/lib/sequel/extensions/pg_interval.rb +1 -20
- data/lib/sequel/extensions/pg_json.rb +7 -27
- data/lib/sequel/extensions/pg_loose_count.rb +1 -1
- data/lib/sequel/extensions/pg_range.rb +6 -121
- data/lib/sequel/extensions/pg_range_ops.rb +1 -3
- data/lib/sequel/extensions/pg_row.rb +5 -77
- data/lib/sequel/extensions/pg_row_ops.rb +2 -13
- data/lib/sequel/extensions/query.rb +3 -4
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/schema_dumper.rb +13 -13
- data/lib/sequel/extensions/select_remove.rb +3 -3
- data/lib/sequel/extensions/split_array_nil.rb +2 -2
- data/lib/sequel/extensions/sql_comments.rb +2 -2
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/symbol_aref.rb +6 -20
- data/lib/sequel/model.rb +27 -62
- data/lib/sequel/model/associations.rb +128 -131
- data/lib/sequel/model/base.rb +171 -711
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +0 -3
- data/lib/sequel/model/exceptions.rb +2 -6
- data/lib/sequel/model/inflections.rb +1 -26
- data/lib/sequel/model/plugins.rb +1 -0
- data/lib/sequel/plugins/active_model.rb +2 -5
- data/lib/sequel/plugins/association_dependencies.rb +15 -15
- data/lib/sequel/plugins/association_pks.rb +14 -28
- data/lib/sequel/plugins/association_proxies.rb +6 -7
- data/lib/sequel/plugins/auto_validations.rb +4 -4
- data/lib/sequel/plugins/before_after_save.rb +0 -43
- data/lib/sequel/plugins/blacklist_security.rb +9 -8
- data/lib/sequel/plugins/boolean_readers.rb +3 -3
- data/lib/sequel/plugins/boolean_subsets.rb +2 -2
- data/lib/sequel/plugins/caching.rb +5 -5
- data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
- data/lib/sequel/plugins/column_conflicts.rb +2 -2
- data/lib/sequel/plugins/column_select.rb +2 -2
- data/lib/sequel/plugins/composition.rb +15 -24
- data/lib/sequel/plugins/constraint_validations.rb +4 -3
- data/lib/sequel/plugins/csv_serializer.rb +13 -20
- data/lib/sequel/plugins/dataset_associations.rb +2 -2
- data/lib/sequel/plugins/def_dataset_method.rb +5 -5
- data/lib/sequel/plugins/defaults_setter.rb +1 -1
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/finder.rb +16 -10
- data/lib/sequel/plugins/force_encoding.rb +1 -7
- data/lib/sequel/plugins/hook_class_methods.rb +4 -106
- data/lib/sequel/plugins/input_transformer.rb +10 -11
- data/lib/sequel/plugins/insert_returning_select.rb +1 -9
- data/lib/sequel/plugins/instance_filters.rb +5 -5
- data/lib/sequel/plugins/instance_hooks.rb +7 -52
- data/lib/sequel/plugins/inverted_subsets.rb +3 -1
- data/lib/sequel/plugins/json_serializer.rb +19 -19
- data/lib/sequel/plugins/lazy_attributes.rb +1 -10
- data/lib/sequel/plugins/list.rb +6 -6
- data/lib/sequel/plugins/many_through_many.rb +11 -8
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/nested_attributes.rb +18 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +8 -2
- data/lib/sequel/plugins/pg_row.rb +2 -11
- data/lib/sequel/plugins/prepared_statements.rb +13 -66
- data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
- data/lib/sequel/plugins/rcte_tree.rb +7 -7
- data/lib/sequel/plugins/serialization.rb +15 -33
- data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
- data/lib/sequel/plugins/sharding.rb +2 -8
- data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/static_cache.rb +8 -9
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +1 -1
- data/lib/sequel/plugins/subset_conditions.rb +2 -2
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
- data/lib/sequel/plugins/timestamps.rb +6 -7
- data/lib/sequel/plugins/touch.rb +4 -8
- data/lib/sequel/plugins/tree.rb +3 -3
- data/lib/sequel/plugins/typecast_on_load.rb +2 -2
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/update_or_create.rb +3 -3
- data/lib/sequel/plugins/update_refresh.rb +3 -3
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validation_class_methods.rb +10 -9
- data/lib/sequel/plugins/validation_contexts.rb +4 -4
- data/lib/sequel/plugins/validation_helpers.rb +26 -25
- data/lib/sequel/plugins/whitelist_security.rb +13 -9
- data/lib/sequel/plugins/xml_serializer.rb +24 -25
- data/lib/sequel/sql.rb +145 -276
- data/lib/sequel/timezones.rb +8 -22
- data/lib/sequel/version.rb +2 -2
- data/spec/adapter_spec.rb +1 -1
- data/spec/adapters/db2_spec.rb +2 -103
- data/spec/adapters/mssql_spec.rb +89 -68
- data/spec/adapters/mysql_spec.rb +101 -480
- data/spec/adapters/oracle_spec.rb +1 -9
- data/spec/adapters/postgres_spec.rb +312 -565
- data/spec/adapters/spec_helper.rb +12 -31
- data/spec/adapters/sqlanywhere_spec.rb +2 -77
- data/spec/adapters/sqlite_spec.rb +8 -146
- data/spec/bin_spec.rb +11 -16
- data/spec/core/connection_pool_spec.rb +173 -74
- data/spec/core/database_spec.rb +64 -244
- data/spec/core/dataset_spec.rb +81 -415
- data/spec/core/deprecated_spec.rb +3 -3
- data/spec/core/expression_filters_spec.rb +37 -144
- data/spec/core/mock_adapter_spec.rb +176 -4
- data/spec/core/object_graph_spec.rb +11 -60
- data/spec/core/placeholder_literalizer_spec.rb +1 -14
- data/spec/core/schema_generator_spec.rb +51 -40
- data/spec/core/schema_spec.rb +74 -77
- data/spec/core/spec_helper.rb +6 -24
- data/spec/core/version_spec.rb +1 -1
- data/spec/core_extensions_spec.rb +7 -83
- data/spec/core_model_spec.rb +2 -2
- data/spec/deprecation_helper.rb +2 -14
- data/spec/extensions/accessed_columns_spec.rb +1 -1
- data/spec/extensions/active_model_spec.rb +3 -3
- data/spec/extensions/after_initialize_spec.rb +1 -1
- data/spec/extensions/arbitrary_servers_spec.rb +2 -2
- data/spec/extensions/association_dependencies_spec.rb +1 -1
- data/spec/extensions/association_pks_spec.rb +4 -59
- data/spec/extensions/association_proxies_spec.rb +1 -1
- data/spec/extensions/auto_literal_strings_spec.rb +1 -12
- data/spec/extensions/auto_validations_spec.rb +1 -1
- data/spec/extensions/blacklist_security_spec.rb +1 -1
- data/spec/extensions/blank_spec.rb +1 -1
- data/spec/extensions/boolean_readers_spec.rb +1 -1
- data/spec/extensions/boolean_subsets_spec.rb +1 -1
- data/spec/extensions/caching_spec.rb +1 -1
- data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
- data/spec/extensions/column_conflicts_spec.rb +1 -1
- data/spec/extensions/column_select_spec.rb +4 -4
- data/spec/extensions/columns_introspection_spec.rb +1 -1
- data/spec/extensions/columns_updated_spec.rb +1 -1
- data/spec/extensions/composition_spec.rb +1 -7
- data/spec/extensions/connection_expiration_spec.rb +3 -3
- data/spec/extensions/connection_validator_spec.rb +3 -3
- data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
- data/spec/extensions/constraint_validations_spec.rb +1 -1
- data/spec/extensions/core_refinements_spec.rb +1 -3
- data/spec/extensions/csv_serializer_spec.rb +4 -9
- data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
- data/spec/extensions/dataset_associations_spec.rb +2 -1
- data/spec/extensions/dataset_source_alias_spec.rb +1 -1
- data/spec/extensions/date_arithmetic_spec.rb +3 -3
- data/spec/extensions/def_dataset_method_spec.rb +1 -1
- data/spec/extensions/defaults_setter_spec.rb +2 -2
- data/spec/extensions/delay_add_association_spec.rb +8 -9
- data/spec/extensions/dirty_spec.rb +1 -1
- data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
- data/spec/extensions/eager_each_spec.rb +2 -2
- data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
- data/spec/extensions/error_splitter_spec.rb +1 -1
- data/spec/extensions/error_sql_spec.rb +1 -1
- data/spec/extensions/eval_inspect_spec.rb +1 -1
- data/spec/extensions/finder_spec.rb +1 -1
- data/spec/extensions/force_encoding_spec.rb +2 -5
- data/spec/extensions/freeze_datasets_spec.rb +1 -1
- data/spec/extensions/graph_each_spec.rb +5 -5
- data/spec/extensions/hook_class_methods_spec.rb +1 -194
- data/spec/extensions/identifier_mangling_spec.rb +17 -170
- data/spec/extensions/implicit_subquery_spec.rb +1 -5
- data/spec/extensions/inflector_spec.rb +1 -1
- data/spec/extensions/input_transformer_spec.rb +7 -2
- data/spec/extensions/insert_returning_select_spec.rb +1 -1
- data/spec/extensions/instance_filters_spec.rb +1 -1
- data/spec/extensions/instance_hooks_spec.rb +1 -95
- data/spec/extensions/inverted_subsets_spec.rb +1 -1
- data/spec/extensions/json_serializer_spec.rb +1 -1
- data/spec/extensions/lazy_attributes_spec.rb +1 -7
- data/spec/extensions/list_spec.rb +1 -1
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/many_through_many_spec.rb +1 -1
- data/spec/extensions/migration_spec.rb +2 -2
- data/spec/extensions/modification_detection_spec.rb +1 -1
- data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
- data/spec/extensions/named_timezones_spec.rb +3 -3
- data/spec/extensions/nested_attributes_spec.rb +1 -29
- data/spec/extensions/null_dataset_spec.rb +1 -11
- data/spec/extensions/optimistic_locking_spec.rb +1 -1
- data/spec/extensions/pagination_spec.rb +1 -1
- data/spec/extensions/pg_array_associations_spec.rb +4 -1
- data/spec/extensions/pg_array_ops_spec.rb +1 -1
- data/spec/extensions/pg_array_spec.rb +3 -48
- data/spec/extensions/pg_enum_spec.rb +1 -1
- data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
- data/spec/extensions/pg_hstore_spec.rb +23 -32
- data/spec/extensions/pg_inet_ops_spec.rb +1 -1
- data/spec/extensions/pg_inet_spec.rb +1 -14
- data/spec/extensions/pg_interval_spec.rb +3 -13
- data/spec/extensions/pg_json_ops_spec.rb +1 -1
- data/spec/extensions/pg_json_spec.rb +1 -13
- data/spec/extensions/pg_loose_count_spec.rb +1 -1
- data/spec/extensions/pg_range_ops_spec.rb +1 -1
- data/spec/extensions/pg_range_spec.rb +3 -88
- data/spec/extensions/pg_row_ops_spec.rb +1 -1
- data/spec/extensions/pg_row_plugin_spec.rb +1 -1
- data/spec/extensions/pg_row_spec.rb +1 -44
- data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
- data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
- data/spec/extensions/prepared_statements_spec.rb +13 -48
- data/spec/extensions/pretty_table_spec.rb +1 -1
- data/spec/extensions/query_spec.rb +1 -12
- data/spec/extensions/rcte_tree_spec.rb +1 -1
- data/spec/extensions/round_timestamps_spec.rb +1 -5
- data/spec/extensions/s_spec.rb +1 -1
- data/spec/extensions/schema_caching_spec.rb +1 -1
- data/spec/extensions/schema_dumper_spec.rb +1 -1
- data/spec/extensions/select_remove_spec.rb +1 -1
- data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
- data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
- data/spec/extensions/serialization_spec.rb +2 -14
- data/spec/extensions/server_block_spec.rb +1 -1
- data/spec/extensions/server_logging_spec.rb +2 -2
- data/spec/extensions/sharding_spec.rb +1 -1
- data/spec/extensions/shared_caching_spec.rb +1 -28
- data/spec/extensions/single_table_inheritance_spec.rb +2 -5
- data/spec/extensions/singular_table_names_spec.rb +1 -1
- data/spec/extensions/skip_create_refresh_spec.rb +1 -1
- data/spec/extensions/spec_helper.rb +5 -27
- data/spec/extensions/split_array_nil_spec.rb +1 -1
- data/spec/extensions/split_values_spec.rb +1 -1
- data/spec/extensions/sql_comments_spec.rb +1 -1
- data/spec/extensions/sql_expr_spec.rb +1 -1
- data/spec/extensions/static_cache_spec.rb +1 -1
- data/spec/extensions/string_agg_spec.rb +2 -2
- data/spec/extensions/string_date_time_spec.rb +1 -1
- data/spec/extensions/string_stripper_spec.rb +1 -1
- data/spec/extensions/subclasses_spec.rb +1 -1
- data/spec/extensions/subset_conditions_spec.rb +1 -1
- data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
- data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
- data/spec/extensions/table_select_spec.rb +4 -4
- data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
- data/spec/extensions/thread_local_timezones_spec.rb +1 -1
- data/spec/extensions/timestamps_spec.rb +3 -3
- data/spec/extensions/to_dot_spec.rb +1 -1
- data/spec/extensions/touch_spec.rb +1 -1
- data/spec/extensions/tree_spec.rb +1 -1
- data/spec/extensions/typecast_on_load_spec.rb +1 -1
- data/spec/extensions/unlimited_update_spec.rb +1 -1
- data/spec/extensions/update_or_create_spec.rb +1 -1
- data/spec/extensions/update_primary_key_spec.rb +4 -3
- data/spec/extensions/update_refresh_spec.rb +1 -1
- data/spec/extensions/uuid_spec.rb +10 -12
- data/spec/extensions/validate_associated_spec.rb +1 -1
- data/spec/extensions/validation_class_methods_spec.rb +3 -3
- data/spec/extensions/validation_contexts_spec.rb +1 -1
- data/spec/extensions/validation_helpers_spec.rb +10 -44
- data/spec/extensions/whitelist_security_spec.rb +5 -5
- data/spec/extensions/xml_serializer_spec.rb +3 -3
- data/spec/guards_helper.rb +2 -1
- data/spec/integration/associations_test.rb +1 -23
- data/spec/integration/database_test.rb +7 -7
- data/spec/integration/dataset_test.rb +5 -47
- data/spec/integration/eager_loader_test.rb +1 -1
- data/spec/integration/migrator_test.rb +1 -1
- data/spec/integration/model_test.rb +4 -82
- data/spec/integration/plugin_test.rb +6 -22
- data/spec/integration/prepared_statement_test.rb +8 -88
- data/spec/integration/schema_test.rb +6 -6
- data/spec/integration/spec_helper.rb +13 -21
- data/spec/integration/timezone_test.rb +5 -5
- data/spec/integration/transaction_test.rb +3 -55
- data/spec/integration/type_test.rb +9 -9
- data/spec/model/association_reflection_spec.rb +24 -9
- data/spec/model/associations_spec.rb +124 -303
- data/spec/model/base_spec.rb +18 -137
- data/spec/model/class_dataset_methods_spec.rb +2 -20
- data/spec/model/dataset_methods_spec.rb +1 -20
- data/spec/model/eager_loading_spec.rb +17 -11
- data/spec/model/hooks_spec.rb +5 -300
- data/spec/model/inflector_spec.rb +1 -1
- data/spec/model/model_spec.rb +15 -320
- data/spec/model/plugins_spec.rb +2 -16
- data/spec/model/record_spec.rb +29 -121
- data/spec/model/spec_helper.rb +5 -15
- data/spec/model/validations_spec.rb +1 -1
- data/spec/sequel_warning.rb +1 -12
- metadata +8 -64
- data/doc/active_record.rdoc +0 -927
- data/lib/sequel/adapters/cubrid.rb +0 -160
- data/lib/sequel/adapters/do.rb +0 -166
- data/lib/sequel/adapters/do/mysql.rb +0 -69
- data/lib/sequel/adapters/do/postgres.rb +0 -46
- data/lib/sequel/adapters/do/sqlite3.rb +0 -41
- data/lib/sequel/adapters/jdbc/as400.rb +0 -92
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
- data/lib/sequel/adapters/odbc/progress.rb +0 -12
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -261
- data/lib/sequel/adapters/shared/informix.rb +0 -63
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift.rb +0 -169
- data/lib/sequel/adapters/swift/mysql.rb +0 -50
- data/lib/sequel/adapters/swift/postgres.rb +0 -49
- data/lib/sequel/adapters/swift/sqlite.rb +0 -48
- data/lib/sequel/adapters/utils/pg_types.rb +0 -4
- data/lib/sequel/dataset/mutation.rb +0 -98
- data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
- data/lib/sequel/extensions/filter_having.rb +0 -65
- data/lib/sequel/extensions/hash_aliases.rb +0 -51
- data/lib/sequel/extensions/meta_def.rb +0 -37
- data/lib/sequel/extensions/query_literals.rb +0 -86
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
- data/lib/sequel/extensions/set_overrides.rb +0 -82
- data/lib/sequel/no_core_ext.rb +0 -4
- data/lib/sequel/plugins/association_autoreloading.rb +0 -11
- data/lib/sequel/plugins/identifier_columns.rb +0 -49
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
- data/lib/sequel/plugins/schema.rb +0 -84
- data/lib/sequel/plugins/scissors.rb +0 -37
- data/spec/core/dataset_mutation_spec.rb +0 -253
- data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/filter_having_spec.rb +0 -42
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/hash_aliases_spec.rb +0 -26
- data/spec/extensions/identifier_columns_spec.rb +0 -19
- data/spec/extensions/meta_def_spec.rb +0 -35
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
- data/spec/extensions/query_literals_spec.rb +0 -185
- data/spec/extensions/schema_spec.rb +0 -123
- data/spec/extensions/scissors_spec.rb +0 -27
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
- data/spec/extensions/set_overrides_spec.rb +0 -75
data/doc/object_model.rdoc
CHANGED
@@ -6,13 +6,12 @@ Sequel objects by calling #new on the object's class (other than Sequel::Model
|
|
6
6
|
instances). However, just as almost everything in ruby is an object, all
|
7
7
|
the methods you call in Sequel deal with objects behind the scenes.
|
8
8
|
|
9
|
-
|
10
|
-
Sequel:
|
9
|
+
In addition to the standard ruby types, there are four main types of
|
10
|
+
Sequel-specific objects that you deal when programming with Sequel:
|
11
11
|
|
12
12
|
* Sequel::Database
|
13
13
|
* Sequel::Dataset
|
14
14
|
* Sequel::Model
|
15
|
-
* Standard Ruby Types
|
16
15
|
* Sequel::SQL::Expression (and subclasses)
|
17
16
|
|
18
17
|
== Sequel::Database
|
@@ -47,27 +46,27 @@ and literalize the object to an SQL string fragment:
|
|
47
46
|
|
48
47
|
== Sequel::Dataset
|
49
48
|
|
50
|
-
Sequel::Dataset objects represent SQL queries
|
51
|
-
abstract collections of rows in the database. They are usually created from
|
49
|
+
Sequel::Dataset objects represent SQL queries. They are created from
|
52
50
|
a Sequel::Database object:
|
53
51
|
|
54
52
|
dataset = DB[:table] # SELECT * FROM "table"
|
55
53
|
dataset = DB.from(table) # SELECT * FROM "table"
|
56
54
|
dataset = DB.select(:column) # SELECT "column"
|
57
55
|
|
58
|
-
Most Sequel::Dataset methods
|
59
|
-
general way to build queries in Sequel is
|
56
|
+
Most Sequel::Dataset methods that do not execute queries return modified
|
57
|
+
copies of the receiver, and the general way to build queries in Sequel is
|
58
|
+
via a method chain:
|
60
59
|
|
61
60
|
dataset = DB[:test].
|
62
61
|
select(:column1, :column2).
|
63
|
-
where(:
|
62
|
+
where(column3: 4).
|
64
63
|
order(:column5)
|
65
64
|
|
66
65
|
Such a method chain is a more direct way of doing:
|
67
66
|
|
68
67
|
dataset = DB[:test]
|
69
68
|
dataset = dataset.select(:column1, :column2)
|
70
|
-
dataset = dataset.where(:
|
69
|
+
dataset = dataset.where(column3: 4)
|
71
70
|
dataset = dataset.order(:column5)
|
72
71
|
|
73
72
|
When you are ready to execute your query, you call one of the Sequel::Dataset
|
@@ -79,8 +78,8 @@ action methods. For returning rows, you can do:
|
|
79
78
|
|
80
79
|
For inserting, updating, or deleting rows, you can do:
|
81
80
|
|
82
|
-
dataset.insert(:
|
83
|
-
dataset.update(:
|
81
|
+
dataset.insert(column: value)
|
82
|
+
dataset.update(column: value)
|
84
83
|
dataset.delete
|
85
84
|
|
86
85
|
All datasets are related to their database object, which you can access via
|
@@ -90,7 +89,7 @@ the Sequel::Dataset#db method:
|
|
90
89
|
|
91
90
|
== Sequel::Model
|
92
91
|
|
93
|
-
Sequel::Model
|
92
|
+
Sequel::Model classes are wrappers around a particular Sequel::Dataset object that
|
94
93
|
add custom behavior, both custom behavior for the entire set of rows in the dataset
|
95
94
|
(the model's class methods), custom behavior for a subset of rows in the dataset
|
96
95
|
(the model's dataset methods), and custom behavior for single rows in the dataset
|
@@ -103,6 +102,13 @@ generally created by the user using standard ruby syntax:
|
|
103
102
|
end
|
104
103
|
album = Album.new
|
105
104
|
|
105
|
+
Model classes that use a non-default Database instance or table name generally
|
106
|
+
use the Sequel::Model method to create the superclass:
|
107
|
+
|
108
|
+
class Album < Sequel::Model(DB[:music_albums])
|
109
|
+
end
|
110
|
+
album = Album.new
|
111
|
+
|
106
112
|
All model classes are related to their Sequel::Dataset object, which you
|
107
113
|
can access via the Sequel::Model.dataset method:
|
108
114
|
|
@@ -121,34 +127,12 @@ if you pass the left side to Sequel::Database#literal.
|
|
121
127
|
|
122
128
|
=== Symbol
|
123
129
|
|
124
|
-
|
130
|
+
Ruby symbols represent SQL identifiers (tables, columns, schemas):
|
125
131
|
|
132
|
+
:schema # "schema"
|
126
133
|
:table # "table"
|
127
134
|
:column # "column"
|
128
135
|
|
129
|
-
By default, Sequel supports splitting symbols using double or triple underscores
|
130
|
-
to represent qualified and aliased identifiers. A symbol with a double underscore
|
131
|
-
is treated as a qualified identifier:
|
132
|
-
|
133
|
-
:table__column # "table"."column"
|
134
|
-
|
135
|
-
A symbol with a triple underscore is treated as an aliased identifier:
|
136
|
-
|
137
|
-
:column___alias # "column" AS "alias"
|
138
|
-
|
139
|
-
A symbol with a double underscore followed by a triple underscore is treated
|
140
|
-
as an aliased qualified identifer:
|
141
|
-
|
142
|
-
:table__column___alias # "table"."column" AS "alias"
|
143
|
-
|
144
|
-
By allowing the creation of qualified and aliased identifiers via symbols,
|
145
|
-
Sequel makes it simpler to represent more SQL expressions. However, if you
|
146
|
-
are using double or triple underscores in your own identifiers, Sequel's
|
147
|
-
automatic splitting of identifiers can be problematic, in which case you
|
148
|
-
may want to turn them off via:
|
149
|
-
|
150
|
-
Sequel.split_symbols = false
|
151
|
-
|
152
136
|
=== Integer, Float, BigDecimal, String, Date, Time, DateTime
|
153
137
|
|
154
138
|
Ruby's Integer, Float, BigDecimal, String, Date, Time, and DateTime classes
|
@@ -166,31 +150,31 @@ represent similar types in SQL:
|
|
166
150
|
|
167
151
|
Sequel generally uses hash objects to represent equality:
|
168
152
|
|
169
|
-
{:
|
153
|
+
{column: 1} # ("column" = 1)
|
170
154
|
|
171
|
-
However, if you use an array as the hash value, it
|
155
|
+
However, if you use an array as the hash value, it represents inclusion in the value list:
|
172
156
|
|
173
|
-
{:
|
157
|
+
{column: [1, 2, 3]} # ("column" IN (1, 2, 3))
|
174
158
|
|
175
159
|
You can also use a Sequel::Dataset instance as the hash value, which will be used to
|
176
160
|
represent inclusion in the subselect:
|
177
161
|
|
178
|
-
{:
|
162
|
+
{column: DB[:table].select(:column)} # ("column" IN (SELECT "column" FROM "table"))
|
179
163
|
|
180
|
-
If you pass true, false, or nil as the hash value, it
|
164
|
+
If you pass true, false, or nil as the hash value, it represents identity:
|
181
165
|
|
182
|
-
{:
|
166
|
+
{column: nil} # ("column" IS NULL)
|
183
167
|
|
184
168
|
If you pass a Range object, it will be used as the bounds for a greater than and less than
|
185
169
|
operation:
|
186
170
|
|
187
|
-
{:
|
188
|
-
{:
|
171
|
+
{column: 1..2} # (("column" >= 1) AND ("column" <= 2))
|
172
|
+
{column: 1...3} # (("column" >= 1) AND ("column" < 3))
|
189
173
|
|
190
174
|
If you pass a Regexp object as the value, it will be used as a regular expression
|
191
|
-
operation
|
175
|
+
operation if the database supports it:
|
192
176
|
|
193
|
-
{:
|
177
|
+
{column: /a.*b/} # ("column" ~ 'a.*b')
|
194
178
|
|
195
179
|
=== Array
|
196
180
|
|
@@ -259,9 +243,8 @@ no additional behavior, so it can be instantiated like a normal array:
|
|
259
243
|
|
260
244
|
Sequel::SQL::ValueList.new([[1, 2], [3, 4]]) # ((1, 2), (3, 4))
|
261
245
|
|
262
|
-
In
|
263
|
-
|
264
|
-
where they are required.
|
246
|
+
In general, you don't need to create Sequel::SQL::ValueList instances manually,
|
247
|
+
they will be created automatically where they are required in most cases.
|
265
248
|
|
266
249
|
The following shortcuts exist for creating Sequel::SQL::ValueList objects:
|
267
250
|
|
@@ -271,16 +254,16 @@ The following shortcuts exist for creating Sequel::SQL::ValueList objects:
|
|
271
254
|
=== Sequel::SQL::Identifier
|
272
255
|
|
273
256
|
Sequel::SQL::Identifier objects represent single identifiers. The main reason for
|
274
|
-
their existence is
|
275
|
-
|
257
|
+
their existence is they support many additional Sequel specific methods that are
|
258
|
+
not supported on plain symbols:
|
276
259
|
|
277
|
-
Sequel::SQL::Identifier.new(:
|
260
|
+
Sequel::SQL::Identifier.new(:colum) # "col"
|
278
261
|
|
279
262
|
The following shortcuts exist for creating Sequel::SQL::Identifier objects:
|
280
263
|
|
281
264
|
Sequel[:column]
|
282
|
-
Sequel.identifier(:
|
283
|
-
:
|
265
|
+
Sequel.identifier(:column)
|
266
|
+
:column.identifier # core_extensions extension
|
284
267
|
|
285
268
|
=== Sequel::SQL::QualifiedIdentifier
|
286
269
|
|
@@ -290,7 +273,6 @@ Sequel::SQL::QualifiedIdentifier objects represent qualified identifiers:
|
|
290
273
|
|
291
274
|
The following shortcuts exist for creating Sequel::SQL::QualifiedIdentifier objects:
|
292
275
|
|
293
|
-
Sequel[:table__column]
|
294
276
|
Sequel[:table][:column]
|
295
277
|
Sequel.qualify(:table, :column)
|
296
278
|
:column.qualify(:table) # core_extensions extension
|
@@ -303,12 +285,14 @@ is treated as an identifier, but the expression can be an arbitrary Sequel expre
|
|
303
285
|
Sequel::SQL::AliasedExpression.new(:column, :alias)
|
304
286
|
# "column" AS "alias"
|
305
287
|
|
288
|
+
Derived column lists are also supported:
|
289
|
+
|
306
290
|
Sequel::SQL::AliasedExpression.new(:table, :alias, [:column_alias1, :column_alias2])
|
307
291
|
# "table" AS "alias"("column_alias1", "column_alias2")
|
308
292
|
|
309
293
|
The following shortcuts exist for creating Sequel::SQL::AliasedExpression objects:
|
310
294
|
|
311
|
-
Sequel[:
|
295
|
+
Sequel[:column].as(:alias)
|
312
296
|
Sequel.as(:column, :alias)
|
313
297
|
Sequel.as(:column, :alias, [:column_alias1, :column_alias2])
|
314
298
|
:column.as(:alias) # core_extensions or symbol_as extension
|
@@ -347,7 +331,7 @@ against:
|
|
347
331
|
|
348
332
|
Or they can treat each condition separately:
|
349
333
|
|
350
|
-
Sequel::SQL::CaseExpression.new({{:
|
334
|
+
Sequel::SQL::CaseExpression.new({{a: 2}=>1}, 0) # CASE WHEN ("a" = 2) THEN 1 ELSE 0 END
|
351
335
|
|
352
336
|
In addition to providing a hash, you can also provide an array of two-element arrays:
|
353
337
|
|
@@ -356,10 +340,10 @@ In addition to providing a hash, you can also provide an array of two-element ar
|
|
356
340
|
The following shortcuts exist for creating Sequel::SQL::CaseExpression objects:
|
357
341
|
|
358
342
|
Sequel.case({2=>1}, 0, :a)
|
359
|
-
Sequel.case({{:
|
343
|
+
Sequel.case({{a: 2}=>1}, 0)
|
360
344
|
|
361
345
|
{2=>1}.case(0, :a) # core_extensions extension
|
362
|
-
{{:
|
346
|
+
{{a: 2}=>1}.case(0) # core_extensions extension
|
363
347
|
|
364
348
|
=== Sequel::SQL::Cast
|
365
349
|
|
@@ -384,16 +368,14 @@ The following shortcuts exist for creating Sequel::SQL::Cast objects:
|
|
384
368
|
|
385
369
|
=== Sequel::SQL::ColumnAll
|
386
370
|
|
387
|
-
Sequel::SQL::ColumnAll objects represent the selection of all columns from a
|
388
|
-
table. They are pretty much only used as arguments to one of the Dataset select
|
389
|
-
methods, and are not used much anymore since Dataset#select_all was expanded to
|
390
|
-
take arguments. Still, it's possible they are still useful in some code:
|
371
|
+
Sequel::SQL::ColumnAll objects represent the selection of all columns from a table:
|
391
372
|
|
392
373
|
Sequel::SQL::ColumnAll.new(:table) # "table".*
|
393
374
|
|
394
375
|
The following shortcut exists for creating Sequel::SQL::ColumnAll objects:
|
395
376
|
|
396
377
|
Sequel[:table].*
|
378
|
+
Sequel[:schema][:table].*
|
397
379
|
:table.* # core_extensions extension
|
398
380
|
|
399
381
|
=== Sequel::SQL::Constant
|
@@ -407,7 +389,7 @@ Sequel namespace:
|
|
407
389
|
|
408
390
|
These objects are usually used as values in queries:
|
409
391
|
|
410
|
-
DB[:table].insert(:
|
392
|
+
DB[:table].insert(time: Sequel::CURRENT_TIMESTAMP)
|
411
393
|
|
412
394
|
=== Sequel::SQL::DelayedEvaluation
|
413
395
|
|
@@ -466,7 +448,7 @@ The first type uses question marks with multiple placeholder value objects:
|
|
466
448
|
The second uses named placeholders with colons and a hash of placeholder
|
467
449
|
value objects:
|
468
450
|
|
469
|
-
Sequel::SQL::PlaceholderLiteralString.new(':b = :v', [{:
|
451
|
+
Sequel::SQL::PlaceholderLiteralString.new(':b = :v', [{b: :a, v: 1}]) # "a" = 1
|
470
452
|
|
471
453
|
The third uses an array instead of a string, with multiple placeholder
|
472
454
|
objects, each one going in between the members of the array:
|
@@ -482,7 +464,7 @@ The following shortcuts exist for creating Sequel::SQL::PlaceholderLiteralString
|
|
482
464
|
objects:
|
483
465
|
|
484
466
|
Sequel.lit('? = ?', :a, 1)
|
485
|
-
Sequel.lit(':b = :v', :
|
467
|
+
Sequel.lit(':b = :v', b: :a, v: 1)
|
486
468
|
Sequel.lit(['', ' = '], :a, 1)
|
487
469
|
|
488
470
|
'? = ?'.lit(:a, 1) # core_extensions extension
|
@@ -552,10 +534,10 @@ Sequel::SQL::Window objects represent the windows used by Sequel::SQL::Function.
|
|
552
534
|
They use a hash-based API, supporting the :frame, :order, :partition, and :window
|
553
535
|
options:
|
554
536
|
|
555
|
-
Sequel::SQL::Window.new(:
|
556
|
-
Sequel::SQL::Window.new(:
|
537
|
+
Sequel::SQL::Window.new(order: :a) # (ORDER BY "a")
|
538
|
+
Sequel::SQL::Window.new(partition: :a) # (PARTITION BY "a")
|
557
539
|
|
558
|
-
Sequel::SQL::Window.new(:
|
540
|
+
Sequel::SQL::Window.new(partition: :a, frame: :all)
|
559
541
|
# (PARTITION BY "a" ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
|
560
542
|
|
561
543
|
=== Sequel::SQL::Wrapper
|
@@ -564,7 +546,7 @@ Sequel::SQL::Wrapper objects wrap arbitrary objects so that they can be used
|
|
564
546
|
in Sequel expressions:
|
565
547
|
|
566
548
|
o = Object.new
|
567
|
-
def o.
|
549
|
+
def o.sql_literal_append(ds, sql) sql << "foo" end
|
568
550
|
Sequel::SQL::Wrapper.new(o) # foo
|
569
551
|
|
570
552
|
The advantage of wrapping the object is that you can the call Sequel methods
|
data/doc/opening_databases.rdoc
CHANGED
@@ -28,12 +28,12 @@ You can use URI query parameters to specify options:
|
|
28
28
|
|
29
29
|
You can also pass an additional option hash with the connection string:
|
30
30
|
|
31
|
-
DB = Sequel.connect('postgres://localhost/blog', :
|
31
|
+
DB = Sequel.connect('postgres://localhost/blog', user: 'user', password: 'password')
|
32
32
|
|
33
33
|
You can also just use an options hash without a connection string. If you do this, you must
|
34
34
|
provide the adapter to use:
|
35
35
|
|
36
|
-
DB = Sequel.connect(:
|
36
|
+
DB = Sequel.connect(adapter: 'postgres', host: 'localhost', database: 'blog', user: 'user', password: 'password')
|
37
37
|
|
38
38
|
All of the above statements are equivalent.
|
39
39
|
|
@@ -43,12 +43,12 @@ The specialized adapter method is similar to Sequel.connect with an options hash
|
|
43
43
|
automatically populates the :adapter option and assumes the first argument is the :database option,
|
44
44
|
unless the first argument is a hash. So the following statements are equivalent to the previous statements.
|
45
45
|
|
46
|
-
DB = Sequel.postgres('blog', :
|
47
|
-
DB = Sequel.postgres(:
|
46
|
+
DB = Sequel.postgres('blog', host: 'localhost', user: 'user', password: 'password')
|
47
|
+
DB = Sequel.postgres(host: 'localhost', user: 'user', password: 'password', database: 'blog')
|
48
48
|
|
49
49
|
Note that using an adapter method forces the use of the specified adapter, not a database type, even
|
50
50
|
though some adapters have the same name as the database type. So if you
|
51
|
-
want to connect to SQLite, for example, you can do so using the sqlite,
|
51
|
+
want to connect to SQLite, for example, you can do so using the sqlite, amalgalite, and jdbc adapters.
|
52
52
|
If you want to connect to SQLite on JRuby using the jdbc adapter, you should not use <tt>Sequel.sqlite</tt>
|
53
53
|
for example, as that uses the C-based sqlite3 gem. Instead, the <tt>Sequel.jdbc</tt> would be appropriate (though
|
54
54
|
as mentioned below, using <tt>Sequel.connect</tt> is recommended instead of <tt>Sequel.jdbc</tt>).
|
@@ -75,22 +75,29 @@ These options are shared by all adapters unless otherwise noted.
|
|
75
75
|
|
76
76
|
:adapter :: The adapter to use
|
77
77
|
:database :: The name of the database to which to connect
|
78
|
+
:cache_schema :: Whether schema should be cached for this database (true by default)
|
79
|
+
:default_string_column_size :: The default size for string columns (255 by default)
|
78
80
|
:host :: The hostname of the database server to which to connect
|
81
|
+
:keep_reference :: Whether to keep a reference to the database in Sequel::DATABASES (true by default)
|
79
82
|
:loggers :: An array of SQL loggers to log to
|
83
|
+
:log_connection_info :: Whether to include connection information in log messages (false by default)
|
84
|
+
:log_warn_duration :: The amount of seconds after which the queries are logged at :warn level
|
80
85
|
:password :: The password for the user account
|
81
86
|
:servers :: A hash with symbol keys and hash or proc values, used with master/slave/partitioned database configurations
|
82
|
-
:
|
83
|
-
:test :: Whether to test that a valid database connection can be made (
|
87
|
+
:sql_log_level :: The level at which to issue queries to the loggers (:info by default)
|
88
|
+
:test :: Whether to test that a valid database connection can be made (true by default)
|
84
89
|
:user :: The user account name to use logging in
|
85
90
|
|
86
91
|
The following options can be specified and are passed to the database's internal connection pool.
|
87
92
|
|
88
93
|
:after_connect :: A callable object called after each new connection is made, with the
|
89
94
|
connection object (and server argument if the callable accepts 2 arguments),
|
90
|
-
useful for customizations that you want to apply to all connections (default
|
91
|
-
:max_connections :: The maximum size of the connection pool (
|
92
|
-
:
|
93
|
-
:
|
95
|
+
useful for customizations that you want to apply to all connections (nil by default).
|
96
|
+
:max_connections :: The maximum size of the connection pool (4 connections by default on most databases)
|
97
|
+
:pool_timeout :: The number of seconds to wait if a connection cannot be acquired before raising an error (5 seconds by default)
|
98
|
+
:preconnect :: Whether to automatically make the maximum number of connections when setting up the pool.
|
99
|
+
Can be set to "concurrently" to connect in parallel.
|
100
|
+
:single_threaded :: Whether to use a single-threaded (non-thread safe) connection pool
|
94
101
|
|
95
102
|
== Adapter specific connection options
|
96
103
|
|
@@ -112,7 +119,6 @@ The following options are supported:
|
|
112
119
|
:command_timeout :: Sets the time in seconds to wait while attempting
|
113
120
|
to execute a command before cancelling the attempt and generating
|
114
121
|
an error. Specifically, it sets the ADO CommandTimeout property.
|
115
|
-
If this property is not set, the default of 30 seconds is used.
|
116
122
|
:driver :: The driver to use in the ADO connection string. If not provided, a default
|
117
123
|
of "SQL Server" is used.
|
118
124
|
:conn_string :: The full ADO connection string. If this is provided,
|
@@ -133,11 +139,11 @@ Example connections:
|
|
133
139
|
Sequel.connect('ado:///sequel_test?host=server%5cdb_instance')
|
134
140
|
Sequel.connect('ado://user:password@server/database?host=server%5cdb_instance&provider=SQLNCLI10')
|
135
141
|
# Access 2007
|
136
|
-
Sequel.ado(:
|
142
|
+
Sequel.ado(conn_string: 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=drive:\\path\\filename.accdb')
|
137
143
|
# Access 2000
|
138
|
-
Sequel.ado(:
|
144
|
+
Sequel.ado(conn_string: 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=drive:\\path\\filename.mdb')
|
139
145
|
# Excel 2000 (for table names, use a dollar after the sheet name, e.g. Sheet1$)
|
140
|
-
Sequel.ado(:
|
146
|
+
Sequel.ado(conn_string: 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=drive:\\path\\filename.xls;Extended Properties=Excel 8.0;')
|
141
147
|
|
142
148
|
=== amalgalite
|
143
149
|
|
@@ -168,17 +174,12 @@ Requires: java
|
|
168
174
|
|
169
175
|
Houses Sequel's JDBC support when running on JRuby.
|
170
176
|
Support for individual database types is done using subadapters.
|
171
|
-
There are currently subadapters for
|
172
|
-
|
173
|
-
For
|
174
|
-
|
177
|
+
There are currently subadapters for DB2, Derby, H2, HSQLDB, JTDS,
|
178
|
+
MySQL, Oracle, PostgreSQL, SQLAnywhere, SQLite, and SQL Server.
|
179
|
+
For Derby, H2, HSQLDB, JTDS, MySQL, Postgres, SQLite3
|
180
|
+
the adapters can use the `jdbc-*` gem, for the others you need to have the `.jar` in your CLASSPATH
|
175
181
|
or load the Java class manually before calling Sequel.connect.
|
176
182
|
|
177
|
-
You just use the JDBC connection string directly, which can be specified
|
178
|
-
via the string given to Sequel.connect or via the :uri, :url, or :database options.
|
179
|
-
Sequel does no preprocessing of the string, it passes it directly to JDBC.
|
180
|
-
So if you have problems getting a connection string to work, look up the JDBC
|
181
|
-
documentation.
|
182
183
|
|
183
184
|
Note that when using a JDBC adapter, the best way to use Sequel
|
184
185
|
is via Sequel.connect, NOT Sequel.jdbc. Use the JDBC connection
|
@@ -189,6 +190,10 @@ SQLite you do not need 2 preceding slashes for the database name
|
|
189
190
|
(use no preceding slashes for a relative path, and one preceding
|
190
191
|
slash for an absolute path).
|
191
192
|
|
193
|
+
Sequel does no preprocessing of JDBC connection strings, it passes them directly to JDBC.
|
194
|
+
So if you have problems getting a connection string to work, look up the
|
195
|
+
documentation for the JDBC driver.
|
196
|
+
|
192
197
|
Example connection strings:
|
193
198
|
|
194
199
|
jdbc:sqlite::memory:
|
@@ -218,8 +223,11 @@ The following additional options are supported:
|
|
218
223
|
and only helps cases where <tt>java.sql.DriverManager.getConnection</tt> does not
|
219
224
|
return a connection.
|
220
225
|
:login_timeout :: Set the login timeout on the JDBC connection (in seconds).
|
226
|
+
:jdbc_properties :: A hash for properties to set, skips the normal connection process of using
|
227
|
+
java.sql.drivermanager.getconnection and tries the backup process of using
|
228
|
+
driver.new.connect for the appropriate driver.
|
221
229
|
|
222
|
-
There are a few issues with specific jdbc
|
230
|
+
There are a few issues with specific jdbc driver gems:
|
223
231
|
|
224
232
|
jdbc-h2 :: jdbc-h2 versions greater than 1.3.175 have issues with ORDER BY not working correctly in some cases.
|
225
233
|
jdbc-postgres :: jdbc-postgres 9.4.1204 has issues using PostgreSQL-specific types in bound variables.
|
@@ -229,15 +237,14 @@ jdbc-postgres :: jdbc-postgres 9.4.1204 has issues using PostgreSQL-specific typ
|
|
229
237
|
|
230
238
|
Requires: mysqlplus (or mysql if mysqlplus is not available)
|
231
239
|
|
232
|
-
The MySQL adapter does not support the pure-ruby
|
233
|
-
ActiveRecord, it requires the native adapter.
|
240
|
+
The MySQL adapter does not support the pure-ruby mysql.rb driver, it requires the C-extension driver.
|
234
241
|
|
235
242
|
The following additional options are supported:
|
236
243
|
|
237
244
|
:auto_is_null :: If set to true, makes "WHERE primary_key IS NULL" select the last inserted id.
|
238
245
|
:charset :: Same as :encoding, :encoding takes precedence.
|
239
246
|
:compress :: Whether to compress data sent/received via the socket connection.
|
240
|
-
:config_default_group :: The default group to read from the in the MySQL config file
|
247
|
+
:config_default_group :: The default group to read from the in the MySQL config file, defaults to "client")
|
241
248
|
:config_local_infile :: If provided, sets the Mysql::OPT_LOCAL_INFILE option on the connection with the given value.
|
242
249
|
:encoding :: Specify the encoding/character set to use for the connection.
|
243
250
|
:fractional_seconds :: On MySQL 5.6.5+, this option is recognized and will include fractional seconds in
|
@@ -251,6 +258,9 @@ The following additional options are supported:
|
|
251
258
|
:read_timeout :: Set the timeout in seconds for reading back results to a query.
|
252
259
|
:connect_timeout :: Set the timeout in seconds before a connection attempt is abandoned.
|
253
260
|
|
261
|
+
The :sslkey, :sslcert, :sslca, :sslcapath, and :sslca options (in that order) are passed to Mysql#ssl_set method
|
262
|
+
if either the :sslca or :sslkey option is given.
|
263
|
+
|
254
264
|
=== mysql2
|
255
265
|
|
256
266
|
This is a newer MySQL adapter that does typecasting in C, so it is often faster than the
|
@@ -286,7 +296,7 @@ The following additional options are supported:
|
|
286
296
|
|
287
297
|
Requires: pg (or postgres-pr/postgres-compat if pg is not available)
|
288
298
|
|
289
|
-
The Sequel postgres adapter works with the pg
|
299
|
+
The Sequel postgres adapter works with the pg and postgres-pr ruby libraries.
|
290
300
|
The pg library is the best supported, as it supports real bound variables and prepared statements.
|
291
301
|
If the pg library is being used, Sequel will also attempt to load the sequel_pg library, which is
|
292
302
|
a C extension that optimizes performance when Sequel is used with pg. All users of Sequel who
|
@@ -386,6 +396,3 @@ Other Sequel specific options:
|
|
386
396
|
This should be specified as an integer. If you plan on setting large
|
387
397
|
text or blob values via tinytds, you should use this option or modify
|
388
398
|
your freetds.conf file.
|
389
|
-
|
390
|
-
The Sequel tinytds adapter requires tiny_tds >= 0.4.5, and if you are using FreeTDS
|
391
|
-
0.91, you must at least be using 0.91rc2 (0.91rc1 does not work).
|