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