0.10 2003-12-26
- Initial version.
0.20 2004-01-03
- Added SQL::Interpolate::Filter module for source filtering
with string-like sql// operator.
- Added DBIx::Interpolate module. (thanks jim c)
- Added SQL::Interpolate::SQL module.
- Support macro calls inside SQL (e.g. LIMIT macro).
- Renamed sql_interpolate and dbi_interpolate to sql_interp
and dbi_interp respectively (thanks terrence).
- Changed SQL::Interpolate to not export symbols by default.
- Limited cross-database support for LIMIT clauses.
0.29 2004-12-25
### SQL::Interpolate features
- Added support for ("IN", $scalarref) (thanks mark s)
- Added support for ("INSERT INTO mytable", $scalarref)
- Added support for ("INSERT INTO mytable", $arrayref)
- Added support for ("WHERE {x = 3, y = 4}")
- Added support for ("INSERT HIGH_PRIORITY DELAYED INTO mytable", $ref)
for mysql.
- Added simplified syntax for table joins using
R(...) and LINK(...) macros via new method filter_sql().
- Added OO-interface in addition to the functional one.
- Added support for \%attr to be returned by dbi_interp()
and sent to DBI when new SQL::Intepolate::Attr object is given.
This object may be created by new attr() function.
- Added support for extra $key_field to be returned by
dbi_interp() when instance of new SQL::Interpolate::Key object
is given. This object may be created by new attr() function.
This is for using in DBI::selectall_hashref and similar methods.
- Added exports:
attr, dbi_interp, select_key, limit, make_sql_interp,
make_dbi_interp, filter_sql, sql_flatten, limit
- Added debugging options in use statement: TRACE_SQL, TRACE_FILTER.
- Changed: less extra whitespace around SQL generated by sql_interp().
- Changed: In limit(), for mysql, don't use bind values since they
don't always work right.
- Changed: In limit(), for mysql, $start and/or $count may be undef.
### SQL::Interpolate internal changes
- Dereferencing extra reference that source filtering produces from
sql[$x] when $x is an arrayref or hashref is now performed more
immediately in SQL::Interpolate::SQL::new() rather than sql_interp().
- new SQL::Interpolate::Limit extends SQL::Interpolate::Macro.
- Moved SQL::Interpolate::SQL into SQL::Interpolate
- Fixed some documentation (thanks mark s)
- Added more tests, more complete docs
### DBIx::Interpolate features
- Added new() method in addition to connect() to attach existing
database handle (thanks mark s)
- Added dbh() and interp() methods to expose underlying DBI and
SQL::Interpolate objects.
0.30 2005-01-10
## General
- Refactored SQL::Interpolate module into multiple modules.
Everything except sql_interp-related functionality
moved out of SQL::Interpolate and into DBIx::Interpolate,
SQL::Interpolate::Filter, and SQL::Interpolate::Macro (new module).
(recommended by mark s)
- Reorganized macro processing. SQL::Interpolate contains
only hooks for macro processing, and SQL::Interpolate::Macro
implements various macros.
## SQL::Interpolate
- added sql_var type
- added sql_literal type (thanks mark s)
- ("WHERE x in", []) now generates "WHERE 1" not "WHERE NULL"
- croak not die
- macros, sql_var, and sql_literal can now exist in
elements of aggregates (hashref and arrayref)
## DBIx::Interpolate
- DBIx::Interpolate is now derived from SQL::Interpolate.
- Support for statement handle sets (stx/prepare).
- Renamed select_key() to key_field().
## SQL::Interpolate::Macro
- SQL::Interpolate::SQL is now a macro for uniformity.
- new macros: relations, sql_and, sql_fragment, sql_if,
sql_link, sql_or, sql_paren, sql_rel
- removed limit() macro since MySQL supports Postgres syntax.
(thanks mark s)
## Other
- reorganized POD (thanks mark s)
- reorganized test cases
0.31_01
- SQL::Interpolate: Improved error reporting by sql_interp
(recommended by mark s)
- DBIx::Interpolate: Added Carp
- Other: fixed links in POD