Revision history for Perl module DB::Object 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 - 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