Changes log for Perl extension SQL::Statement
[Bug fixes]
* Move test dependencies to (unreleased) Bundle::Test::SQL::Statement
to avoid circular dependencies
[Bug fixes]
* Fixed invalid check for escaped single quotes
* Fixed unpermitted modification of array source for table creation
(CREATE TABLE AS IMPORT(?),[[..],[..]])
[Improvements]
* renamed fetch-method into fetch_row (keep fetch() as alias) and
add a fetch_rows() to fetch all rows at once
* Different accessors for direction of ORDER BY clause query part
and it's boolean equivalent "desc" (0 or 1, respectively)
* Add a lot of Pure-Perl DBD's as build dependency for testing
(skip DBD::AnyData for now, because it seems to be broken - check
for next release)
[Misc]
* Bump requirement of DBI to 1.616
* switch for fully external DBD tests from DBD::XBase to DBD::SQLite
* Document another limitation (lacking implicit creating temp table
during processing a query using the same table with different aliases
twice)
[Bug fixes]
* Fix misbehaviour of DELETE/UPDATE for tables with only basic capabilities
and no matching where clause (reported by H.Merijn Brand and Drew ...)
* Fix some column identifier splits to respect quoted tables
[Improvements]
* Optimized some core routines between 25% and 50%.
[Bug fixes]
* remove blib directory from distfile
[Bug fixes]
* add some getters as documented in SQL::Statement::Structure
(fixes RT#59834, thanks John Wiersba)
* add missing import of function croak to SQL::Statement::Term::ColumnValue
* fix assignment of parser result (doesn't run with perl-5.13.3)
[Improvements]
* Introduce new "capability" method for SQL::Statement and SQL::Eval::Table
+ Add capability for "insert_new_row" to allow DBD::DBM to fix PK
constrain on INSERT statements.
* Performance of IMPORT feature improved (thanks to Sven Probst, RT#57322)
[Bug fixes]
* expect every table object being derived from SQL::Eval::Table
* rewrite DELETE and UPDATE command based on table capabilities
* add abstract methods for all methods derived classes must override
(this means, open_table for SQL::Statement deriveds must be overridden
and all data access methods of tables - see SQL::Eval::Table for details)
* Tests are fixed to use TEMP TABLES explicitely when required
* check for invalid column names fixed
* Don't let depreciated parser structures stay alive in SQL::Statement when
reusing the Parser
[Documentation]
* Method documentation of SQL::Statement and SQL::Eval::Table are improved
* Add a Roadmap describing future plans for SQL::Statement (in addition to
DBD::File::Roadmap).
* POD spelling fixes provided by H.Merijn Brand and Pod::Spell::CommonMistakes
(thanks Tux)
* POD grammar fixes and reasonable sentences created by Martin Evans
[Things that may break your code]
* SQL::Statement 1.28 is expected not to work proper in combination with
DBI 1.611 and below
* SQL::Statement::ColumnValue expects now every table being derived from
SQL::Eval::Table
[Bug fixes]
* use originally given table name for open_table() on SELECT, too
(all other command still use the originally given name)
* warn/die -> carp/croak
* fix delete_one_row & update_one_row ability using
[Documentation]
* Apply spelling fix patch from Ansgar Burchardt (RT#56475)
[Bug fixes]
* Handle NULL columns in concatenation as empty strings
[Improvements]
* Change regex's in parser to use \p{Word} instead of \w to allow unicode
support
[Documentation]
* Make clear, that identifiers are handled case insensetive and there is
a real good solution provided by DBI which allows to live great with
that behaviour.
[Bug fixes]
* Keep org_table_names with schema information to allow derived
table classes to handle as it seems reasonable there
* Separate columns with "\0" in multi-column aggregation to be able to
difference between ('1','1foo') and ('11','foo')
[Misc]
* More resources added to META.yml
[Misc]
* Ignore *.rej in MANIFEST.SKIP (fixes RT #52081 reported by
Lars Thegler)
[Bug fixes]
* Add missing import of _INSTANCE in SQL::Statement::Function::NumericEval
fixes RT #52356 - reported by Detlef Pilzecker)
* Fix wrongly discarded DISTINCT clause (RT#53186)
[Improvements]
* Fix parsing errors of plain numbers (RT#16931)
* Fix parsing errors of nested calculation / functions (RT#16931, RT#52356)
* Rewrite result calculation of aggregation functions (simplify code, speed up)
* Upgrade Makefile.PL (patch from Alexandr Ciornii) to handle different
EU::MM versions and abilities properly
* Update documentation to show how 'column_defs' and SQL::Statement::Term
instances shall be used
* Introduce SQL::Dialect::Role providing ini-style data access to SQL::Dialects
(patch from Michael Schwern)
[Things that may break your code]
* SQL::Parser now didn't deliver a struct containing 'column_names',
'computed_columns' and 'set_functions' - it's combined into one member
'column_defs'.
* Minimum required perl version is now 5.8 - upcoming next version of DBI
requires perl 5.8, too - and I could simplify some code that's why
[Misc]
* Applied patch from Marc Espie which fixes several orthographic
errors in SQL::Statement::Syntax documentation.
* Added a fixed version of test reported via RT #34121
[Bug fixes]
* Fix an issue in UPDATE command which 'shift's the values from
the list of parameters which causes there're no more parameters
left after first row get's updated (Fixes RT #50788)
* Fix aggregate function handling of new code since 1.21_01
* Correct handling of DISTINCT in aggregate functions
[Improvements]
* Add support for tables/columns starting with '_' for CSV and AnyData,
which is usually forbidden by ANSI SQL
* Add support for inserting multiple lines with one statement
(fixes RT #31730)
* Handle ANSI 'IS NULL' and CVS/AnyData 'IS NULL' different
[Things that may break your code]
* row_value now expects up to two arguments
[Misc]
* Add missing changelog - no code changes
[Misc]
* remove version dependency to check previously installed version
* add DBD::File as "Test" requirement
[Bug fixes]
* Add additional test for bug-fix in 1.21_7 to t/18bigjoin.t
[Misc]
* Correct some typo's in POD
[Bug fixes]
* Don't fail for non-existent columns introduced by functions
in joins
[Bug fixes]
* Don't abort Makefile.PL when in automated smoke tests
[Bug fixes]
* table order isn't wrongly used in order of appearance when SQL::Parser
couldn't determine an order
* Some internal fixes
[Misc]
* Updated dependency to Params::Util to non-leaking 1.00
* Note dependency to Carp and Data::Dumper
* rely on version to compare versions
* Update POD for terms
* Update
[Bug fixes]
* modify regex to match types to fix problems with Perl 5.6.2
* add DESTROY methods to ensure clean up
* fix lower casing internal table names when joining tables
* replace parameter shifting by assigning @_ to the list of parameters
[Things that may break your code]
* When someone accesses the where_clause attribute of the SQL::Statement
instance - be aware that now IN and BETWEEN can be native entries
[Bug fixes]
* convert operation to upper case when surely initialized
[Improvements]
* IN and BETWEEN are now native operations - they are not expanded
to OR'ed equalize operations anymore
[Things that may break your code]
* modify behavior for unquoted identifiers - they're converted and
returned lower cased now (instead upper cased as in 1.21_1)
Fixes bug RT #48502
[Things that may break your code]
* removed SQL::Statement::Column
* don't instantiate SQL::Statement::Functions objects
* Reworked internal column and function handling to reduce code complexity
* rows and columns aren't setable from outside a table or eval object
anymore
[Bug fixes and other changes]
* Fixed bugs:
+ RT #47292: Test failures with recent DBI
+ RT #44512: Patch for CREATE TABLE parsing
+ RT #42676: tests 16 failed
Additional (profiled) optimizations for complicated where clauses
No code changes within SQL::Statement - but deliver and execute additional tests.
joins are "ambiguous" [patch]
name are not called
thanks for patch, Robert Rothenberg
thanks for patch, cpanATgoess.org
thanks for patch Steffen G., steffenATkonzeptloses.de
thanks for patch, chromatic
thanks for suggestion, gipeol@sci.kun.nl
SQL::Parser changes:
- removed recursion from get_in(), get_btwn()
- fixed paren scan and argument separator scan in get_in()
- optimized get_in/get_btwn code
- made get_in/get_btwn OO methods to support
being overridden by subclasses
- added transform_syntax() abstract method
to permit subclasses to add their own
syntax extensions
- rewrite of parens_search() to fixed predicate
paren processing, remove recursion, and optimize
code
- rewrite of non_parens_search() to fixed predicate
paren processing and optimize code
- rewrite of PREDICATE to optimize code; moved
operator regex construction to dialect
initialization
- change undo_string_funcs(), undo_math_funcs(),
nongroup_numeric(), nongroup_string()
to remove scoped recursion
- fixed nongroup_numeric() for case insensitive
operator match
- fixed nongroup_string, undo_string_funcs() to
include user defined funcs
- fixed ROW_VALUE's scan for user defined function
argument separator scan
* fixed function detection regex in SQL::Parser::ROW_VALUE
to accomodate arbitrary spacing
* fixed SQL::Parser::SELECT_LIST()/extract_column_list()
to support concat operator '||' expressions
* added following functions to SQL::Statement::Functions:
- COALESCE
- NVL (same as COALESCE)
- DECODE (same as Oracle DECODE)
- CONCAT
- REPLACE/SUBSTITUTE
* fixed/adapted SQL::Statement::get_row_value(),
SQL::Statement::SELECT(), for join'ed
resultsets
Fixed bug in UPDATE that caused the new value to be a hash rather than a scalar.
This is the first CPAN release of the pure perl version of the module. It was previously released in an XS version by Jochen Wiedman who has turned over maintenance of it to me.
The new Pure Perl version of SQL::Statement supports everything supported by the XS version and, additionally, at least partial support for the following features that are not supported at all by the XS version: