Release commit for 1.90_01
[dbsrgits/SQL-Abstract.git] / Changes
1 Revision history for SQL::Abstract
2
3 1.90_01 - 2019-10-09
4     - Complete overhaul of the internals, see the SQL::Abstract::Reference
5       docs to understand the new implementation's affordances.
6
7 1.87 - 2020-06-02
8     - Add runtime dependency on Test::Deep and Test::Builder::Module for
9       SQL::Abstract::Test (RT#131623)
10
11 1.86 - 2018-07-09
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)
16
17 1.85 - 2018-01-27
18     - Restore perl version requirement missed in the Distar port
19     - Factor out the SET ... part of UPDATE for subclassability (GH#12)
20
21 1.84 - 2017-04-03
22     - Restore 'dynamic_config => 0' missed in the Distar port
23
24 1.83 - 2017-04-03
25     - Support for DELETE ... RETURNING (GH#9)
26     - Port to Distar
27
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)
32
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
40
41 revision 1.81  2014-10-25
42 ----------------------------
43     - Fix overly-enthusiastic parenthesis unroller (RT#99503)
44
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)
49
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 }
58
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
66       end-user convenient
67
68 revision 1.77  2014-01-17
69 ----------------------------
70     - Reintroduce { -not => undef } column operator (regression from 1.75)
71
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)
80
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
86       element)
87     - Fix typos in POD and comments (RT#87776)
88     - Augment -not_bool example with nesting (RT#89601)
89
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
96
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
109
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
119
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
126     - Highlight HAVING
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 ( ... )
132
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
150
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
156
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
162
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
168
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)
176
177 revision 1.67  2010-05-31 14:21 (UTC)
178 ----------------------------
179     - Fix SQL::Test failure when first chunk is an unrecognized
180       literal
181     - Generic -not operator tests
182     - More columns-bindtype assertion checks
183
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
188
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
193       won't happen again
194
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)
200
201 revision 1.63  2010-03-24 09:56 (UTC)
202 ----------------------------
203     - Add ILIKE to the core list of comparision ops
204
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
211
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
217
218 revision 1.60  2009-09-22 11:03 (UTC)
219 ----------------------------
220     - fix a well masked error in the sql-test tokenizer
221
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
228       crappy databases
229
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
234
235 revision 1.57  2009-09-03 20:18 (UTC)
236 ----------------------------
237     - added -bool and -not_bool operators
238
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'] }
243
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
248
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)
253
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
258
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)
265
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
270
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
281
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
289     in v1.50.
290
291 ----------------------------
292 revision 1.49_04  2009-03-03
293     - add support for a [\%column_meta => value] bind value format
294
295 ----------------------------
296 revision 1.49_03  2009-02-17
297     - clarify syntax of \['...', @bind] when used with a bindtype
298       of 'columns'
299
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
307
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
323       tests + docs
324
325 ----------------------------
326 revision 1.20
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 ----------------------------
331 revision 1.19
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 ----------------------------
335 revision 1.18
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 ----------------------------
339 revision 1.17
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 ----------------------------
343 revision 1.16
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 ----------------------------
347 revision 1.15
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 ----------------------------
352 revision 1.14
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 ----------------------------
356 revision 1.13
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 ----------------------------
365 revision 1.12
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 ----------------------------
369 revision 1.11
370 date: 2003/05/02 00:07:30;  author: nwiger;  state: Exp;  lines: +52 -12
371 many minor enhancements to add querying flexibility
372 ----------------------------
373 revision 1.10
374 date: 2002/09/27 18:06:25;  author: nwiger;  state: Exp;  lines: +6 -2
375 added precatch for messed up where string
376 ----------------------------
377 revision 1.9
378 date: 2002/08/29 18:04:35;  author: nwiger;  state: Exp;  lines: +4 -3
379 CPAN
380 ----------------------------
381 revision 1.8
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 ----------------------------
385 revision 1.7
386 date: 2001/11/07 01:23:28;  author: nwiger;  state: Exp;  lines: +3 -3
387 damn uninit warning
388 ----------------------------
389 revision 1.6
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 ----------------------------
393 revision 1.5
394 date: 2001/11/06 03:13:16;  author: nwiger;  state: Exp;  lines: +43 -4
395 lots of docs
396 ----------------------------
397 revision 1.4
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 ----------------------------
401 revision 1.3
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 ----------------------------
405 revision 1.2
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 ----------------------------
409 revision 1.1
410 date: 2001/10/24 00:26:43;  author: nwiger;  state: Exp;
411 Initial revision