From f85937a0659bc12acd1f330edf565cca7e370f79 Mon Sep 17 00:00:00 2001 From: Andreas Wurzer Date: Thu, 1 Sep 2011 14:14:08 +0200 Subject: [PATCH] added tests for derby database, which doesn't support generated keys --- project.clj | 3 ++- test/clojureql/test.clj | 25 ++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/project.clj b/project.clj index f05ae6d..6c913f0 100644 --- a/project.clj +++ b/project.clj @@ -7,7 +7,8 @@ :dev-dependencies [[swank-clojure "1.3.0-SNAPSHOT"] [mysql/mysql-connector-java "5.1.17"] [org.xerial/sqlite-jdbc "3.7.2"] - [postgresql/postgresql "8.4-702.jdbc4"]] + [postgresql/postgresql "8.4-702.jdbc4"] + [org.apache.derby/derby "10.1.1.0"]] :repositories {"clojure-releases" {:url "http://build.clojure.org/releases"}}) diff --git a/test/clojureql/test.clj b/test/clojureql/test.clj index d746548..2ba7329 100644 --- a/test/clojureql/test.clj +++ b/test/clojureql/test.clj @@ -39,7 +39,15 @@ :subname "/tmp/cql.sqlite3" :create true}) -(def databases [mysql postgresql sqlite3]) +(def derby + {:classname "org.apache.derby.jdbc.EmbeddedDriver" + :subprotocol "derby" + :subname "/tmp/cql.derby" + :create true}) + +(def register-derby-driver (-> (Class/forName "org.apache.derby.jdbc.EmbeddedDriver") .newInstance)) + +(def databases [mysql postgresql sqlite3 derby]) (defn mysql? [] (isa? (class (connection)) com.mysql.jdbc.JDBC4Connection)) @@ -50,6 +58,9 @@ (defn sqlite3? [] (isa? (class (connection)) org.sqlite.Conn)) +(defn derby? [] + (isa? (class (connection)) org.apache.derby.impl.jdbc.EmbedConnection)) + (defn drop-if [table] (try (drop-table table) (catch Exception _))) @@ -95,6 +106,18 @@ [:id :integer "PRIMARY KEY" "AUTOINCREMENT"] [:wage :integer])) +(defmethod create-schema org.apache.derby.impl.jdbc.EmbedConnection [] + (create-table + :users + [:id :integer "PRIMARY KEY" "GENERATED ALWAYS AS IDENTITY"] + [:name "varchar(255)"] + [:title "varchar(255)"] + [:birthday "TIMESTAMP"]) + (create-table + :salary + [:id :integer "PRIMARY KEY" "GENERATED ALWAYS AS IDENTITY"] + [:wage :integer])) + (def users (-> (table :users) (project [:id :name :title]))) (def salary (-> (table :salary) (project [:id :wage])))