index

Table of Contents

Porting hu.dwim.perec to Allegro CL and Oracle DB

Read the last News entry first for up-to-date information about the port.

1 Systems

2 Download (obsolete, see the latest news at the end)

: darcs get http://src.knowledgetools.de/tomas/porting/bordeaux-threads/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.asdf/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.def/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.delico/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.logger/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.perec/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.quasi-quote/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.rdbms/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.serializer/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.stefil/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.util/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.walker/
: darcs get http://src.knowledgetools.de/tomas/porting/hu.dwim.wui/
: darcs get http://src.knowledgetools.de/tomas/porting/hudwim/
: darcs get http://src.knowledgetools.de/tomas/porting/perec.git/
: darcs get http://src.knowledgetools.de/tomas/porting/perec2.git/
: darcs get http://src.knowledgetools.de/tomas/porting/rdbms.git/
: darcs get http://src.knowledgetools.de/tomas/porting/rdbms2.git/

#+results

The latest hu.dwim.rdbms and hu.dwim.perec:

$ git clone http://src.knowledgetools.de/tomas/porting/rdbms2.git
$ git clone http://src.knowledgetools.de/tomas/porting/perec2.git

There is also older repository:

$ git clone http://src.knowledgetools.de/tomas/porting/rdbms.git
$ git clone http://src.knowledgetools.de/tomas/porting/perec.git

3 News

3.1 hu.dwim.def added <2010-03-02 Tue>

3.2 Status update <2010-03-04 Thu>

test sbcl-1.0.36 allegro 8.1 clozure 1.4
hu.dwim.serializer OK OK OK
hu.dwim.walker good good good
hu.dwim.computed-class OK OK broken
hu.dwim.rdbms (backend) OK OK broken
hu.dwim.perec (persistence query) OK OK broken

hu.dwim.walker issues:

  • all: HU.DWIM.WALKER.TEST::TEST/SEMANTICS/SPECIALS/1
  • allegro: HU.DWIM.WALKER.TEST::TEST/SEMANTICS/TYPES/1

## cc: unbound-slot-value not portable #+(or sbcl allegro) ## ~/repo/dwim.hu/local/live/hu.dwim.computed-class/source/util.lisp

3.3 hu.dwim.rdbms added <2010-03-16 Tue>

3.4 hu.dwim.rdbms and hu.dwim.perec ported to oracle <2010-05-13 Thu>

Works with Oracle 10g Express Edition, SBCL 1.0.38.7 and Allegro CL 8.1.

Merged with dwim.hu live repository.

I tried to keep the existing functionality so that no existing code would need to be modified. However, not all functionality used by dwim.hu guys is portable across database backends. For example:

  • Avoid empty strings because Oracle doesn't have them or rather treats the as NULL instead.
  • Using constrained string and text types might be necessary because Oracle can't manage LOBs in indices and WHERE clauses, for example.
  • Keep in mind Oracle limits, e.g. for numbers, "strings" etc.
  • Avoid Embeded SQL.
  • Avoid the SQL reader and sexp compiler. Build queries using AST like hu.dwim.perec does it.
  • Avoid lexical variables (sql-unquote) in column names, the query compiler doesn't cope with that.

hu.dwim.rdbms/postgresql:

