How do I handle such thing most efficiently? Should I report them at all?
Did change the following in hu.dwim.rdbms/source/oracle/conversion.lisp
(dunno if this does more harm than good without unit tests but atleast the error is gone)
(def function make-timezone (hours minutes)
(let ((offset-in-sec (* (+ (* 60 hours) minutes) 60)))
(if (and (= minutes 0)
(= hours 0))
+utc-zone+
(local-time::make-timezone
:subzones `((,offset-in-sec nil "anonymous" nil nil))
:name "anonymous"
:loaded t))))
to
(def function make-timezone-old (hours minutes)
(let ((offset-in-sec (* (+ (* 60 hours) minutes) 60)))
(if (and (= minutes 0)
(= hours 0))
+utc-zone+
(local-time::make-timezone
:subzones (make-array 1 :initial-contents
(list (local-time::make-subzone
:offset offset-in-sec)))
:name "anonymous"
:loaded t))))
to get rid of:
SYMORA> (with-symdb (execute [select * symtag]))
--TIME MARK 2010-11-04--
21:34 0 RDBMS DEBUG About to BEGIN transaction in database #<ORACLE {100DD2F9B1}>
21:34 0 RDBMS DEBUG Executing "SELECT * FROM symtag"
STYLE-WARNING: Undefined alien: "OCIGetInstantClientPackageName"
21:34 0 RDBMS DEBUG Connecting in transaction #<#<STANDARD-CLASS NIL {10033B8C31}> :begin-executed-p #t {1002DFA061}>
21:34 0 RDBMS DEBUG Logging on in transaction #<#<STANDARD-CLASS NIL {10033B8C31}> :begin-executed-p #t {1002DFA061}>
21:34 0 RDBMS DEBUG Preparing command: "SELECT * FROM symtag"
21:34 0 RDBMS DEBUG Fetching "SYMTAG_KEY" from buffer at index 0
21:34 0 RDBMS DEBUG Fetched: "foo"
21:34 0 RDBMS DEBUG Fetching "SYMTAG_CREATION_DATE" from buffer at index 0
21:34 0 RDBMS DEBUG Fetched: :NULL
21:34 0 RDBMS DEBUG Fetching "SYMTAG_KEY" from buffer at index 0
21:34 0 RDBMS DEBUG Fetched: "foobar"
21:34 0 RDBMS DEBUG Fetching "SYMTAG_CREATION_DATE" from buffer at index 0
21:34 0 RDBMS DEBUG Fetched: :NULL
21:34 0 RDBMS DEBUG Fetching "SYMTAG_KEY" from buffer at index 0
21:34 0 RDBMS DEBUG Fetched: "foo11"
21:34 0 RDBMS DEBUG Fetching "SYMTAG_CREATION_DATE" from buffer at index 0
--- *sbcl debug buffer*
The value ((3600 NIL "anonymous" NIL NIL))
is not of type
(SIMPLE-ARRAY T (*)).
[Condition of type TYPE-ERROR]
Restarts:
0: [TERMINATE-TRANSACTION] return (values) from the WITH-TRANSACTION block executing the current terminal action :COMMIT
1: [COMMIT-TRANSACTION] mark transaction for commit only and return (values) from the WITH-TRANSACTION block
2: [ROLLBACK-TRANSACTION] mark transaction for rollback only and return (values) from the WITH-TRANSACTION block
3: [RESTART-TRANSACTION] rollback the transaction by unwinding the stack and restart the WITH-TRANSACTION block in a new database transaction
4: [RETRY] Retry SLIME REPL evaluation request.
5: [*ABORT] Return to SLIME's top level.
--more--
Backtrace:
0: (LOCAL-TIME::MAKE-TIMEZONE)[:EXTERNAL]
Locals:
SB-DEBUG::ARG-0 = 6
1: (HU.DWIM.RDBMS.ORACLE::LOCAL-TIME-FROM-TIMESTAMP-TZ #.(SB-SYS:INT-SAP #X006918C0) #<unavailable argument>)
Locals:
SB-DEBUG::ARG-0 = #.(SB-SYS:INT-SAP #X006918C0)
SB-DEBUG::ARG-1 = :<NOT-AVAILABLE>
2: (HU.DWIM.RDBMS.ORACLE::FETCH-COLUMN-VALUE #<HU.DWIM.RDBMS.ORACLE::COLUMN-DESCRIPTOR {100B9E6761}> 0)
Locals:
SB-DEBUG::ARG-0 = #<HU.DWIM.RDBMS.ORACLE::COLUMN-DESCRIPTOR {100B9E6761}>
SB-DEBUG::ARG-1 = 0
3: (CURRENT-ROW #<HU.DWIM.RDBMS.ORACLE::ORACLE-SEQUENTIAL-ACCESS-CURSOR {100B9E6E71}>)[:EXTERNAL]
4: (FOR-EACH-ROW #<CLOSURE (LAMBDA #) {100B9E8979}> #<HU.DWIM.RDBMS.ORACLE::ORACLE-SEQUENTIAL-ACCESS-CURSOR {100B9E6E71}>)[:EXTERNAL]
5: (COLLECT-ROWS #<HU.DWIM.RDBMS.ORACLE::ORACLE-SEQUENTIAL-ACCESS-CURSOR {100B9E6E71}>)[:EXTERNAL]
6: (HU.DWIM.RDBMS.ORACLE::EXECUTE-PREPARED-STATEMENT ..)[:EXTERNAL]
7: ((SB-PCL::FAST-METHOD HU.DWIM.RDBMS::EXECUTE-COMMAND (ORACLE HU.DWIM.RDBMS.ORACLE::ORACLE-TRANSACTION STRING)) ..)[:EXTERNAL]
8: ((LAMBDA (SB-PCL::.PV. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2. SB-INT:&MORE SB-PCL::.DFUN-MORE-CONTEXT. SB-PCL::.DFUN-MORE-COUNT.)) ..)
9: (HU.DWIM.RDBMS::CALL-WITH-TRANSACTION* #<FUNCTION (LABELS HU.DWIM.RDBMS::WITH-TRANSACTION*-BODY) {10034E8619}>)[:EXTERNAL]
10: ((LAMBDA ()))
11: (SB-INT:SIMPLE-EVAL-IN-LEXENV (WITH-SYMDB (EXECUTE (SQL #))) #<NULL-LEXENV>)
--more--