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