Menu

#226 contrib/pure-scheme/jdbc.scm broken on 1.16.6 (outdated?)

open
nobody
None
5
2007-06-05
2007-06-05
Anonymous
No

;; jdbc/connect-auth only for conveniance
(define (jdbc/connect-auth jdbc-datasource user pass)
(get-connection (java-null <java.sql.driver-manager>) (->jstring jdbc-datasource) (->jstring user) (->jstring pass)))

#;> (let* ((conn (jdbc/connect-auth "jdbc:postgresql:traffic_nrw_0_3_0" "olsim" ""))
(stmt (jdbc/prepare-statement conn
"select * from vrz_verfuegbarkeit(NULL)"
'(|Statement.NO_GENERATED_KEYS|)))
(res (jdbc/execute-query stmt)))
(jdbc/close conn)
res)
Error: attempt to apply non-procedure '#<java java.lang.Class java.sq...'.
---------------------------
file:/home/johannes/sisc/contrib/pure-scheme/jdbc.scm:91:28: <indeterminate call>
---------------------------
console:82:88: <from call to @jdbc::jdbc/prepare-statement>
#;> (let* ((conn (jdbc/connect-auth "jdbc:postgresql:traffic_nrw_0_3_0" "olsim" ""))
(stmt (jdbc/prepare-statement conn
"select * from vrz_verfuegbarkeit(NULL)"))
(res (jdbc/execute-query stmt)))
(jdbc/close conn) res)
Error in cdr: expected type pair, got '#f'.
---------------------------
file:/home/johannes/sisc/contrib/pure-scheme/jdbc.scm:63:32: <from call to cdr>
---------------------------
file:/home/johannes/sisc/contrib/pure-scheme/jdbc.scm:62:25: <from call to map>
---------------------------
console:83:165: <from call to @jdbc::jdbc/execute-query>

#;> (load "/home/johannes/sisc/contrib/pure-scheme/streams.scm")
#;> (load "/home/johannes/sisc/contrib/pure-scheme/jdbc.scm")
#;> (import jdbc)
#;> (let* ((conn (jdbc/connect-auth "jdbc:postgresql:traffic_nrw_0_3_0" "olsim" ""))
(stmt (jdbc/prepare-statement conn
"select * from vrz_verfuegbarkeit(NULL)"
(list (access-constant java-class '|Statement.NO_GENERATED_KEYS|))))
(res (jdbc/execute-query stmt)))
(jdbc/close conn) res)
Error in java/null: expected type java class, got '#<procedure |@s2j::java-class|...'.
---------------------------
file:/home/johannes/sisc/contrib/pure-scheme/jdbc.scm:45:42: <from call to @s2j::java-null>
---------------------------
console:109:164: <from call to @jdbc::access-constant>

#;> (let* ((conn (jdbc/connect-auth "jdbc:postgresql:traffic_nrw_0_3_0" "olsim" ""))
(stmt (jdbc/prepare-statement conn
"select * from vrz_verfuegbarkeit(NULL)"))
(res (jdbc/execute-query stmt)))
(jdbc/close conn) res)
Error in cdr: expected type pair, got '#f'.
---------------------------
file:/home/johannes/sisc/contrib/pure-scheme/jdbc.scm:63:32: <from call to cdr>
---------------------------
file:/home/johannes/sisc/contrib/pure-scheme/jdbc.scm:62:25: <from call to map>
---------------------------
console:114:165: <from call to @jdbc::jdbc/execute-query>

;; even changing the jdbc/prepare-statement into
;; the following doesn't change situation
(define (jdbc/prepare-statement connection query . updatable)
(if (and (not (null? updatable)) (car updatable))
(prepare-statement connection (->jstring query)
(access-constant <java.sql.result-set> '|TYPE_FORWARD_ONLY|)
(access-constant <java.sql.result-set> '|CONCUR_UPDATABLE|))
(prepare-statement connection (->jstring query))))

Discussion

  • Friedrich Delgado Friedrichs

    Logged In: YES
    user_id=722618
    Originator: NO

    Parts of this bug report are bogus, however the real bug in jdbc.scm is described in the last paragraph... ACCESS-CONSTANT was missing from the first arm of the if statement in jdbc/prepare-statement

     
  • Nobody/Anonymous

    Logged In: NO

    ;;; ok that works for me[tm]:

    (define (jdbc/prepare-statement connection query . updatable)
    (if (and (not (null? updatable)) (car updatable))
    (prepare-statement connection (->jstring query)
    (access-constant <java.sql.result-set> '|TYPE_FORWARD_ONLY|)
    (access-constant <java.sql.result-set> '|CONCUR_UPDATABLE|))
    (prepare-statement connection (->jstring query))))

    ;; add an entry for '|SMALLINT|

    (set! type-conversions
    `((,(->number (access-constant <java.sql.Types> '|SMALLINT|)) . (,get-int . ,->number))
    (,(->number (access-constant <java.sql.Types> '|INTEGER|)) . (,get-int . ,->number))
    (,(->number (access-constant <java.sql.Types> '|FLOAT|)) . (,get-float . ,->number))
    (,(->number (access-constant <java.sql.Types> '|DOUBLE|)) . (,get-double . ,->number))
    (,(->number (access-constant <java.sql.Types> '|DECIMAL|)) . (,get-double . ,->number))
    (,(->number (access-constant <java.sql.Types> '|NUMERIC|)) . (,get-double . ,->number))
    (,(->number (access-constant <java.sql.Types> '|REAL|)) . (,get-float . ,->number))
    (,(->number (access-constant <java.sql.Types> '|VARCHAR|)) . (,get-string . ,->string))
    (,(->number (access-constant <java.sql.Types> '|CHAR|)) . (,get-string . ,->string))))

     

Log in to post a comment.

MongoDB Logo MongoDB