[postmodern-devel] Unbound slots on nullable values?

Mikko Ahonen mikko.ahonen at iki.fi
Tue Mar 18 17:36:11 UTC 2008


Hello,

I am new to the list, so please forgive me if this is a stupid user error.

Am I doing something wrong or is there a bug in how postmodern handles
non-null fields?

Even very simple dao reports that slot is unbound although according
table-description value may be NULL.

This is the message I get:

 The slot TRX is unbound in the object #<KOE {11BA1751}>.

I run
- Postgres 8.3
- OS X Leopard 10.5.2
- SBCL 1.0.7
-  I installed latest postmodern today.

I attached output below.

Best regards,

Mikko Ahonen

--

(asdf:oos 'asdf:load-op :postmodern)
(use-package :postmodern)

; loading system definition from
; /usr/local/lib/sbcl/site-systems/postmodern.asd into #<PACKAGE "ASDF0">
; registering #<SYSTEM :POSTMODERN {11E033B9}> as POSTMODERN
; registering #<SYSTEM :POSTMODERN-TESTS {11F4BC91}> as POSTMODERN-TESTS
; loading system definition from
; /usr/local/lib/sbcl/site-systems/bordeaux-threads.asd into #<PACKAGE "ASDF0">
; registering #<SYSTEM BORDEAUX-THREADS {120D0031}> as BORDEAUX-THREADS
; registering #<SYSTEM BORDEAUX-THREADS-TEST {11636C29}> as
; BORDEAUX-THREADS-TEST
; loading system definition from /usr/local/lib/sbcl/site-systems/s-sql.asd
; into #<PACKAGE "ASDF0">
; registering #<SYSTEM :S-SQL {117B6C01}> as S-SQL
; loading system definition from
; /usr/local/lib/sbcl/site-systems/simple-date.asd into #<PACKAGE "ASDF0">
; registering #<SYSTEM :SIMPLE-DATE {1191A041}> as SIMPLE-DATE
; registering #<SYSTEM :SIMPLE-DATE-TESTS {11A4BFB1}> as SIMPLE-DATE-TESTS
; loading system definition from
; /usr/local/lib/sbcl/site-systems/cl-postgres.asd into #<PACKAGE "ASDF0">
; registering #<SYSTEM :CL-POSTGRES {11BDA379}> as CL-POSTGRES
; registering #<SYSTEM :CL-POSTGRES-TESTS {11D181D1}> as CL-POSTGRES-TESTS
; loading system definition from
; /usr/local/lib/sbcl/site-systems/trivial-utf-8.asd into #<PACKAGE "ASDF0">
; registering #<SYSTEM :TRIVIAL-UTF-8 {11E8E3A1}> as TRIVIAL-UTF-8
; registering #<SYSTEM :TRIVIAL-UTF-8-TESTS {11FCC3B1}> as TRIVIAL-UTF-8-TESTS
; loading system definition from
; /usr/local/lib/sbcl/site-systems/ieee-floats.asd into #<PACKAGE "ASDF0">
; registering #<SYSTEM :IEEE-FLOATS {1214B319}> as IEEE-FLOATS
; registering #<SYSTEM :IEEE-FLOATS-TESTS {122CFC91}> as IEEE-FLOATS-TESTS
; loading system definition from /usr/local/lib/sbcl/site-systems/usocket.asd
; into #<PACKAGE "ASDF0">
; registering #<SYSTEM USOCKET {11783E61}> as USOCKET
; loading system definition from
; /usr/local/lib/sbcl/site-systems/split-sequence.asd into #<PACKAGE "ASDF0">
; registering #<SYSTEM :SPLIT-SEQUENCE {11938B69}> as SPLIT-SEQUENCE
; loading system definition from /usr/local/lib/sbcl/site-systems/md5.asd into
; #<PACKAGE "ASDF0">
; registering #<SYSTEM MD5 {11ABD991}> as MD5
WARNING: Either there is no Bordeaux-threads support for your
implementation, or your implementation does not support threads
therefore some features may not work. Feel free to implement it, or
bug one of the maintainers to do so if your lisp supports threads at
all.
STYLE-WARNING: implicitly creating new generic function SOCKET-ACCEPT
NIL
*
T
(defparameter *db* "foobar")

*DB*
(defparameter *db-user* "mikko")

*DB-USER*
(defparameter *db-pwd* "")

*DB-PWD*
(defparameter *db-host* "localhost")


*DB-HOST*
* (connect-toplevel *db* *db-user* *db-pwd* *db-host*)

(deftable koe ()
 ((data-id :type integer :initarg :data-id :accessor data-id)
  (ver :type (or integer db-null) :initarg :ver :accessor ver)
  (trx :type (or integer db-null) :initarg :trx :accessor trx))

  (:class-name koe)
  (:indices data-id))

* (drop-table 'koe)

NIL
* (create-table 'koe)
WARNING:
  Postgres warning: CREATE TABLE / PRIMARY KEY will create implicit
index "koe_pkey" for table "koe"

NIL
* (make-instance 'koe :data-id 1 :ver 3)

#<KOE {11B3EB71}>
* (table-description 'koe)

(("data_id" "int4" NIL) ("ver" "int4" T) ("trx" "int4" T))
* (make-instance 'koe :data-id 1 :ver 3)

#<KOE {11BA1751}>
* (save-dao *)

debugger invoked on a UNBOUND-SLOT:
 The slot TRX is unbound in the object #<KOE {11BA1751}>.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
 0: [USE-VALUE  ] Return a value as the slot-value.
 1: [STORE-VALUE] Store and return a value as the slot-value.
 2: [ABORT      ] Exit debugger, returning to top level.

((SB-PCL::FAST-METHOD SLOT-UNBOUND (T T T))
 #<unavailable argument>
 #<unavailable argument>
 #<unavailable argument>
 #<KOE {11BA1751}>
 TRX)
0] 2



More information about the postmodern-devel mailing list