[elephant-devel] windows + postgres-socket

Frank Schorr franks-muc at web.de
Wed Mar 7 09:38:45 UTC 2007


Robert, 

trying the first steps from the tutorial was a good hint.

open store returned #<DB-CLSQL::SQL-STORE-CONTROLLER @ #x211395ba>
which looked good, with all slots initialized.

(add-to-root "my key" "my value")
produced this error in ACL trial

Error: Attempt to call #<Vector @ #x20d98c8a> for which the definition has not yet been (or is no longer) loaded.
[condition type: SIMPLE-ERROR]
in function serialize-to-utf8 

and this error in Lispworks:
Foreign function ELEPHANT-MEMUTIL::WRITE-INT32 trying to call to
unresolved external function "write_int32".

(interesting: ACL did allow me to find out that write_int32... Usually the ACL 
debugger provides *much* more information than LW)

This is the content of libmemutil.def:

; dlltool -z libmeutil.def --export-all-symbols -e exports.o -l libmemutil.lib libmemutil.o
EXPORTS
	write_uint64_t @ 1
	offset_charp @ 2
	read_double @ 3
	read_float @ 4
	read_int32_t @ 5
	read_int64_t @ 6
	read_uint32_t @ 7
	read_uint64_t @ 8
	write_double @ 9
	write_float @ 10
	write_int32_t @ 11
	write_int64_t @ 12
	write_uint32_t @ 13
	copy_buf @ 14 

I then amended the def-function in memutil.lisp to have the "_t"
(not really knowing what I am doing)

#-(or cmu sbcl)
(def-function ("write_int32_t" write-int32)  ;; FS
    ((buf array-or-pointer-char)
     (num :int)
     (offset :int))
  :returning :void)

after eveluating the form in the ACL IDE

(add-to-root "my key" "my value")
(get-from-root "my key")

work OK. 
I received this test result 
....
PGET-BOTH PGET-BOTH-RANGE PCURSOR NEWINDEX PCURSOR2 ADD-GET-REMOVE ADD-GET-REMOVE-SYMBOL EXISTSP
Warning: Manually finalizing class IDX-ONE
 DISABLE-CLASS-INDEXING-TEST INDEXING-BASIC-TRIVIAL INDEXING-BASIC
Test INDEXING-CLASS-OPT failed
Form: (PROGN (WHEN (CLASS-INDEXEDP-BY-NAME 'IDX-CSLOT) (DISABLE-CLASS-INDEXING 'IDX-CSLOT :ERRORP NIL) (SETF (FIND-CLASS 'IDX-CSLOT) NIL))
             (DEFCLASS IDX-CSLOT NIL ((SLOT1 :INITARG :SLOT1 :INITFORM 0 :ACCESSOR SLOT1)) (:METACLASS PERSISTENT-METACLASS :INDEX T))
             (VALUES (CLASS-INDEXEDP-BY-NAME 'IDX-CSLOT)))
Expected value: T
Actual value: NIL.
 INDEXING-INHERIT INDEXING-RANGE INDEXING-SLOT-MAKUNBOUND
Warning: Manually finalizing class IDX-FIVE-DEL
 INDEXING-WIPE-INDEX INDEXING-RECONNECT-DB INDEXING-CHANGE-CLASS INDEXING-REDEF-CLASS
Ranged get of 10/700 objects = Linear: 14.15 sec Indexed: 1.462 sec
 INDEXING-TIMING
Single store mode: ignoring REMOVE-ELEMENT
Single store mode: ignoring MIGRATE-BASIC
Single store mode: ignoring MIGRATE-BTREE
Single store mode: ignoring MIGRATE-IDX-BTREE
Single store mode: ignoring MIGRATE-PCLASS
Single store mode: ignoring  MIGRATE-IPCLASS
1 out of 121 total tests failed: INDEXING-CLASS-OPT.
NIL

Looks good !?

However, when I load elephant in a fresh lisp, 
(add-to-root "my key" "my value")
is ok, but 

(get-from-root "my key")
Error: Attempt to call #<Vector @ #x20db2a0a> for which the definition has not yet been (or is no longer) loaded.
[condition type: SIMPLE-ERROR]
in (method deserialize-string ((eql utf8) t))

So it is more complicated ... 

I think you will be able to improve it, the write_int32 is a hint.

Best rgards Frank.



_______________________________________________________________________
Viren-Scan für Ihren PC! Jetzt für jeden. Sofort, online und kostenlos.
Gleich testen! http://www.pc-sicherheit.web.de/freescan/?mc=022222




More information about the elephant-devel mailing list