Revision history for Perl module DB::Object

v1.9.0 2026-03-22T14:36:24+0900
    - Updates modules DB::Object::Tables and DB::Object::Query to enable object freeze and thaw.
    - Improved caching of statement objects
    - Added Exception class DB::Object::Exception
    - Implemented serialisation version to ensure compatibility
    - Improved serialisation/deserialisation handling of cached query objects

v1.8.1 2025-08-29T10:54:16+0900
    - Updated method _cache_table in DB::Object

v1.8.0 2025-07-30T11:25:58+0900
    - Minor improvements and cleanup of code

v1.7.0 2025-03-09T16:30:58+0900
    - Improved support for field to datetime objects and decoding json
    - Correcting an oversight in DB::Object::Query::format_statement when a value provided is a scalar reference.
    - Added the on_conflict() method to DB::Object::Mysql::Tables
    - Correcting incomplete implementation of Mysql INSERT ... ON DUPLICATE
    - Added methods field_names, field_names_lc, field_names_uc, field_nullables, field_precisions, field_scales, field_types, number_of_fields, number_of_params, and statement in DB::Object::Statement

v1.6.0 2025-03-06T19:09:05+0900
    - Added support for INSERT ... ON DUPLICATE KEY UPDATE for MySQL

v1.5.0 2025-03-06T12:50:10+0900
    - Added support for LIKE

v1.4.6 2024-11-24T16:31:24+0900
    - Improved where clause to handle JSON->> fields

v1.4.5 2024-11-23T09:45:34+0900
    - Clear error after statement execution

v1.4.4 2024-11-22T16:36:08+0900
    - Updated the private method _convert_datetime2object in DB::Object::Postgres to set the right default format

v1.4.3 2024-09-06T17:33:04+0900
    - Correcting unit test

v1.4.2 2024-09-05T14:30:34+0900
    - Updated dependencies

v1.4.1 2024-09-04T22:27:26+0900
    - Removed some dependencies

v1.4.0 2024-04-13T17:55:40+0900
    - Modified method connect() in DB::Object to use a timeout of 5 seconds, otherwise on some system, the connect attempt would hang for a long time.

v1.3.1 2024-04-11T22:27:49+0900
    - Modified method 'structure' in DB::Object::Mysql::Table to ensure all fields returned are in lowercase.

v1.3.0 2024-04-09T16:53:24+0900
    - Added pg_notifies in DB::Object::Postgres

v1.2.3 2024-04-06T15:21:07+0900
    - Correction of the DBD::SQLite constant bug unresolved previously.

v1.2.2 2024-04-05T15:33:06+0900
    - Corrected a bug when version of DBD::SQLite < 1.71 is used and thus does not have the constant DBD::SQLite::Constants::SQLITE_TEXT

v1.2.1 2024-03-22T13:52:05+0900
    - Correction of unit test to better handle non-existing DBD modules

v1.2.0 2024-03-22T12:12:11+0900
    - Improvement to DB::Object::Query, DB::Object::Postgres::Query and DB::Object::Query::Element

v1.1.3 2024-03-16T23:26:48+0900
    - Minor improvement in DB::Object->do
    - Improvement in DB::Object::Statement->exec that now recognises value provided being DateTime objects and transform them into an ISO8601 string if necessary if there is no formatter set in the object already.
    - Improved documentation a bit for DB::Object::MySQL, DB::Object::Postgres and DB::Object::SQLite

v1.1.2 2024-01-05T16:36:00+0900
    - Minor correction in DB::Object::Query

