Release 1.81_01
[dbsrgits/SQL-Abstract.git] / Changes
CommitLineData
41751122 1Revision history for SQL::Abstract
e3dd5e89 2
f0724630 3revision 1.81_01 2017-02-28
4----------------------------
26fe4d30 5 - Fix order clauses with bind parameters in ->where
19b6ccce 6 - Fix ->insert($table, \@values) with >26 values (RT#112684)
bf782d2e 7 - Teach ::Tree that ILIKE (PostgreSQL) and REGEXP (MySQL) are binary ops
3d8d0a21 8 - Support for UPDATE ... RETURNING
389a3147 9 - Documentation improvements for ORDER BY
26fe4d30 10
4baf4bbe 11revision 1.81 2014-10-25
12----------------------------
a5f91feb 13 - Fix overly-enthusiastic parenthesis unroller (RT#99503)
14
cfc7db76 15revision 1.80 2014-10-05
16----------------------------
52ce7dca 17 - Fix erroneous behavior of is_literal_value($) wrt { -ident => ... }
ddd6fbb6 18 - Explicitly croak on top-level special ops (they didn't work anyway)
52ce7dca 19
0ca23f3b 20revision 1.79 2014-09-25
21----------------------------
0da0fe34 22 - New exportable functions: is_literal_value($) and is_plain_value($)
46be4313 23 - New attribute 'escape_char' allowing for proper escape of quote_chars
24 present in an identifier
b5a576d2 25 - Deprecate { "" => \... } constructs
422ed2de 26 - Treat { -value => undef } as plain undef in all cases
8aa76984 27 - Explicitly throw on { -ident => undef }
46be4313 28
b54fd911 29revision 1.78 2014-05-28
30----------------------------
08e16360 31 - Fix parsing of binary ops to correctly take up only a single LHS
32 element, instead of gobbling up the entire parse-to-date
0ec2e265 33 - Explicitly handle ROW_NUMBER() OVER as the snowflake-operator it is
70c6f0e9 34 - Improve signatures/documentation of is_same_sql_bind / eq_sql_bind
5f3fa0ac 35 - Retire script/format-sql - the utility needs more work to be truly
36 end-user convenient
08e16360 37
4c120a34 38revision 1.77 2014-01-17
39----------------------------
40f2f231 40 - Reintroduce { -not => undef } column operator (regression from 1.75)
41
f0770d6b 42revision 1.75 2013-12-27
43----------------------------
032dfe20 44 - *UPCOMING INCOMPATIBLE BUGFIX*: SQLA used to generate incorrect SQL
45 on undef-containing lists fed to -in and -not_in. An exception will
46 be raised for a while before properly fixing this, to avoid quiet
47 but subtle changes to query results in production
3cdadcbe 48 - Deprecate and warn when supplying an empty arrayref to like/not_like
49 operators (likely to be removed before 2.0)
032dfe20 50
3cdadcbe 51 - Warn when using an inequality operator with a multi-value array to
52 arrive at what amounts to a 1=1 condition (no pre-2.0 plans to fix
53 this behavior due to backwards comp concerns)
c84a4321 54 - Fix false negative comparison of ORDER BY <function> ASC
f0770d6b 55 - More improvements of incorrect parsing (placeholder at end of list
56 element)
3af02ccb 57 - Fix typos in POD and comments (RT#87776)
23401b81 58 - Augment -not_bool example with nesting (RT#89601)
c84a4321 59
3cb8f017 60revision 1.74 2013-06-04
61----------------------------
1de1d085 62 - Fix insufficient parenthesis unroll during operator comparison
0c2de280 63 - 'ORDER BY foo' and 'ORDER BY foo ASC' are now considered equal
64 by default (with a switch to reenable old behavior when necessary)
6f30911f 65 - Change parser to not eagerly slurp RHS expressions it doesn't recognize
2266ca5c 66
d9ff7a90 67revision 1.73 2012-07-10
b4bd7d31 68----------------------------
73835ff0 69 - Fix parsing of ORDER BY foo + ?
0bfe80fd 70 - Stop filling in placeholders in `format-sql` since it does not support
71 passing values for them anyway
af75bd59 72 - Fix parsing of NOT EXISTS
007f0853 73 - Fix over-eager parenthesis unrolling
0f9a26cb 74 - Fix deep recursion warnings while parsing obnoxiously long sql statements
7cc47319 75 - Fix incorrect comparison of malformed lists
6f2a5b66 76 - Fix incorrect reporting of mismatch-members in SQLA::Test
cc422895 77 - Migrate the -ident operator from DBIC into SQLA
78 - Migrate the -value operator from DBIC into SQLA
af75bd59 79
64b9e432 80revision 1.72 2010-12-21
81----------------------------
b6251592 82 - Extra checks of search arguments for possible SQL injection attacks
c01ac648 83 - Remove excess parentheses in debug SQL
257ecc8a 84 - Fix parsing of foo.* in SQLA::Tree
5e5cbf51 85 - Fix bindtype fail when using -between with arrayrefref literals
279eb282 86 - Add handling for NULL for -in
48d9f5f8 87 - The -nest operator has entered semi-deprecated status and has been
88 undocumented. Please do not use it in new code
257ecc8a 89
d7d3d158 90revision 1.71 2010-11-09
2b340ec7 91----------------------------
416cdb2e 92 - Add EXECUTING for clarity of long running SQL
66c2fcc3 93 - Add "squash_repeats" option to fix it such that repeated SQL gets ellided
b25246f0 94 except for placeholders
667dd26d 95 - Highlight transaction keywords
96 - Highlight HAVING
97 - Leave quotes from DBIC in bindargs
98 - Add error checking on "profile" for SQLA::Tree
99 - Hide bulk inserts from DBIx::Class
b912ee1e 100 - Fix missing doc (RT#62587)
c4d7cfcf 101 - Format functions in MySQL-friendly manner foo( ... ) vs foo ( ... )
fab0bed9 102
9f7f28c4 103revision 1.69 2010-10-22
104----------------------------
c0eaa9fd 105 - Add quotes for populated placeholders and make the background
106 magenta instead of cyan
107 - Color and indent pagination keywords
bd05b0bc 108 - Fix a silly bug which broke placeholder fill-in in DBIC
109 - Installs format-sql to format SQL passed in over STDIN
4d3dc03a 110 - Switch the tokenizer to precompiled regexes (massive speedup)
111 - Rudimentary handling of quotes ( 'WHERE' vs WHERE )
0336eddb 112 - Fix extended argument parsing by IN/BETWEEN
b3b79607 113 - Add proper handling of lists (foo,bar,?)
114 - Better handling of generic -function's during AST construction
115 - Special handle IS NOT? NULL
3a247d23 116 - Make sure unparse() does not destroy a passed in \@bindargs
b8db59b8 117 - Support ops with _'s in them (valid in Oracle)
efc991a0 118 - Properly parse both types of default value inserts
0ec3aec7 119 - Allow { -func => $val } as arguments to UPDATE
4d3dc03a 120
4ee5e99c 121revision 1.68 2010-09-16
122----------------------------
ee4227a7 123 - Document methods on Tree
9d11f0d4 124 - Add affordances for color coding placeholders
ee4227a7 125 - Change ::Tree::whitespace to whitespace_keyword
126
c22f502d 127revision 1.67_03 2010-09-11
fb272e73 128----------------------------
c22f502d 129 - Add docs for SQL::Abstract::Tree->new
2fed0b4b 130 - correcty merge profile and parameters
fb272e73 131 - added fill_in_placeholders option for excellent copy/pasta
132
ba0151e5 133revision 1.67_02 2010-09-08
134----------------------------
0d5df7d6 135 - rename DBIx::Class::Storage::PrettyPrinter to DBIx::Class::Storage::Debug::PrettyPrint
ba0151e5 136 - decreased a lot of indentation from ::Tree
0d5df7d6 137 - cleaned up handling of newlines inside of parens
ba0151e5 138
139revision 1.67_01 2010-09-06
140----------------------------
141 - Add SQL::Abstract::Tree
142 - Add unindexed DBIx::Class::Storage::PrettyPrinter
b864ba9b 143 - Better documentation of undef/NULL in where clause
b66dea8d 144 - Depend on bugfixed Module::Install (now again installs
145 on old < 5.8.3 perls)
b864ba9b 146
6262db95 147revision 1.67 2010-05-31 14:21 (UTC)
148----------------------------
54629227 149 - Fix SQL::Test failure when first chunk is an unrecognized
150 literal
151 - Generic -not operator tests
c178aa6c 152 - More columns-bindtype assertion checks
54629227 153
4414eec5 154revision 1.66 2010-04-27 02:44 (UTC)
155----------------------------
955e77ca 156 - Optimized the quoting mechanism, winning nearly 10%
157 speedup on repeatable sql generation
158
f3e44aee 159revision 1.65 2010-04-11 19:59 (UTC)
160----------------------------
161 - Rerelease last version to not include .svn files
162 and grab MANIFEST.SKIP from DBIx::Class so it
163 won't happen again
164
9d48860e 165revision 1.64 2010-04-11 16:58 (UTC)
166----------------------------
953d164e 167 - Fix multiple generic op handling regressions by
168 reverting the auto-equality assumption (turned out
169 to be a very very bad idea)
170
c167ebd8 171revision 1.63 2010-03-24 09:56 (UTC)
172----------------------------
2d2df6ba 173 - Add ILIKE to the core list of comparision ops
174
8d3bb2b1 175revision 1.62 2010-03-15 11:06 (UTC)
176----------------------------
3080e415 177 - Fixed open outer parens for a multi-line literal
f2532629 178 - Allow recursively-nested column-functions in WHERE
75151f36 179 - Bumped minimum perl to 5.6.2 and changed tests to
180 rely on core dependencies
171a709f 181
e6ea8200 182revision 1.61 2010-02-05 16:28 (UTC)
183----------------------------
fee677ba 184 - Allow INSERT to take additional attributes
185 - Support for INSERT ... RETURNING
b9a4fdae 186 - Another iteration of SQL::Abstract::Test fixes and improvements
187
0f2b8636 188revision 1.60 2009-09-22 11:03 (UTC)
189----------------------------
30d09fa9 190 - fix a well masked error in the sql-test tokenizer
191
2de6e226 192revision 1.59 2009-09-22 08:39 (UTC)
193----------------------------
194 - fixed a couple of untrapped undefined warnings
195 - allow -in/-between to accept literal sql in all logical
e41c3bdd 196 variants - see POD for details
2de6e226 197 - unroll multiple parenthesis around IN arguments to accomodate
e41c3bdd 198 crappy databases
bd6a65ca 199
277b5d3f 200revision 1.58 2009-09-04 15:20 (UTC)
201----------------------------
202 - expanded the scope of -bool and -not_bool operators
203 - added proper testing support
204
205revision 1.57 2009-09-03 20:18 (UTC)
206----------------------------
207 - added -bool and -not_bool operators
208
a120d3e3 209revision 1.56 2009-05-30 16:31 (UTC)
210----------------------------
211 - support for \[$sql, @bind] in order_by clauses e.g.:
212 { -desc => \['colA LIKE ?', 'somestring'] }
213
54871ee9 214revision 1.55 2009-05-17 22:54 (UTC)
215----------------------------
ce261791 216 - make sure that sql generation does not mutate the supplied
217 where condition structure
218
73081069 219revision 1.54 2009-05-07 17:23 (UTC)
220----------------------------
221 - allow special_operators to take both code refs and method names
222 (makes it possible to properly subclass the builtin ones)
223
4f0516bc 224revision 1.53 2009-04-30 14:58 (UTC)
225----------------------------
226 - make sure hash keys are sorted in all search sub-conditions
227 - switch installer from EU::MM to M::I
228
e965ac5d 229revision 1.52 2009-04-28 23:14 (UTC)
230----------------------------
9d48860e 231 - allow -between to handle [\"", \""] and \["", @bind]
e965ac5d 232 - allow order_by to handle -asc|desc => [qw/colA colB/] (artifact from DBIx::Class)
233 - more tests and clearing up of some corner cases
234 - t/10test.t does not run by default (developer only, too cpu intensive)
39ae3a83 235
22f1a437 236----------------------------
ef8c0c94 237revision 1.51 2009-03-28 10:00 (UTC)
e965ac5d 238 - fixed behavior of [-and => ... ] depending on the current
ef8c0c94 239 condition scope. This introduces backwards comp with 1.24
240
241----------------------------
22f1a437 242revision 1.50 2009-03-10 12:30 (UTC)
e9c9f6ee 243 - fixed the problem with values() not behaving the same as the rest of the code (RT#43483)
244 - fixed interjecting arrayrefref into a where clause
245 - added value-only insert test with a literal SQL snippet
246 - cleanup and enhancement of t/03values.t
247 - better handling of borked SQL in tests
248 - deal properly with parentheses in is_same_sql_bind()
249 - fixed test subs (is_same_*) in SQL::Abstract::Test to return the correct test value
250 - do not version MANIFEST
251
22f1a437 252 Version 1.50 was a major internal refactoring of SQL::Abstract.
253 Great care has been taken to preserve the published behavior
254 documented in previous versions in the 1.* family; however,
255 some features that were previously undocumented, or behaved.
256 differently from the documentation, had to be changed in order
257 to clarify the semantics. Hence, client code that was relying
258 on some dark areas of SQL::Abstract v1.* might behave differently
259 in v1.50.
260
e9c9f6ee 261----------------------------
a1450b90 262revision 1.49_04 2009-03-03
263 - add support for a [\%column_meta => value] bind value format
264
265----------------------------
266revision 1.49_03 2009-02-17
267 - clarify syntax of \['...', @bind] when used with a bindtype
268 of 'columns'
269
270----------------------------
271revision 1.49_02 2009-02-16
272 - added an AST-aware SQL::Abstract::Test library for sql syntax tests
273 - vastly expanded test coverage
274 - support for the { operator => \'...'|\['...', @bind] } syntax
275 allowing to embed arbitrary operators on the LHS
edbb91b5 276 - fixed multiple regressions wrt DBIx::Class
a1450b90 277
e3f9dff4 278----------------------------
a1450b90 279revision 1.49_01 2009-02-11
280 - support for literal SQL through the [$sql, bind] syntax.
e3f9dff4 281 - added -nest1, -nest2 or -nest_1, -nest_2, ...
282 - optional support for array datatypes
283 - defensive programming : check arguments to functions/methods
284 - fixed bug with global logic of -and/-or (no side-effects any more)
285 - changed logic for distributing an op over arrayrefs
286 - fixed semantics of _bindtype on array args
a1450b90 287 - dropped the _anoncopy of the %where tree. No longer necessary.
288 - dropped the _modlogic function
8a68b5be 289 - Make col => [] and col => {$op => [] } DTRT or die instead of generating
a1450b90 290 broken SQL. Added tests for this.
22f1a437 291 - Added { -desc => 'column' } order by support
a1450b90 292 - Tiny "$_"-related fix for { -desc => 'columns'} order by support
22f1a437 293 tests + docs
86298391 294
e3dd5e89 295----------------------------
296revision 1.20
297date: 2005/08/18 18:41:58; author: nwiger; state: Exp; lines: +104 -50
298- added patch from Dan Kubb enabling quote_char and name_sep options
299- added patch from Andy Grundman to enhance _anoncopy for deep refs
300----------------------------
301revision 1.19
302date: 2005/04/29 18:20:30; author: nwiger; state: Exp; lines: +34 -20
303added _anoncopy to prevent destroying original; updated docs
304----------------------------
305revision 1.18
306date: 2005/03/07 20:14:12; author: nwiger; state: Exp; lines: +201 -65
307added support for -and, -or, and -nest; see docs for details
308----------------------------
309revision 1.17
310date: 2004/08/25 20:11:27; author: nwiger; state: Exp; lines: +58 -46
311added patch from Eric Kolve to iterate over all hashref elements
312----------------------------
313revision 1.16
314date: 2004/06/10 17:20:01; author: nwiger; state: Exp; lines: +178 -12
315added bindtype param to allow this to work with Orasuck 9+
316----------------------------
317revision 1.15
318date: 2003/11/05 23:40:40; author: nwiger; state: Exp; lines: +18 -6
319several bugfixes, including _convert being applied wrong and
320the edge case field => { '!=', [qw/this that/] } not working
321----------------------------
322revision 1.14
323date: 2003/11/04 21:20:33; author: nwiger; state: Exp; lines: +115 -34
324added patch from Philip Collins, and also added 'convert' option
325----------------------------
326revision 1.13
327date: 2003/05/21 17:22:29; author: nwiger; state: Exp; lines: +230 -74
328added "IN" and "BETWEEN" operator support, as well as "NOT"
329modified where() to support ORDER BY, and fixed some bugs too
330added PERFORMANCE and FORMBUILDER doc sections
331fixed several bugs in _recurse_where(), it now works as expected
332added test suite, many thanks to Chas Owens
333modified all hash access to return keys sorted, to allow cached queries
334----------------------------
335revision 1.12
336date: 2003/05/08 20:10:56; author: nwiger; state: Exp; lines: +181 -96
3371.11 interim checking; major bugfixes and order_by, 1.12 will go to CPAN
338----------------------------
339revision 1.11
340date: 2003/05/02 00:07:30; author: nwiger; state: Exp; lines: +52 -12
341many minor enhancements to add querying flexibility
342----------------------------
343revision 1.10
344date: 2002/09/27 18:06:25; author: nwiger; state: Exp; lines: +6 -2
345added precatch for messed up where string
346----------------------------
347revision 1.9
348date: 2002/08/29 18:04:35; author: nwiger; state: Exp; lines: +4 -3
349CPAN
350----------------------------
351revision 1.8
352date: 2001/11/07 22:18:12; author: nwiger; state: Exp; lines: +31 -14
353added embedded SCALAR ref capability to insert() and update()
354----------------------------
355revision 1.7
356date: 2001/11/07 01:23:28; author: nwiger; state: Exp; lines: +3 -3
357damn uninit warning
358----------------------------
359revision 1.6
360date: 2001/11/06 21:09:44; author: nwiger; state: Exp; lines: +14 -6
361oops, had to actually *implement* the order by for select()!
362----------------------------
363revision 1.5
364date: 2001/11/06 03:13:16; author: nwiger; state: Exp; lines: +43 -4
365lots of docs
366----------------------------
367revision 1.4
368date: 2001/11/06 03:07:42; author: nwiger; state: Exp; lines: +16 -7
369added extra layer of ()'s to ensure correct semantics on AND
370----------------------------
371revision 1.3
372date: 2001/11/06 01:16:31; author: nwiger; state: Exp; lines: +11 -10
373updated all statements so that they use wantarray to just return SQL if asked
374----------------------------
375revision 1.2
376date: 2001/10/26 22:23:46; author: nwiger; state: Exp; lines: +112 -15
377added scalar ref for SQL verbatim in where, fixed bugs, array ref, docs
378----------------------------
379revision 1.1
380date: 2001/10/24 00:26:43; author: nwiger; state: Exp;
381Initial revision