1 Revision history for SQL::Abstract
4 - Complete overhaul of the internals, see the SQL::Abstract::Reference
5 docs to understand the new implementation's affordances.
8 - Add runtime dependency on Test::Deep and Test::Builder::Module for
9 SQL::Abstract::Test (RT#131623)
12 - Remove obsolete documentation about arrayrefref as the $source
13 argument for ->select (removed in version 1.74)
14 - Factor out the field list part of SELECT for subclassability (GH#13)
15 - Do not replace literal '0' with empty string in WHERE clauses (GH#14)
18 - Restore perl version requirement missed in the Distar port
19 - Factor out the SET ... part of UPDATE for subclassability (GH#12)
22 - Restore 'dynamic_config => 0' missed in the Distar port
25 - Support for DELETE ... RETURNING (GH#9)
28 revision 1.82 2017-03-20
29 -------------------------
30 - Add explicit dependency on Sub::Quote (GH#8)
31 - Fix syntax errors in ORDER BY docs (GH#7)
33 revision 1.81_01 2017-02-28
34 ----------------------------
35 - Fix order clauses with bind parameters in ->where
36 - Fix ->insert($table, \@values) with >26 values (RT#112684)
37 - Teach ::Tree that ILIKE (PostgreSQL) and REGEXP (MySQL) are binary ops
38 - Support for UPDATE ... RETURNING
39 - Documentation improvements for ORDER BY
41 revision 1.81 2014-10-25
42 ----------------------------
43 - Fix overly-enthusiastic parenthesis unroller (RT#99503)
45 revision 1.80 2014-10-05
46 ----------------------------
47 - Fix erroneous behavior of is_literal_value($) wrt { -ident => ... }
48 - Explicitly croak on top-level special ops (they didn't work anyway)
50 revision 1.79 2014-09-25
51 ----------------------------
52 - New exportable functions: is_literal_value($) and is_plain_value($)
53 - New attribute 'escape_char' allowing for proper escape of quote_chars
54 present in an identifier
55 - Deprecate { "" => \... } constructs
56 - Treat { -value => undef } as plain undef in all cases
57 - Explicitly throw on { -ident => undef }
59 revision 1.78 2014-05-28
60 ----------------------------
61 - Fix parsing of binary ops to correctly take up only a single LHS
62 element, instead of gobbling up the entire parse-to-date
63 - Explicitly handle ROW_NUMBER() OVER as the snowflake-operator it is
64 - Improve signatures/documentation of is_same_sql_bind / eq_sql_bind
65 - Retire script/format-sql - the utility needs more work to be truly
68 revision 1.77 2014-01-17
69 ----------------------------
70 - Reintroduce { -not => undef } column operator (regression from 1.75)
72 revision 1.75 2013-12-27
73 ----------------------------
74 - *UPCOMING INCOMPATIBLE BUGFIX*: SQLA used to generate incorrect SQL
75 on undef-containing lists fed to -in and -not_in. An exception will
76 be raised for a while before properly fixing this, to avoid quiet
77 but subtle changes to query results in production
78 - Deprecate and warn when supplying an empty arrayref to like/not_like
79 operators (likely to be removed before 2.0)
81 - Warn when using an inequality operator with a multi-value array to
82 arrive at what amounts to a 1=1 condition (no pre-2.0 plans to fix
83 this behavior due to backwards comp concerns)
84 - Fix false negative comparison of ORDER BY <function> ASC
85 - More improvements of incorrect parsing (placeholder at end of list
87 - Fix typos in POD and comments (RT#87776)
88 - Augment -not_bool example with nesting (RT#89601)
90 revision 1.74 2013-06-04
91 ----------------------------
92 - Fix insufficient parenthesis unroll during operator comparison
93 - 'ORDER BY foo' and 'ORDER BY foo ASC' are now considered equal
94 by default (with a switch to reenable old behavior when necessary)
95 - Change parser to not eagerly slurp RHS expressions it doesn't recognize
97 revision 1.73 2012-07-10
98 ----------------------------
99 - Fix parsing of ORDER BY foo + ?
100 - Stop filling in placeholders in `format-sql` since it does not support
101 passing values for them anyway
102 - Fix parsing of NOT EXISTS
103 - Fix over-eager parenthesis unrolling
104 - Fix deep recursion warnings while parsing obnoxiously long sql statements
105 - Fix incorrect comparison of malformed lists
106 - Fix incorrect reporting of mismatch-members in SQLA::Test
107 - Migrate the -ident operator from DBIC into SQLA
108 - Migrate the -value operator from DBIC into SQLA
110 revision 1.72 2010-12-21
111 ----------------------------
112 - Extra checks of search arguments for possible SQL injection attacks
113 - Remove excess parentheses in debug SQL
114 - Fix parsing of foo.* in SQLA::Tree
115 - Fix bindtype fail when using -between with arrayrefref literals
116 - Add handling for NULL for -in
117 - The -nest operator has entered semi-deprecated status and has been
118 undocumented. Please do not use it in new code
120 revision 1.71 2010-11-09
121 ----------------------------
122 - Add EXECUTING for clarity of long running SQL
123 - Add "squash_repeats" option to fix it such that repeated SQL gets ellided
124 except for placeholders
125 - Highlight transaction keywords
127 - Leave quotes from DBIC in bindargs
128 - Add error checking on "profile" for SQLA::Tree
129 - Hide bulk inserts from DBIx::Class
130 - Fix missing doc (RT#62587)
131 - Format functions in MySQL-friendly manner foo( ... ) vs foo ( ... )
133 revision 1.69 2010-10-22
134 ----------------------------
135 - Add quotes for populated placeholders and make the background
136 magenta instead of cyan
137 - Color and indent pagination keywords
138 - Fix a silly bug which broke placeholder fill-in in DBIC
139 - Installs format-sql to format SQL passed in over STDIN
140 - Switch the tokenizer to precompiled regexes (massive speedup)
141 - Rudimentary handling of quotes ( 'WHERE' vs WHERE )
142 - Fix extended argument parsing by IN/BETWEEN
143 - Add proper handling of lists (foo,bar,?)
144 - Better handling of generic -function's during AST construction
145 - Special handle IS NOT? NULL
146 - Make sure unparse() does not destroy a passed in \@bindargs
147 - Support ops with _'s in them (valid in Oracle)
148 - Properly parse both types of default value inserts
149 - Allow { -func => $val } as arguments to UPDATE
151 revision 1.68 2010-09-16
152 ----------------------------
153 - Document methods on Tree
154 - Add affordances for color coding placeholders
155 - Change ::Tree::whitespace to whitespace_keyword
157 revision 1.67_03 2010-09-11
158 ----------------------------
159 - Add docs for SQL::Abstract::Tree->new
160 - correcty merge profile and parameters
161 - added fill_in_placeholders option for excellent copy/pasta
163 revision 1.67_02 2010-09-08
164 ----------------------------
165 - rename DBIx::Class::Storage::PrettyPrinter to DBIx::Class::Storage::Debug::PrettyPrint
166 - decreased a lot of indentation from ::Tree
167 - cleaned up handling of newlines inside of parens
169 revision 1.67_01 2010-09-06
170 ----------------------------
171 - Add SQL::Abstract::Tree
172 - Add unindexed DBIx::Class::Storage::PrettyPrinter
173 - Better documentation of undef/NULL in where clause
174 - Depend on bugfixed Module::Install (now again installs
175 on old < 5.8.3 perls)
177 revision 1.67 2010-05-31 14:21 (UTC)
178 ----------------------------
179 - Fix SQL::Test failure when first chunk is an unrecognized
181 - Generic -not operator tests
182 - More columns-bindtype assertion checks
184 revision 1.66 2010-04-27 02:44 (UTC)
185 ----------------------------
186 - Optimized the quoting mechanism, winning nearly 10%
187 speedup on repeatable sql generation
189 revision 1.65 2010-04-11 19:59 (UTC)
190 ----------------------------
191 - Rerelease last version to not include .svn files
192 and grab MANIFEST.SKIP from DBIx::Class so it
195 revision 1.64 2010-04-11 16:58 (UTC)
196 ----------------------------
197 - Fix multiple generic op handling regressions by
198 reverting the auto-equality assumption (turned out
199 to be a very very bad idea)
201 revision 1.63 2010-03-24 09:56 (UTC)
202 ----------------------------
203 - Add ILIKE to the core list of comparision ops
205 revision 1.62 2010-03-15 11:06 (UTC)
206 ----------------------------
207 - Fixed open outer parens for a multi-line literal
208 - Allow recursively-nested column-functions in WHERE
209 - Bumped minimum perl to 5.6.2 and changed tests to
210 rely on core dependencies
212 revision 1.61 2010-02-05 16:28 (UTC)
213 ----------------------------
214 - Allow INSERT to take additional attributes
215 - Support for INSERT ... RETURNING
216 - Another iteration of SQL::Abstract::Test fixes and improvements
218 revision 1.60 2009-09-22 11:03 (UTC)
219 ----------------------------
220 - fix a well masked error in the sql-test tokenizer
222 revision 1.59 2009-09-22 08:39 (UTC)
223 ----------------------------
224 - fixed a couple of untrapped undefined warnings
225 - allow -in/-between to accept literal sql in all logical
226 variants - see POD for details
227 - unroll multiple parenthesis around IN arguments to accomodate
230 revision 1.58 2009-09-04 15:20 (UTC)
231 ----------------------------
232 - expanded the scope of -bool and -not_bool operators
233 - added proper testing support
235 revision 1.57 2009-09-03 20:18 (UTC)
236 ----------------------------
237 - added -bool and -not_bool operators
239 revision 1.56 2009-05-30 16:31 (UTC)
240 ----------------------------
241 - support for \[$sql, @bind] in order_by clauses e.g.:
242 { -desc => \['colA LIKE ?', 'somestring'] }
244 revision 1.55 2009-05-17 22:54 (UTC)
245 ----------------------------
246 - make sure that sql generation does not mutate the supplied
247 where condition structure
249 revision 1.54 2009-05-07 17:23 (UTC)
250 ----------------------------
251 - allow special_operators to take both code refs and method names
252 (makes it possible to properly subclass the builtin ones)
254 revision 1.53 2009-04-30 14:58 (UTC)
255 ----------------------------
256 - make sure hash keys are sorted in all search sub-conditions
257 - switch installer from EU::MM to M::I
259 revision 1.52 2009-04-28 23:14 (UTC)
260 ----------------------------
261 - allow -between to handle [\"", \""] and \["", @bind]
262 - allow order_by to handle -asc|desc => [qw/colA colB/] (artifact from DBIx::Class)
263 - more tests and clearing up of some corner cases
264 - t/10test.t does not run by default (developer only, too cpu intensive)
266 ----------------------------
267 revision 1.51 2009-03-28 10:00 (UTC)
268 - fixed behavior of [-and => ... ] depending on the current
269 condition scope. This introduces backwards comp with 1.24
271 ----------------------------
272 revision 1.50 2009-03-10 12:30 (UTC)
273 - fixed the problem with values() not behaving the same as the rest of the code (RT#43483)
274 - fixed interjecting arrayrefref into a where clause
275 - added value-only insert test with a literal SQL snippet
276 - cleanup and enhancement of t/03values.t
277 - better handling of borked SQL in tests
278 - deal properly with parentheses in is_same_sql_bind()
279 - fixed test subs (is_same_*) in SQL::Abstract::Test to return the correct test value
280 - do not version MANIFEST
282 Version 1.50 was a major internal refactoring of SQL::Abstract.
283 Great care has been taken to preserve the published behavior
284 documented in previous versions in the 1.* family; however,
285 some features that were previously undocumented, or behaved.
286 differently from the documentation, had to be changed in order
287 to clarify the semantics. Hence, client code that was relying
288 on some dark areas of SQL::Abstract v1.* might behave differently
291 ----------------------------
292 revision 1.49_04 2009-03-03
293 - add support for a [\%column_meta => value] bind value format
295 ----------------------------
296 revision 1.49_03 2009-02-17
297 - clarify syntax of \['...', @bind] when used with a bindtype
300 ----------------------------
301 revision 1.49_02 2009-02-16
302 - added an AST-aware SQL::Abstract::Test library for sql syntax tests
303 - vastly expanded test coverage
304 - support for the { operator => \'...'|\['...', @bind] } syntax
305 allowing to embed arbitrary operators on the LHS
306 - fixed multiple regressions wrt DBIx::Class
308 ----------------------------
309 revision 1.49_01 2009-02-11
310 - support for literal SQL through the [$sql, bind] syntax.
311 - added -nest1, -nest2 or -nest_1, -nest_2, ...
312 - optional support for array datatypes
313 - defensive programming : check arguments to functions/methods
314 - fixed bug with global logic of -and/-or (no side-effects any more)
315 - changed logic for distributing an op over arrayrefs
316 - fixed semantics of _bindtype on array args
317 - dropped the _anoncopy of the %where tree. No longer necessary.
318 - dropped the _modlogic function
319 - Make col => [] and col => {$op => [] } DTRT or die instead of generating
320 broken SQL. Added tests for this.
321 - Added { -desc => 'column' } order by support
322 - Tiny "$_"-related fix for { -desc => 'columns'} order by support
325 ----------------------------
327 date: 2005/08/18 18:41:58; author: nwiger; state: Exp; lines: +104 -50
328 - added patch from Dan Kubb enabling quote_char and name_sep options
329 - added patch from Andy Grundman to enhance _anoncopy for deep refs
330 ----------------------------
332 date: 2005/04/29 18:20:30; author: nwiger; state: Exp; lines: +34 -20
333 added _anoncopy to prevent destroying original; updated docs
334 ----------------------------
336 date: 2005/03/07 20:14:12; author: nwiger; state: Exp; lines: +201 -65
337 added support for -and, -or, and -nest; see docs for details
338 ----------------------------
340 date: 2004/08/25 20:11:27; author: nwiger; state: Exp; lines: +58 -46
341 added patch from Eric Kolve to iterate over all hashref elements
342 ----------------------------
344 date: 2004/06/10 17:20:01; author: nwiger; state: Exp; lines: +178 -12
345 added bindtype param to allow this to work with Orasuck 9+
346 ----------------------------
348 date: 2003/11/05 23:40:40; author: nwiger; state: Exp; lines: +18 -6
349 several bugfixes, including _convert being applied wrong and
350 the edge case field => { '!=', [qw/this that/] } not working
351 ----------------------------
353 date: 2003/11/04 21:20:33; author: nwiger; state: Exp; lines: +115 -34
354 added patch from Philip Collins, and also added 'convert' option
355 ----------------------------
357 date: 2003/05/21 17:22:29; author: nwiger; state: Exp; lines: +230 -74
358 added "IN" and "BETWEEN" operator support, as well as "NOT"
359 modified where() to support ORDER BY, and fixed some bugs too
360 added PERFORMANCE and FORMBUILDER doc sections
361 fixed several bugs in _recurse_where(), it now works as expected
362 added test suite, many thanks to Chas Owens
363 modified all hash access to return keys sorted, to allow cached queries
364 ----------------------------
366 date: 2003/05/08 20:10:56; author: nwiger; state: Exp; lines: +181 -96
367 1.11 interim checking; major bugfixes and order_by, 1.12 will go to CPAN
368 ----------------------------
370 date: 2003/05/02 00:07:30; author: nwiger; state: Exp; lines: +52 -12
371 many minor enhancements to add querying flexibility
372 ----------------------------
374 date: 2002/09/27 18:06:25; author: nwiger; state: Exp; lines: +6 -2
375 added precatch for messed up where string
376 ----------------------------
378 date: 2002/08/29 18:04:35; author: nwiger; state: Exp; lines: +4 -3
380 ----------------------------
382 date: 2001/11/07 22:18:12; author: nwiger; state: Exp; lines: +31 -14
383 added embedded SCALAR ref capability to insert() and update()
384 ----------------------------
386 date: 2001/11/07 01:23:28; author: nwiger; state: Exp; lines: +3 -3
388 ----------------------------
390 date: 2001/11/06 21:09:44; author: nwiger; state: Exp; lines: +14 -6
391 oops, had to actually *implement* the order by for select()!
392 ----------------------------
394 date: 2001/11/06 03:13:16; author: nwiger; state: Exp; lines: +43 -4
396 ----------------------------
398 date: 2001/11/06 03:07:42; author: nwiger; state: Exp; lines: +16 -7
399 added extra layer of ()'s to ensure correct semantics on AND
400 ----------------------------
402 date: 2001/11/06 01:16:31; author: nwiger; state: Exp; lines: +11 -10
403 updated all statements so that they use wantarray to just return SQL if asked
404 ----------------------------
406 date: 2001/10/26 22:23:46; author: nwiger; state: Exp; lines: +112 -15
407 added scalar ref for SQL verbatim in where, fixed bugs, array ref, docs
408 ----------------------------
410 date: 2001/10/24 00:26:43; author: nwiger; state: Exp;