v1.1.1 2024-01-05T10:36:08+0900
    - Correcting minor issue with the use of constants in unit tests (Gitlab #2)
    - Correcting an oversight (bug) in DB::Object::Postgres::Query in method on_conflict()
    - Correcting number formatting (Gitlab #1)

v1.1.0 2024-01-03T20:15:26+0900
    - Updated DB::Object::Fields::Field method _op_overload() to correct an oversight
    - Improved DB::Object::Query method format_update() to recognise DB::Object::Placeholder

v1.0.0 2023-12-13T12:53:38+0900
    - Corrected the use of _is_hash for a stricter and narrower meaning.
    - Corrected error in _where_having in DB::Object::Query
    - Corrected method structure() in DB::Object::Postgres::Tables to take under account arrays.
    - Updated method 'distinct' in DB::Object::Postgres to allow for multiple arguments.
    - Improved the method structure() in DB::Object:Tables, DB::Object:Postgres::Tables, DB::Object:SQLite::Tables and DB::Object:Mysql::Tables
    - Updated DB::Object::Fields and DB::Object::Field, extending the later
    - Implemented a table object caching mechanism, which is disabled by default

v0.11.9 2023-10-11T20:14:44+0900
    - Corrected malformed signature for distribution release

v0.11.8 2023-10-11T16:55:40+0900
    - Corrected malformed signature for distribution release

v0.11.7 2023-07-04T09:16:13+0900
    - Corrected a minor bug in method execute() in DB::Object::Statement
    - Corrected a bug in DB::Object::Query::Clause in building expressions with AND and OR

v0.11.6 2023-06-21T16:46:21+0900
    - More correction to SQLite test unit

v0.11.5 2023-06-20T08:07:40+0900
    - Minor correction to SQLite test unit

v0.11.4 2023-06-12T14:42:28+0900
    - Added missing overloaded operator in DB::Object::Fields::Field
    - Added ~~ overloaded operator in DB::Object::Fields::Field
    - Updated method _where_having() in DB::Object::Query to allow for litteral condition to be provided as scalar reference
    - Added documentation for DB::Object::ALL, DB::Object::ANY and DB::Object::Expression

v0.11.3 2023-05-02T19:08:40+0900
    - Added ANY and ALL array operator

v0.11.2 2023-03-24T19:19:29+0900
    - Minor correction in method _opt_overload() in class DB::Object::IN

v0.11.1 2023-03-24T13:08:15+0900
    - Updated DB::Object::Query::_group_order() to accept an array object as an argument.
    - Added method columns() in DB::Object::Tables
    - Improved method select() in DB::Object::Query
    - Corrected method _group_order() in DB::Object::Query to use the right column prefix
    - Added the class DB::Object::IN in DB::Object and method DB::Object::IN() to implement the SQL operator "IN"
    - Added the class DB::Object::Expression inside DB::Object
    - Corrected a warning due to undefined value in DB::Object::Fields
    - Corrected method _where_having() in DB::Object::Query that did not handle properly embedded operators AND/OR

v0.11.0 2022-12-22T21:35:05+0900
    - Minor correction to method format_update() in DB::Object::Query
    - Implemented handling of use of unknown fields (via the $tbl->fo->some_field mechanism)
    - Created new Module DB::Object::Fields::Unknown
    - Updated methods _group_order(), _where_having() in DB::Object::Query
    - Updated _process_limit in DB::Object::Query to take under account user-specified placeholders
    - Also updated DB::Object::Mysql::Query, DB::Object::Postgres::Query and DB::Object::SQLite::Query

v0.10.5 2022-11-11T19:07:06+0900
    - Minor correction in DB::Object::Mysql

v0.10.4 2022-11-01T20:48:31+0900
    - Improved error handling in the execute() method in DB::Object::Statement
    - Corrected DB::Object::Postgres::Tables to use PG_VARCHAR when table field is a CHAR otherwise data would be truncated <https://github.com/bucardo/dbdpg/issues/103>
    - Made minor improvements to other modules

v0.10.3 2022-06-29T15:18:09+0900
    - Updated DB::Object, DB::Object::Postgres and DB::Object::SQLite to handle cases where there is no local time zone set up.
    - Improved all modules to run under stricter mode.
    - Improved $TYPE_TO_CONSTANT hash table in DB::Object::Postgres::Tables

v0.10.2 2021-08-30T02:57:37+0900
    - Added missing parameter cache_connection among acceptable connection parameters
    - Added DB::Object::Placeholder class to better handle placeholders embedded in expressions
    - Updated DB::Object::Fields::Field and DB::Object::Query->_where_having to use placeholder objects
    - Improved DB::Object::Fields::Field so that it accepts values as-is when they are passed as scalar reference
    - Added methods dollar_placeholder and server_prepare in DB::Object::Postgres::Query to influence the prepare statement for the ongoing statement
    - Added method name in DB::Object::Postgres::Statement to set/get a name for the statement.
    - Modified _cache_this() to enable passing prepare options enabled in DB::Object::Query
    - Minor improvement in DB::Object::connect

v0.10.1 2021-08-29T16:13:07+0900
    - Correcting minor bug in DB::Object::Postgres::Statement->disable_trigger

v0.10.0 2021-08-29T12:03:12+0900
    - Added method get_sql_type() to get driver specific constant called in DB::Object::Query and sub classes
    - Added support for sub-query in tables/view fields operations in DB::Object::Fields::Field
    - Added support for disabling and enabling triggers in DB::Object::Postgres::Table
    - Added support for temporarily disabling and enabling triggers on an existing query in DB::Object::Postgres::Statement
    - Added method promise in DB::Object::Statement to perform asynchronous query and returning a promise (Promise::Me) object
    - Added method types_const() in DB::Object::Tables, which is a column name to hash of data type constant and name properties created by DB::Object::Tables->structure. This is then shared with the DB::Object::Fields::Field object and enables better placeholder management
    - Added method constant in DB::Object::Fields::Field which returns an hash object with the following properties: constant (integer), name (string), and type (string)

v0.9.15 2021-08-20T02:40:51+0900
    - Moved on_conflict from DB::Object to DB::Object::Tables, and DB::Object::Postgres to DB::Object::Postgres::Table and DB::Object::SQLite to DB::Object::SQLite::Tables where it belongs
    - Moved alias as_string avoid insert limit local order replace reset returning reverse select sort tie unix_timestamp update where to DB::Object::Query
    - Updated the pod documentation with links for all of the above
    - Corrected a small bug in DB::Object::Postgres::Tables->on_conflict whereby an error was assumed when the turn value from DB::Object::Postgres::Query->on_conflict was false, but the latter returned a legitimate empty string that was mis-construed as an error
    - In DB::Object->table, which is used to instantiate DB::Object::Tables object, since it uses a cache to increase speed, here if a cached table object, it is cloned before it is returned to avoid undesirable effect like some table alias previously set and disturbing potential new queries.
    - Added some typical typo-catching warnings in where clause in DB::Object::Query->_where_having when a field object (DB::Object::Fields::Field) is provided without assignment.
    - Added coding typo catching in DB::Object::Tables::AUTOLOAD for when the user called a table field on a table object instead of using the table fields object method 'fields_object'
    - Corrected bug where chained method like select->join lead to loss of properties which disrupted the join condition

v0.9.14 2021-08-17T06:39:36+0900
    - Added use warnings to all modules
    - Updated DB::Object::Statement::execute to make sure stringifyable objects are stringified before they are passed as binded values to DBI's bind_param
    - Update DB::Object::Postgres::Query and DB::Object::SQLite::Query to warn when ON CONFLICT clause was used for queries other than INSERT

v0.9.13 2021-08-12T19:44:26+0900
    - Updated DB::Object::Postgres::Query::format_statement to properly handle placeholders set during insert or update and updated DB::Object::Statement to recognise the use of those placeholders without necessarily reverting to enabling use_bind
    - Major overhaul of the documentation for all modules

v0.9.12 2021-03-20T22:18:01+0900
    - Added usage of Module::Generic::Datetime when converting timestamp to object
    - Added overloading for DB::Object::Fields::Field
    - Changed method execute() in DB::Object::Statement to return an object when it is called in chaining, ie caller wants an object
    - Use inherited Module::Generic::_get_args_as_hash tog et option parameters in DB::Object::Postgres::Query
    - Implemented table alias
    - Corrected a bug in DB::Object::Query::getdefault()

v0.9.11 2020-10-12T09:54:30+0900
    - Added the method last_insert_id in DB::Object::Postgres::Statement

v0.9.10 2020-06-13T14:20:11+0900
    - updated _check_default_option to recognise both utf8 and utf-8

v0.9.9 2020-06-09T15:05:16+0900
    - Improved test unit for SQLite

v0.9.8 2020-06-08T23:11:49+0900
    - Corrected a bug in DB::Object::Query::_where_having which prevented query like where( field1 => 'something', field2 => 'something else' ) from working.

v0.9.7 2020-05-28T15:06:43+0900
    - Corrected test unit check when compiled with increased floating point accuracy. Should fix bug RT #132719

v0.9.6 2020-05-28T13:57:41+0900

v0.9.5 2020-05-21T08:24:40+0900
    - Change from TryCatch to Nice::Try because TryCatch got broken with release of Devel::Declare version 0.006020

v0.9.4 2020-05-16T18:48:16+0900
    - Modified DB::Object::where to enable chaining, which was missing $tbl->where( active => 1 )->merge( $dbh->AND( $other_where_clause ) );
    - Corrected a minor warning in DB::Object::Cache::Table

v0.9.3 2020-05-16T11:41:43+0900

v0.9.2 2020-04-14 Corrected documentation on DB::Object

v0.9.1 2020-04-13T16:06:50+0900

v0.8.0 2020-03-31T23:58:29+0900
    - Improved _where_having in DB::Object::Query

v0.7.0 2020-03-31T20:49:03+0900

v0.6.0 2020-03-31T16:21:16+0900
    - Correction of bug in t/002_postgres.t

v0.5.0 2020-03-28T19:58:09+0900
    - Improved version with bug fixes for DB::Object::Mysql
    - Bug fixed for DB::Object::Mysql and DB::Object::Mysql::Query and improved support for regular expression in DB::Object::Query when creating a WHERE or HAVING clause

v0.4.14 2020-03-28T15:13:19+0900

v0.4.13 2020-03-27T00:26:54+0900

v0.4.12 2020-01-08T13:25:53+0900

v0.4.11 2019-12-31T19:55:08+0900

v0.4.10 2019-11-29T12:11:55+0900

v0.4.9 2019-10-14T12:02:59+0900

v0.4.8 2019-10-11T16:22:13+0900

v0.4.7 2019-10-05T13:29:46+0900

v0.2.0 2019-08-26T02:30:22+0900
    - original version; created by ExtUtils::ModuleMaker 0.63
