forked from ryszard/clsql
-
Notifications
You must be signed in to change notification settings - Fork 12
/
ChangeLog
3213 lines (2761 loc) · 136 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2016-01-17 Russ Tyndall <[email protected]>
* applied patches from Javeier Olaechea
* allows unix socket connections in clsql-postgressql-socket3
* modernize asd slightly
2015-10-09 Russ Tyndall <[email protected]>
* add decimals.lisp file https://github.com/tlikonen/cl-decimals
* use this for safe parsing of numeric / decimal / rational types
* Added because newer postgres print money types as currency strings
2015-08-12 Kevin Rosenberg <[email protected]>
* Version 6.6.3 release
* db-oracle/oracle-sql.lisp: Patch for PostgreSQL socket interface
for unicode characters. Thanks to Jason Melbye.
2015-06-02 Daniel Kochmański <[email protected]>
* clsql.asd, sql/package.lisp: Add ECL compatibility fixes
* sql/db-interface.lisp: Fix declaration typo
2015-04-06 Russ Tyndall <[email protected]>
* sql/operations, sql/expressions: add postgresql E-string
operator / expression. Needed for correct regex handling
EG: [E "some string"]=> E'some string'
2015-03-30 Kevin Rosenberg <[email protected]>
* Version 6.6.2 release
* db-oracle/oracle-sql.lisp: Remove extra hyphen, thanks to
Thomas Vossen
2015-03-24 Russ Tyndall <[email protected]>
* sql/oodml.lisp: fixed call-next-method in the base of
read-sql-value and replaced with a continuable
sql-value-conversion-error
* default read-sql-value for list
* tests for sql-value-conversion-errors and list
2015-03-18 Russ Tyndall <[email protected]>
* {uffi,db-mysql}/Makefile: remove -pie build hardening for
which caused load issues for Linux Mint
2015-03-18 Kevin Rosenberg <[email protected]>
* Version 6.6.1 release
* {uffi,db-mysql}/Makefile: Remove pie from build
hardening options for Debian/Ubuntu systems. Thanks to
DJ <[email protected]> and Russ Tyndall <[email protected]>
2015-02-26 Kevin Rosenberg <[email protected]>
* Version 6.6.0 release
* {uffi,db-mysql}/Makefile: Add build hardening for Debian
2015-02-24 Russ Tyndall <[email protected]>
* mysql-sql.lisp
an error in type declarations generating a compilation warning
was being treated as an error in recent SBCLs, fixed the type
warning by correcting the type (still a ton of compliation
notes)
2015-02-23 Russ Tyndall <[email protected]>
* sql/metaclasses.lisp
made reinitialize-instance return the instance passed to it as
SBCL now expected (mentioned on the SBCL-devel mailing list by
Stas
2014-12-03 Russ Tyndall <[email protected]>
* sqlite-sql.lisp
Added database arg to `canonicalize-result-types` so that it could
correctly call `sqlite-aref` with the required number of arguments
Thanks Zach Beane for the bug report.
2014-07-29 Russ Tyndall <[email protected]>
* mysql-api.lisp, mysql-sql.lisp, test-connection.lisp
Added code to the mysql backend to pull all result sets as
multiple args. This fixes a bug in the mysql backend where trying
to query after executing a stored procedure (even on a pooled
connection) would raise an error about the connection being out of
sync. The second result set for the stored procedure seems to be
empty, so not sure why we need to iterate past it.
patch / bugreport provided by: Ilya Khaprov deadtrickster@github
2014-06-11 Russ Tyndall <[email protected]>
* databases.lisp, sqlite3-sql.lisp
Similar to and overriding the patch 2014-01-30 937a3d, adds a
default-encoding variable uses that in places where a nil encoding
was being passed. Defaults to :utf-8. This is mostly in place so
that uffi and cffi both work similarly (by moving the default into
clsql instead of clsql-uffi). This allows my automated build
environment to do its job
2014-06-10 Russ Tyndall <[email protected]>
* db-mysql/Makefile - the results of dpkg-buildflags --get LDFLAGS
seem to have changed on my system and and sed was returning
invalid command line arguments to ld. To resolve this I changed
sed to emit valid args, which seems to have resolved the issue.
2014-04-24 Russ Tyndall <[email protected]>
* oodml.lisp, test-oodml.lisp Better handling of view-slots of
type symbol/keyword. Better handling of printing and reading
bindings (per mailing list request, always read and write in base
10)
2014-03-04 Kevin Rosenberg <[email protected]>
* Version 6.5.0: New release
* makefile.common: Check for /usr/bin/dpkg-buildflags
* {db-mysql,uffi}/Makefile: Use debian buildflags
2014-02-24 Russ Tyndall <[email protected]>
* oodml.lisp bind *print-length* to nil before printing
lists/arrays to the database.
2014-01-30 Russ Tyndall <[email protected]>
* sqlite3-sql.lisp specify :utf-8 as the default encoding if there
is not one (allows :clsql-cffi to be closer to working for this
backend).
I ran the test suite successfully once with :clsql-cffi, but there
after I got spurious errors and especially unrecoverable errors
while connecting about the database being locked
2014-01-30 Russ Tyndall <[email protected]>
* sqlite3-sql.lisp, fddl.lisp Dont compare database-identifiers
with invalid comparison operators
2014-01-30 Russ Tyndall <[email protected]>
* generic-odbc.lisp, ooddl.lisp, generic-postgresql.lisp,
test-init.lisp, ds-nodes.lisp, generic-odbc.lisp, odbc-sql.lisp
auto-increment-column support improvement (mssql esp, now will
auto-fill after insert). Use +auto-increment-names+ to determine
auto-increment-column-p.
This triggered much test failing as regards normalized classes /
autoincrement primary key stuff.
New odbc-postgresql-database sub-type
POSSIBLY BREAKING CHANGES:
1 ) Previously all classes in a normalized heirachy had their p-key
marked as "auto-increment". Usually auto-increment means a key
supplied by the database system, so this was decidedly
non-standard usage (clsql is explicitly providing the key for all
normalized subclasses of any given parent see ds-nodes.lisp). Some
RDMS will not allow insertion/updates of autoincrement columns
without hoop jumping and, as it doesnt really make much sense, I
removed the "auto-increment" aspects of normalized sub-classes.
Now the primary keys are chained regardless. The parent-most key
can be autoincrement or not.
2 ) ODBC Postgresql connections are now both GENERIC-ODBC-DATABASE
and GENERIC-POSTGRESQL-DATABASE. Probably not a widely used path,
but this change allows most of the previously failing tests to
pass on this backend (we now format stuff correctly for postgres).
I anticipate this probably is not perfect yet (IE: I probably
missed something)
2014-01-29 Russ Tyndall <[email protected]>
* oodml.lisp, generics.lisp - added
clsql-sys::view-classes-and-storable-slots generic (added method
previously). Also added to-database-p keyword to allow overrides
to distinguish between the two situations. Mostly so that
clsql-helper:dirty-slots-mixin can filter slots when writing
values to the database but still allow all slots to be read from
the database
2014-01-17 Russ Tyndall <[email protected]>
* oodml.lisp, generics.lisp - added filter-select-list generic
to allow fine grained control of generated query/object mappings
2014-01-07 Russ Tyndall <[email protected]>
* clsql-uffi.lisp, sqlite3 auto-increment support
* clsql-uffi.lisp, test-basic.lisp, fixes related to unsigned vs
signed ints (thanks Aaron Burrow)
* cleaning and testing
2013-09-27 Russ Tyndall <[email protected]>
* fixed bug converting to boolean in db-mysql/mysql-sql.lisp
from github user Sectoid https://github.com/UnwashedMeme/clsql/pull/1
2013-06-19 Russ Tyndall <[email protected]>
* sql/oodml.lisp, db-postgresql-socket3/sql.lisp,
db-mysql/mysql-objects.lisp, sql/generic-odbc.lisp
Refactored read-sql-value similar to the other recent refactorings
* the symbol case now uses intern instead of read-from-string
(which may not return a symbol and could have security issues
since read-eval was not being unset)
* read-eval is now off for all cases
* centralized logic into a single case statement, hopefully making
this more readable and debuggable
* TODO: make these refactorings to the oracle backend (I cannot
test against oracle and am loathe to change without testing
2013-06-19 Russ Tyndall <[email protected]>
* sql/mysql-objects.lisp
Found and refactored a way some more eql specified methods of
database-get-type-specifier in mysql
2013-06-18 Russ Tyndall <[email protected]>
* sql/oodml.lisp, sql/mysql-objects.lisp
refactored database-output-sql-as-type in a similar fashion to
the previous refactor of database-get-type-specifier (fewer
methods using case instead of eql specifiers)
* removed very strange definition of outputing floats as strings
for something sane (it was previously doing silly work like
setting the default read float type (which AFAICT doesnt affect
printing))
* half of the cases nil returned "" other times it returned nil,
now if we get a null value we return nil always
* removed odd-logic (seemingly untouched since the initial import),
that removed null characters from printed lists. If we have #\null
in a printed list, we had probably better figure out what went wrong
there rather than destructively modifying the list output on the way
to the DB ;; removed (substitute-char-string escaped #\Null " ")
2013-06-18 Russ Tyndall <[email protected]>
* sql/generic-odbc.lisp, sql/generic-postgresql.lisp, sql/oodml.lisp
tests/test-fddl.lisp
refactored database-get-type-specifier for postgres and mssql
Single methods with a case on the symbol arg (similar to the recent
refactoring in oodml.lisp)
This reduces line count and generally makes it easier to find and
read all the backend-specific types
2013-06-10 Russ Tyndall <[email protected]>
* sql/oodml.lisp, sql/generic-postgresql.lisp, doc/ref-fddl.xml,
sql/packages.lisp
Updated get-database-type-specifier to handle text/longchar type
and refactored
* added a warning above defaulting to VARCHAR (since its probably
NOT what is expected on a bad type specifier).
* added a case where the specified type being a string, passes
that string directly (to better/more easily allow db-specific
data-types).
* added cases where longchar or text converts to text, and
exported those symbols (as this seemed type seemed to be missing
from fddl/oddl anyway).
* reorganized these default methods into a single method with a
case statement rather than many eql specified methods (about half
the code)
* updated the docs to use text instead of longchar since text is
a more standard db-type (pg,my,and ms all use text)
2013-11-23 Kiss Kalman <[email protected]>
* utils/sql.lisp: Commit patch adding ccl getenv support
2013-04-17 Kevin Rosenberg <[email protected]>
* Version 6.4.1
* sql/utils.lisp: Patch from Ben Hyde to add weak hash table
support for CCL.
2013-03-07 Ryan Davis <[email protected]>
* db-postgresql-socket/postgresql-socket-api.lisp - bugfix to
adapt to changes in md5:md5sum-sequence. CLSQL now requires a
version of MD5 released on or after 2012-11-25 (the latest version
currenty in quicklisp). Thanks to Nicolas Neuss for the bug
report.
* db-odbc/odbc-sql.lisp - keep a reference to the original
connection spec used to create `odbc-database` connections
2013-01-09 Russ Tyndall <[email protected]>
sql/oodml.lisp - changed view-classes-and-storable-slots to a
method (as it was intended to be all along)
2012-12-19 Kevin Rosenberg <[email protected]>
* Version 6.4
2012-11-20 Russ Tyndall <[email protected]>
## Large refactoring of sql/oodml.lisp and surrounding code
* cleaned up update-records-from-* to utilize a single codepath
previously there was much duplicate code
* tried to further unify direct/effective slot-defs
* cleaned up much of the normalized classes code to be more
consistent in how it operated, and the code it used (less
copy/paste more functions)
* tried to standardize iteration a bit, previously almost all
of the iteration constructs in CL were used. Tried to
standardize on loop for readability / cohesiveness
* made functions to more easily look up particular slots, since
this was being done differently in each function
* added more doc-strings and updated documentation about
normalized classes
* inner-joins that are referenced in where clauses are no longer
added to the select table list (since they are also referenced
in the join position and this led to sql errors)
* collect-table-references methods added for sql-ident-table and
list
## Semantic changes
* disallow where-less updates from objects (ie cannot call
update-records-from* with a keyless object)
* ordered-class-direct-slots now returns direct-slot-definitions
instead of effective-slot-definitions (as per name)
* direct-slot-definitions now contain the db-info hash table (same
as effective slots)
* removed this-class arg from update-instance-from-records - used to
be used for normalized code, no longer needed for that.
* find-all - bug fixes in table references, previously where clauses
surrounded by a list would have none of their references added to
the select. This was being exploited by certain code paths. Now
all where clauses are searched
- No longer includes order-by and distinct as columns in the select
list. The values seemed to be ignored in every code path and distinct
seemed to be intended to be used as a boolean anyway
2012-11-20 Nathan Bird <[email protected]>
* update-objects-joins - changed the default of slot from t (which
used to mean :deferred) to :immediate (to match the default
behavior of other parts of the system). It also seemed like a bad
default to pull all the slots that were explicitly specified to be
not pulled by default. This function now accepts more special
values (:immediate, :deferred, :all, or a list of slots). To get
the old behavior call with :slots :deferred.
2012-10-30 Russ Tyndall <[email protected]>
* sql/command-object.lisp - added dates/times to the parameter value
coersion and pulled this into a new generic prepare-sql-parameter
2012-09-04 Kevin Rosenberg <[email protected]>
* Version 6.3 released
2012-09-04 Russ Tyndall <[email protected]>
* sql/expressions.lisp - Try to respect the casing of symbols
where it seems intentional (ie: is not default). This should fix
a failing test case, and I think behaves more understandibly.
If you specify a casing '|Foo Bar| lets treat that a string "Foo Bar"
and output it escaped
2012-08-28 Ryan Davis <[email protected]>
* db-sqlite3/sqlite3-api.lisp - allow pathnames in the connection
settings, so '("/db/my.sqlite") and '(#P"/db/my.sqlite") are
equivalent. Updated the docs to match.
2012-08-17 Russ Tyndall <[email protected]>
* db-postgresql-socket3/package.lisp - shadow
postgresql-notification for compatibility with new
cl-postgres (Thanks Zach)
2012-07-09 Russ Tyndall <[email protected]>
* sql/oodml.lisp - fixed a bug where the order by was being
destructively modified, causing odd caching issues when the
selected object was not statically known (eg unreferenced tables
could show up in the query if they were cached by a previous call
through this function. I replaced this code with a
non-destructive variant which should solve this.
Thanks to Philipp Marek for the bug report
2012-06-25 Russ Tyndall <[email protected]>
* sql/util.lisp, sql/metaclasses.lisp
Dequote database-identifiers if needed (passed a quoted symbol)
Metaclass args come through unquoted, so this eases interactions
with them
2012-06-22 Russ Tyndall <[email protected]>
* sql/metaclasses.lisp: Changed compute-effective-slot-definition
to correctly copy the autoincrement-sequence slot to the ESD
previously it was being skipped (seemingly by accident). Thanks
to flip214 on #lisp for the bug report
2012-04-26 Kevin Rosenberg <[email protected]>
* Version 6.2 released: thanks to all the contributors!
2012-04-25 Nathan Bird <[email protected]>
* doc/threading-warnings.txt: Adding some notes from J.T.Klein
about the current state of thread-safety in clsql. This should be
incorporated into the main docs at some point.
2012-04-25 Russ Tyndall <[email protected]>
* sql/expressions.lisp (output-sql): on rendering update/insert
expression values, ensure that *in-subselect* is bound to T
so that the values will be correctly paren delimited
2012-04-24 Nathan Bird <[email protected]>
* sql/expressions.lisp (output-sql): on mysql CREATE TABLE
statements use 'ENGINE=innodb' instead of 'Type=InnoDB'. This has
apparently been preferred since mysql 4.1 and mysql 5.5 removed
type as a valid keyword.
2012-03-28 Russ Tyndall <[email protected]>
* sql/sequences.lisp: [A Patch FROM 2011-07-28 changed sequences.
They were previously prefixed with _CLSQL_SEQ_ but are now
suffixed with _CLSQL_SEQ. This is likely to break existing
implementations using the default sequence names
setting *old-sequence-names* to T, should force using the older
naming scheme
2012-03-27 Ryan Davis <[email protected]>
* sql/expressions.lisp: Fixed bug with subqueries in the where
clause of update-records and delete-records generating invalid
SQL. Previously subselects in where clauses would not have enough
parentheses, for example: "WHERE Id IN SELECT foo_id FROM bar"
vs. "WHERE Id IN (SELECT foo_id FROM bar)"
* tests/test-syntax.lisp: Added tests for using subqueries in the
where clause in update-records and delete-records. Moved asserts
in the test-output-sql/sql-ident-table function into the standard
test framework.
* doc/appendix.xml: added :connection-string to the information on
ODBC connection specs, and added example code connecting to ODBC
databases.
2012-01-05 Nathan Bird <[email protected]>
* db-odbc/odbc-dbi.lisp: handle sql decimal type in the same way
as numeric type-- read into a double float.
2011-01-04 Russ Tyndall <[email protected]>
* sql/operations.lisp
Fixed bug reported by JTK related to the not-null sql-expression
especially as used in conjunction with the is operator.
Made null called with more than one argument throw an exception
instead of silently discarding all arguments past the first
2012-01-04 Nathan Bird <[email protected]>
* db-odbc/odbc-api.lisp (%sql-driver-connect): in the call to
odbc's SQLDriverConnect default the WindowHandle argument to a null ptr so
that connecting with :connection-string will work in the default
case of SQL_DRIVER_NOPROMPT.
I.e. you can now do things like:
(clsql:connect '("DsnName" "UserName" "" :connection-string
"DRIVER={FreeTDS};SERVER=...;DATABASE=...;UID=...;PWD=...;PORT=1433;TDS_Version=8.0;APP=clsql")
:database-type :odbc)
I believe the DsnName and Username at that point are only used when
printing the connection information.
2011-12-20 Kevin Rosenberg <[email protected]>
* Version 6.1.1
* db-oracle/oracle.lisp: Typo correction (Elias Martenson)
2011-12-19 Kevin Rosenberg <[email protected]>
* Version 6.1.0
* db-oracle/oracle.lisp: Change length function to
uffi:foreign-string-length to handle foreign encodings.
Thanks to Elias Martenson.
2011-11-28 Russ Tyndall <[email protected]>
* db-odbc/odbc-api.lisp, tests/test-time.lisp
In ODBC backend, avoid going through the common lisp
universal-time type (because it lacks support for historic dates)
*time-conversion-function* renamed to *time-format*
Patch from: Francisco Vides Fernandez
2011-10-18 Russ Tyndall <[email protected]>
* db-odbc/odbc-api.lisp
Added type specifier so MSSQL nvarchar fields can make it through
2011-09-12 Russ Tyndall <[email protected]>
* sql/fddl.lisp sql/generic-postgres.lisp db-mysql/mysql-sql.lisp
sql/generic-odbc.lisp sql/odbc-api.lisp sql/odbc-dbi.lisp
Fix bugs in list-attribute(s|-types) where passing an escaped,
instead of unescaped column name, caused these functions to return
less data than they should have.
2011-08-03 Kevin Rosenberg <[email protected]>
* CLSQL 6.0.0 released
2011-07-28 Russ Tyndall <[email protected]>
* db-postgresql-socket3/: Added a backend that utilized postgres
socket api version 3. Uses the cl-postgres project (from
postmodern) to handle this. Allows use of parameterized /
prepared queries using clsql:command-object
* sql/{expressions,fddl, generic-postgresql, ooddl}.lisp:
Change how database identifiers are emitted to hopefully make this
less brittle, and more easily intuitable.
Previously every code path that wanted to emit a
database identifier was responsible for coercing what was provided
into a correctly escaped string. Sometimes two or three functions
in a row were trying to correctly quote and output that string. I
have tried to centralize this type coercion and logic into a
single code path.
everything should now call (escaped-database-identifier thing)
immediately before splicing a database identifier into string being
sent to the database
* sql/oodml.lisp: added method choose-database-for-instance, which
allows overriding which database connections are used based on
object type. Can be used to prevent connection conflicts in
multi-threaded environments
* sql/syntax.lisp: [foo bar] and [foo.bar] read into the same
clsql expression now (they used to be output the same, but after
the above database-identifier change, they were output separately
* test/: Better, more tests, better type coercion in tests and
throughout (%get-int)
[edit 2012-03-28 - RT]
* sql/sequences.lisp: Sequences were previously prefixed with
_CLSQL_SEQ_ but are now suffixed with _CLSQL_SEQ. This is likely
to break existing implementations using the default sequence names
setting *old-sequence-names* to T, should force using the older
naming scheme
2011-07-16 Kevin Rosenberg <[email protected]>
* Version 5.4.0 release
2011-06-27 Nathan Bird <[email protected]>
* db-odbc/: memory management improvements: leak slower
* MSSQL: TOP + DISTINCT work together
2011-06-20 Nathan Bird <[email protected]>
* sql/time.lisp: Handle parsing already parsed objects.
* sql/oodml.lisp: raise exception if we generate an update with no
where clause; incorporate Ryszard Szopa's patch for functional
expressions in :order-by
* sql/expressions.lisp: (listify nil) => nil instead of (nil).
* db-odbc/: bugfixes for working with older versions of FreeTDS;
support for bigints that works on mssql and postgres
* MSSQL improvements: use top instead of limit, IDENTITY can be a
column constraint, clsql:date becomes 'smalldatetime'
2011-06-20 Nathan Bird <[email protected]>
* Version 5.3.4
* db-postgresql-socket/postgresql-socket-api.lisp: Addendum
to Otto Diesenbacher's patch that had a spurious write a 0
byte (to terminate string) that should have been just CCL.
2011-06-12 Kevin Rosenberg <[email protected]>
* Version 5.3.3
* db-postgresql-socket/postgresql-socket-api.lisp:
Patch from Otto Diesenbacher for UTF8 encoded strings
for CCL. FIXME: The best patch would be to use the
user-set encoding from the database object and use
UFFI's encoding strings to/from octet vectors rather
than SB-UNICODE and CCL specific code in this file.
2011-04-21 Kevin Rosenberg <[email protected]>
* sql/generics.lisp: Add defgeneric for new
database-last-auto-increment-id
2011-04-01 Kevin Rosenberg <[email protected]>
* Version 5.3.2
* db-mysql/mysql-client-info.lisp: Add recognition of
version 6 of MySQL client library.
* sql/metaclass.lisp: Fix the fix in the reader conditional
2011-03-30 Kevin Rosenberg <[email protected]>
* Version 5.3.1
* sql/metaclasses.lisp: Fix previous patch to work
on non-SBCL systems
2011-03-29 Kevin Rosenberg <[email protected]>
* Version 5.3.0
* sql/metaclasses.lisp: Apply one-line patch to fix
for newer SBCL (thanks to Nikodemus Siivola)
* many_files: Applied multiple patches from Holger Schauer
to improve autoincrement capability.
2010-10-24 Kevin Rosenberg <[email protected]>
* Version 5.2.0
* db-odbc/odbc-api.lisp: Change from SBCL-specific
to UFFI version of octets-to-strings. Reported by
Daniel Brunner <[email protected]>
* sql/oodml.lisp: Apply patch from Rupert Swarbrick
<[email protected]>: Fix behaviour with auto-inc
primary keys.
* sql/expressions.lisp, tests/test-syntax.lisp: Apply
patch from Russ Tyndall to quote identifiers with space
or special character.
2010-09-20 Kevin Rosenberg <[email protected]>
* Version 5.1.4
* sql/{pool,database}.lisp: Pass encoding argument to
connections made from pool and with reconnect.
2010-08-16 Kevin Rosenberg <[email protected]>
* Version 5.1.3
* db-odbc/odbc-{api,dbi}.lisp: Commit patch from
Memet Bilgin to fix issue with unicode and ODBC.
2010-08-16 Kevin Rosenberg <[email protected]>
* Version 5.1.2
* uffi/clsql-uffi.lisp: Commit patch from JT Klein fixing
invocation of uffi:convert-from-foreign-string macro. When
time allows, I'll investigate changing UFFI's macro to
a function call and then revert this patch.
2010-06-15 Kevin Rosenberg <[email protected]>
* Version 5.1.1
* clsql-{uffi,mysql}.asd: Modify operation-done-p functions
to guard against change introduced in new ASDF traversing.
2010-04-20 Kevin Rosenberg <[email protected]>
* Version 5.1.0 [DEPENDENCY UPGRADE: UFFI 2.x needed]
* clsql-uffi.asd: Depend on UFFI version >= 2.0
to support foreign encoding of strings.
2010-04-16 Kevin Rosenberg <[email protected]>
* Version 5.0.6
* db-postgresql.lisp, sql/fddl.lisp: Fix typos [Thanks to
Walter C. Pelissero]
* sql/metaclasses.lisp: Work around type-check-function being set
during defclass expansion in SBCL [Thanks to Walter C. Pelissero]
* uffi/clsql-uffi.lisp: In call to uffi:convert-from-foreign-string,
Set null-terminated-p to T when length not specified.
[Thanks to Walter C. Pelissero]
2010-03-21 Kevin Rosenberg <[email protected]>
* Version 5.0.5
* sql/fdml.lisp: Fix DO-QUERY to actually return the last value of
the body.
2010-03-02 Nathan Bird <[email protected]>
* doc/: Added a README on how to build doc; now builds on Ubuntu.
* sql/oodml.lisp: READ-SQL-VALUE now has explicit method for
handling double-floats and the default method will no longer
attempt to convert values that have already been converted.
* sql/syntax.lisp: Introduce file-enable-sql-reader-syntax which
enables the syntax for the scope of the file without trying to
keep track of the current syntax state.
* sql/pool.lisp: Introduce
clsql-sys:*db-pool-max-free-connections* which is a heuristic
threshold for when to disconnect a connection rather than
returning it to the pool.
* sql/pool.lisp: Check connections for validity before returning
to the user.
2010-03-01 Kevin Rosenberg <[email protected]>
* db-mysql/mysql-api.lisp: Remove spurious enumeration
2010-02-16 Kevin Rosenberg <[email protected]>
* Version 5.0.4
* db-mysql/mysql-api.lisp: Fix mysql_options UFFI parameter list
* doc/ref-connect.xml: Document the MySQL options parameter as
part of the connection-spec.
2010-02-15 Kevin Rosenberg <[email protected]>
* db-mysql/mysql-{api,sql}.lisp: Support sending options
to MySQL using mysql_options, which occurs between the API calls
of mysql_init and mysql_real_connect.
2010-02-11 Kevin Rosenberg <[email protected]>
* Version 5.0.3
* multiple-files: Further internationalization. Change
UFFI:CONVERT-RAW-FIELD and UFFI:CONVERT-FROM-FOREIGN-STRINGS
invocations to use the foreign character set encoding of the
database object. Requires UFFI v.1.8.6
* Makefile.common: Fix OS_DARWIN64 setting
2010-02-11 Nathan Bird <[email protected]>
* MSSQL: better support for fddl 'date type.
2010-02-11 Kevin Rosenberg <[email protected]>
* Makefile.common, uffi/Makefile, db-mysql/Makefile:
Better support OS X Snow Leopard by building universal
(x86_64,i386) dylib bundles
2010-02-08 Kevin Rosenberg <[email protected]>
* Version 5.0.2
* sql/database.lisp: Fix missing slot-accessor
(Thanks to Stelian Ionescu)
* sql/generics.lisp: Add missing keyword to defgeneric
(Thanks to Stelian Ionescu)
2010-02-07 Kevin Rosenberg <[email protected]>
* Version 5.0.1
* sql/{base-classes,database}.lisp: Add encoding slot for
non-ASCII strings.
* db-mysql/mysql-sql.lisp: Use UFFI:FOREIGN-ENCODED-OCTET-COUNT.
Requires UFFI version 1.8.2 or above.
2010-02-06 Kevin Rosenberg <[email protected]>
* Version 5.0.0: First release of CLSQL to formally and
consistently support non-ASCII strings with encoding of external
formats for SQL strings. UFFI version 1.8.1 is higher is required.
This change may introduce some differences in string handling for
people who are using non-ASCII encoded characters. Thus, because
of the risk of BACKWARD INCOMPATIBILITY, the major version number
was incremented with this release.
2010-02-06 Kevin Rosenberg <[email protected]>
* tests/test-i18n.lisp: Bind UFFI:*DEFAULT-EXTERNAL-FORMAT*
for testing multibyte encodings.
* uffi/clsql-uffi.lisp: Changes for UFFI 1.7.4's new support
for encoding foreign strings with a specified external format.
2010-02-06 Kevin Rosenberg <[email protected]>
* sql/metaclasses.lisp: If no declared slot type in
compute-lisp-type-from-specified-type, then use t as lisp type.
Issue noted when testing Clozure CL 1.4.
2010-02-06 Kevin Rosenberg <[email protected]>
* tests/test-init.lisp: Turn off the benign console notices for
testing on postgres.
2010-02-05 Kevin Rosenberg <[email protected]>
* clsql-test.asd, tests/{test-i18n,test-init}.lisp:
Load test-i18n.lisp and use its tests as long as 'uffi:no-i18n is
not present in cl:*features*. This requires UFFI 1.7.2 or above.
2010-02-05 Kevin Rosenberg <[email protected]>
* sql/utils.lisp: Reading #\no-break_space causes an
error for non-unicode SBCL. Conditionalize read of
#\no-break_space for non-unicode SBCL and 8-bit string
Allegro.
2010-02-03 Kevin Rosenberg <[email protected]>
* tests/test-init.lisp: Add *test-report-width* variable
and word-wrap skipped test reason field.
2010-01-29 Kevin Rosenberg <[email protected]>
* Version 4.3.3
* clsql-cffi.asd: New file that causes CLSQL to use
CFFI-UFFI-COMPAT library rather than UFFI. Perform 'asdf:load-op
on CLSQL-CFFI rather than CLSQL system to use CFFI-UFFI-COMPAT.
2010-01-29 Nathan Bird <[email protected]>
* tests/*.lisp: A lot more tests and test setup tweaks.
* sql/expressions.lisp: output-sql on sql-relational-exp does
better arity checking now. (apply #'sql-and some-list) gives
better results.
29 Jan 2009 Kevin Rosenberg <[email protected]>
* sql/oodml.lisp: Fix for UPDATE-RECORD-FROM-SLOTS for normalized
view classes
28 Jan 2009 Kevin Rosenberg <[email protected]>
* Version 4.3.2
* Change "normalise" from British spelling for consistency with
other American spellings in CLSQL.
28 Jan 2009 Kevin Rosenberg <[email protected]>
* db-mysql/Makefile: Add directory for Fedora 11/12 on 64-bit
platform (Thanks to Michael Pheasant) and remove a 32-bit directory
28 Jan 2009 Kevin Rosenberg <[email protected]>
* Version 4.3.1
* sql/utils.lisp: Ensure Lispworks 6 lock is created in sharing mode
20 Jan 2009 Nathan Bird <[email protected]>
* Version 4.3.0
* Rewrite tests to use datasets
07 Jan 2009 Kevin Rosenberg <[email protected]>
* sql/utils.lisp: Changes to support Lispworks 6
10 Dec 2009 Kevin Rosenberg <[email protected]>
* Version 4.2.0
* doc/ref-ooddl.lisp: Add needed CDATA escapes
* doc/clsql.pdf, doc/html.tar.gz: Build new manuals with
normalized view classes.
10 Dec 2009 Kevin Rosenberg <[email protected]>
Large patch from Thijs Oppermann <[email protected]> to add
support for normalized view classes. When having view class that
inherit from others, CLSQL by default builds tab all the columns
from the parent in the child. This patch is meant to normali so
that a join is done on the primary keys of the concerned tables to
get a set.
10 Dec 2009 Kevin Rosenberg <[email protected]>
* sql/time.lisp: Patch from Oleg Tihonov to SYNTAX-PARSE-ISO-8601
to properly parse fractions of seconds.
10 Dec 2009 Kevin Rosenberg <[email protected]>
* sql/time.lisp: Patch from Oleg Tihonov to roll function
to properly use USEC argument.
21 Nov 2009 Kevin Rosenberg <[email protected]>
* Version 4.1.2
* Makefiles: On 64-bit Linux systems, try to build both 32 and 64-bit
interface libraries. This requires the installation of multiarch build tools
as well as 32-bit support libraries (libc, libz and libmysqlclient).
04 Sep 2009 Kevin Rosenberg <[email protected]>
* Version 4.1.1
* sql/fdml.lisp: Rework do-query to use supplied database
parameter when passed a sql-object-query
(thanks to JTK <[email protected]>)
* sql/generic-postgresql.lisp: Allow optional connect
parameters for postgresql databases (thanks to Stephen Compall)
* doc/ref-{clsql,connect}.xml, sql/db-interfaces.lisp:
Fix transposed letters (thanks to Stephen Compall)
* db-mysql/Makefile: Add directory for MacPorts mysql5 port
(thanks to Stephen Compall)
* sql/database.lisp: Have database-type default be
*default-database-type* (thanks to Desmond O. Chang)
* sql/transactions.lisp: Improved handlining of nested
transactions (thanks to Eli Naeher)
* sql/time.lisp: Commit patch to fix parse-iso-8601-duration
(thanks to Stephen Compall)
* sql/database.lisp: Use :verbose nil for asdf:operate
invocation (Thanks to Mackram Raydan)
* sql/metaclasses.lisp: Rework initialize-instance for
view-class-direct-slot-definition (thanks to Stephen Compall)
31 Aug 2009 Kevin Rosenberg <[email protected]>
* sql/db-interface.lisp: Fix spelling error (thanks to
David Thompson)
* clsql-mysql.asd/db-mysql/mysql-loader.lisp: Commit
patch from Andreas Franke to honor windows drive letter
when loading clsql_mysql C library.
31 Aug 2009 Kevin Rosenberg <[email protected]>
* Version 4.1.0
* db-mysql/mysql-{sql,api}.lisp,db-mysql/clsql_mysql.c:
Latest version of mysqlclient once again changed the C
structures from which the mysql backend reads data.
Rather than adding yet another structure definition which
is enabled by the client version as read by mysql-client-info.lisp,
the mysql backend has been re-written to ignore in the internal
C structures. Instead, C wrapper functions for slot access have
been added to clsql_mysql.c and are used by mysql-sql.lisp to
access the internals of C structures. This adds a bit of overhead,
but completely separates the lisp code from trying to keep up
with the continually changing internal C structure of mysql.
All tests in the test suite executed correctly with this change.
31 Aug 2009 Kevin Rosenberg <[email protected]>
* Version 4.0.6
* sql/database.lisp: Fix syntax on process-lock (thanks to
Stian Sletner)
* db-mysql/mysql-sql.lisp: Allow use of database parameter
in database-list function (thanks to Michael Pheasant)
* sql/oodml.lisp: Allow NULL values for floating-point fields
(thanks to Jan Rychter)
02 Jun 2009 Kevin Rosenberg <[email protected]>
* Version 4.0.5
* sql/database.lisp: Add process-lock for deleting database from
a pool (thanks to Ralf Mattes).
25 Feb 2008 Kevin Rosenberg <[email protected]>
* Version 4.0.4
* sql/expressions.lisp: Remove stray form (thanks to Samuel Ward)
12 Dec 2007 Kevin Rosenberg <[email protected]>
* sql/expressions.lisp: Bind *in-subselect* when outputting
selections (patch from unknown source).
11 Dec 2007 Kevin Rosenberg <[email protected]>
* Version 4.0.3
* sql/metaclasses.lisp: Unify base-table processing by extracting
the correct code from initialize-instance :around into the helper
function set-view-table-slot. Call that function also in
reinitialize-instance :around replacing erroneous code discovered
by Josh Feinstein.
17 Nov 2007 Kevin Rosenberg <[email protected]>
* BUGS: Add note about benefit of using configure file to create
Makefiles (suggestion from Joe Corneli)
22 Oct 2007 Kevin Rosenberg <[email protected]>
* Version 4.0.2
* db-postgresql/postgresql-sql.lisp: Patch from Gabriele Favalessa based on
Andrew Golding suggestion for more informative :error-id slot.
17 Sep 2007 Kevin Rosenberg <[email protected]>
* Version 4.0.1
* db-mysql/mysql-sql.lisp: Convert query to uffi cstring (thanks to
Albert Krewinkel).
* doc/Makefile, doc/html.xsl: Change output encoding from ISO-8859-1 to UTF-8
14 Sep 2007 Kevin Rosenberg <[email protected]>
* Version 4.0.0: Major version increase to warn of potential
backwards incompatibility.
* NEWS: Document potentional backward incompatible changes
* db-mysql/mysql-sql.lisp: Changes session SQL mode to ANSI immediately
after connecting. This may break compatibility with some applications
who are using non-ANSI features with MySQL. This change is required to
properly support view-classes using a string as their :base-table
attribute. This allows users to specify the case of table names.
This is feature is even more essential for MySQL itself since MySQL
uses case-sensitive table names. Use connection-based database-create
and database-destroy rather than trying to invoke command-line mysql
utility. Remove automatic upcasing of strings from list-indices.
* db-postgresql/postgresql-sql.lisp: Use connection-based
database-create and database-destroy rather than trying to invoke
command-line utilities.
* db-postgresql-socket/postgresql-socket-sql.lisp: Use
database-execute-command rather than execute-command for
database-{create,destroy}. Connect to postgres database
rather than template1 for those database creation/deletion.
* sql/metaclasses.lisp: Store the string value of :base-table if a
string is provided. Perform sql-escape at time of view-table name
creation.
* tests/test-init.lisp: Use "ej_join" as a string, rather than a
symbol, since "ej_join" is specified as :base-table. Clear the
expression output-cache in case the code for generating sql output
has changed.
* test/test-oodml.lisp: whitespace fix
* sql/ooddl.lisp: Use quoted string for primary key constraint if
table name is specified as a string.
* sql/oodml.lisp: Don't convert a string view-table name to database's
default case.
* sql/expressions.lisp: Properly handle table and attribute identifiers
when they are a string. Do not change case of symbols to match database
default case.
* sql/operations.lisp: Change multiword symbols to upper case.
* sql/fddl.lisp: Quote base-table if a string to preserve case
for drop-table and create-table.
* tests/test-syntax.lisp: Add tests of low-level string attribute
identifiers.
20 Jul 2007 Kevin Rosenberg <[email protected]>
* Version 3.8.6
* db-oracle/oracle-loader.lisp: Rework use of ORACLE_HOME directory
(problem noted on clsql-devel by icardo Boccato Alves)
* sql/pool.lisp: Remove incorrect keyword
* sql/database.lisp: Rework WITH-DATABASE to not make the database the
default database (reported by Saurabh Nanda and Chaitanya Gupta)
* doc/ref-connect.lisp: Update the documentation to WITH-DATABASE to
emphasis that make-default has a default value of nil.
* sql/transaction.lisp: Adjust commit/rollback messages for Microsoft
SQL Server. (patch from Nathan Bird)
* sql/metaclasses.lisp: Use finalize-inheritance hack on SBCL because
of trouble with def-view-class compilations (patch from Nathan Bird)
15 Jul 2007 Kevin Rosenberg <[email protected]>
* Version 3.8.5
* db-mysql/mysql-loader.lisp: Revert previous change since libmysql is
not dynamically loaded on Windows
22 Jun 2007 Kevin Rosenberg <[email protected]>
* Version 3.8.4
* db-mysql/mysql-loader.lisp: Do not bother loading libmysqlclient since
that library is dymically linked to clsql-mysql library. Thus, the mysql
library will be automatically loaded. This has only been tested on Linux,
thus far.
29 May 2007 Kevin Rosenberg <[email protected]>
* tests/test-fddl.lisp: Add :order-by for :fddl/big/1 as
reported by Ricardo Boccato Alves
02 May 2007 Kevin Rosenberg <[email protected]>
* sql/database.lisp: Add ability of WITH-DATABASE to return
multiple values (patch from Liam Healy)
25 Apr 2007 Kevin Rosenberg <[email protected]>
* Version 3.8.3
* doc/connect.xml: variable description fix by Liam Healy
* db-sqlite3/sqlite3-api.lisp, uffi/clsql-uffi-loader.lisp:
Apply patches from Marcus Pierce to reduce load-time warnings
* sql/package.lisp: Export iso-timestring as requested by Kevin Blaisdell
23 Mar 2007 Kevin Rosenberg <[email protected]>
* Version 3.8.2
* sql/db-postgresql-socket-api.lisp: Change read-socket-sequence to
disable wide characters for crypt salt sequence on SBCL, based
on patch from Lars Nostdal.
26 Jan 2007 Kevin Rosenberg <[email protected]>
* Version 3.8.1
* sql/pool.lisp: Test pooled connection when popped from
the pool to ensure the connection still works. Currently, implemented
only for MySQL.
17 Jan 2007 Kevin Rosenberg <[email protected]>
* db-mysql/Makefile: Add potential mysql directories
31 Dec 2006 Kevin Rosenberg <[email protected]>
* sql/metaclasses.lisp: Remove usused saved-initargs
* clsql.asd: Also check ~/.clsql-init.lisp at load-time (usually used to
push search libraries)
30 Dec 2006 Kevin Rosenberg <[email protected]>
* Version 3.8.0: BACKWARD INCOMPATABLE CHANGE!