(#<test-run: 47 tests, 154 assertions, 2 failures in 1.236 sec (0 failed assertions, 2 errors, none expected)>) 
(HU.DWIM.RDBMS.TEST::TEST/BASIC/EXPAND-SQL-AST/BINDING
 HU.DWIM.RDBMS.TEST::TEST/SYNTAX/EXPAND-SQL-AST/UNQUOTE/1)

#<test-run: 49 tests, 46 assertions, 28 failures in 0.072 sec (2 failed assertions, 26 errors, none expected)>

hu.dwim.rdbms/oracle:

(#<test-run: 47 tests, 136 assertions, 12 failures in 1.453 sec (6 failed assertions, 6 errors, none expected)>) 
(HU.DWIM.RDBMS.TEST::TEST/BASIC/BINDING
 HU.DWIM.RDBMS.TEST::TEST/BASIC/EXPAND-SQL-AST/BINDING
 HU.DWIM.RDBMS.TEST::TEST/SYNTAX/SEXP-DIALECT
 HU.DWIM.RDBMS.TEST::TEST/SYNTAX/SQL-READER
 HU.DWIM.RDBMS.TEST::TEST/SYNTAX/EXPAND-SQL-AST/UNQUOTE/1
 HU.DWIM.RDBMS.TEST::TEST/SYNTAX/EXPAND-SQL-AST/UNQUOTE/2
 HU.DWIM.RDBMS.TEST::TEST/SYNTAX/EXPAND-SQL-AST/UNQUOTE/3
 HU.DWIM.RDBMS.TEST::TEST/SYNTAX/FORMAT/CREATE-TABLE
 HU.DWIM.RDBMS.TEST::TEST/SYNTAX/FORMAT/ALTER-TABLE)

#<test-run: 49 tests, 36 assertions, 37 failures in 0.072 sec (8 failed assertions, 29 errors, none expected)>

hu.dwim.perec/postgresql:

HU.DWIM.PEREC.TEST::TEST/QUERY/SELECT/MEMBER-5              (expected)

hu.dwim.perec/oracle:

(#<test-run: 436 tests, 2519 assertions, 10 failures in 21.585 sec (4 failed assertions, 6 errors, none expected)>) 
(HU.DWIM.PEREC.TEST::TEST/PERSISTENCE/LOCK-CLASS/2
 HU.DWIM.PEREC.TEST::TEST/PERSISTENCE/LOCK-INSTANCE/2
 HU.DWIM.PEREC.TEST::TEST/PERSISTENCE/LOCK-SLOT/2
 HU.DWIM.PEREC.TEST::TEST/PERSISTENCE/TYPE/TEXT/2B             <==== bad
 HU.DWIM.PEREC.TEST::TEST/PERSISTENCE/TYPE/DURATION/1
 HU.DWIM.PEREC.TEST::TEST/PERSISTENCE/TYPE/DURATION/2)

(#<test-run: 261 tests, 417 assertions, 14 failures in 23.634 sec (6 failed assertions, 8 errors, none expected)>) 
(HU.DWIM.PEREC.TEST::TEST/QUERY/SELECT/MEMBER-5                (expected)
 HU.DWIM.PEREC.TEST::TEST/QUERY/EMBEDDED-SQL/WHERE
 HU.DWIM.PEREC.TEST::TEST/QUERY/EMBEDDED-SQL/SELECT-FORM
 HU.DWIM.PEREC.TEST::TEST/QUERY/EMBEDDED-SQL/ORDER-BY
 HU.DWIM.PEREC.TEST::TEST/QUERY/EMBEDDED-SQL/GROUP-BY
 HU.DWIM.PEREC.TEST::TEST/QUERY/TYPE/T/1                       <==== bad
 HU.DWIM.PEREC.TEST::TEST/QUERY/TYPE/STRING/1B                 <==== bad
 HU.DWIM.PEREC.TEST::TEST/QUERY/TYPE/DURATION/1
 HU.DWIM.PEREC.TEST::TEST/QUERY/TYPE/DURATION/2
 HU.DWIM.PEREC.TEST::TEST/QUERY/TYPE/OR-NULL-STRING/1          <==== bad
 HU.DWIM.PEREC.TEST::TEST/QUERY/TYPE/OR-UNBOUND-STRING/1       <==== bad
 HU.DWIM.PEREC.TEST::TEST/QUERY/TYPE/OR-UNBOUND-NULL-STRING/2) <==== bad

3.5 New features and fixes <2011-05-09 Mon>

$ git clone http://src.knowledgetools.de/tomas/porting/rdbms.git
$ git clone http://src.knowledgetools.de/tomas/porting/perec.git
  • database backend portability fixes and improvements
  • new query syntax constructs and fixes
    • distinct
    • join
    • set-select (set operations)
    • subselect
    • order-by with column numbers
  • sequences
  • foreign keys support
  • constraints
  • indices
  • full text search
  • transactions and caching
  • prefetching fixes
  • plan reporting
  • record ddl statements
  • lisp-side queries not supported anymore

3.6 Updated rdbms and perec git repositories added <2011-12-02 Fri>

Clone rdbms2 and perec2 repos.

  • proper date (cdate) handling
  • oracle improvements
  • query fixes and enhancements
  • check constraint introduced, e.g.
    (prc:define-check-constraint color sky
      (<= 0 (color sky) #xffffff))
    (prc:define-check-constraint slot class
      (member (slot class) '(-1 1 2 3)))
    
  • other minor fixes and improvements

3.7 the latest repos <2013-12-05 Thu>

git clone http://src.knowledgetools.de/tomas/porting/hudwim/asdf.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/computed-class.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/def.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/defclass-star.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/logger.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/perec.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/quasi-quote.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/rdbms.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/serializer.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/syntax-sugar.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/util.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/walker.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/closer-mop.git

3.8 LATEST: the latest repos <2015-12-04 Fri>

git clone http://src.knowledgetools.de/tomas/porting/hudwim/computed-class.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/def.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/defclass-star.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/perec.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/rdbms.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/serializer.git
git clone http://src.knowledgetools.de/tomas/porting/hudwim/walker.git

Validate