Revision history for DB::Handy

1.05  2026-03-21 JST (Japan Standard Time)

    - New: SELECT * now presents columns in CREATE TABLE declaration order
      (previously alphabetical).  For SELECT * with JOIN, columns follow
      table appearance order (FROM first, then each JOIN), each table's
      columns in declaration order, as 'alias.col' qualified names.
      Named SELECT lists (SELECT a, b) continue to follow the SELECT order.
    - New: INSERT INTO table VALUES (...) without a column list is now
      supported; values are assigned to columns in CREATE TABLE order.
      Mismatched value count returns an error.
    - Added: t/1014_colorder_insert.t (72 tests) covering both features.
    - Updated: POD and README revised; column-order limitation removed.

1.04  2026-03-21 JST (Japan Standard Time)

    - New: pure OR expressions where every atom has an index now use
      index lookups and return the union of matching records, rather
      than a full table scan.  Mixed OR/AND and OR with any unindexed
      column still fall back to a full table scan.
    - Added: t/1013_or_index.t (62 tests) covering OR index acceleration.
    - Updated: POD and README revised to document the new behaviour.

1.03  2026-03-21 JST (Japan Standard Time)

    - New: col IN (v1, v2, ...) predicates on indexed columns now use
      index lookups (one equality lookup per value, results unioned)
      instead of a full table scan.  NOT IN is not optimised.
    - Added: t/1012_in_index.t (56 tests) covering IN index acceleration.
    - Updated: POD and README revised to document the new behaviour.
    - Style: commas in function/method calls are now consistently followed
      by a space (commas inside regex patterns and string literals exempt).
    - Style: \@array references rewritten as [ @array ]; \%hash references
      rewritten as { %hash } where semantically equivalent.
    - Checks: t/0007-cpan_precheck.t gains Category K (3 tests) that
      enforce the above coding-style rules on all .pm files.

1.02  2026-03-21 JST (Japan Standard Time)

    - New: Multi-column AND queries now exploit an available index on
      one of the columns (partial AND index pushdown). Example:
      WHERE dept = 'Eng' AND salary > 70000 uses the dept or salary
      index rather than performing a full table scan.
    - New: INTERSECT, INTERSECT ALL, EXCEPT, and EXCEPT ALL set
      operations are now supported alongside UNION / UNION ALL.
    - Added: t/1011_index_and_setop.t (69 tests) covering both features.
    - Updated: POD and README revised to document the new behaviour.

1.01  2026-03-20 JST (Japan Standard Time)

    - Fixed: CHECK constraints are now enforced on UPDATE as well as INSERT.
    - Fixed: WHERE col BETWEEN lo AND hi and
      WHERE col OP lo AND col OP hi (two-sided AND range on one column)
      now exploit an index when available.
    - Fixed: fetchrow_arrayref, fetchrow_array, and sth->{NAME} now
      reflect the SELECT list column order for named column lists.
      SELECT * and JOIN results still fall back to alphabetical order.
    - Added: t/1010_fixes.t (60 tests) covering the three fixes above.
    - Updated: POD and README revised to document the corrected behaviour.

1.00  2026-03-19 JST (Japan Standard Time)

    - First release on CPAN.
