Creating a Connection Pool
From a clojure.java.jdbc spec
You can create a C3P0 connection pool with any clojure.java.jdbc connection spec map with :subname and
:subprotocol keys. connection-pool-spec will return a clojure.java.jdbc connection spec you can use directly:
(require '[clojure.java.jdbc :as jdbc]
'[metabase.connection-pool :as connection-pool])
;;; Create a C3P0 connection pool
(let [pool-spec (connection-pool/connection-pool-spec my-jdbc-spec)]
(jdbc/query pool-spec ["SELECT *"]))(You will almost certainly want to store your pool somewhere, such as in an atom).
From a JDBC URL String:
You can create a pooled DataSource (e.g., for use with next-jdbc) by calling pooled-data-source-from-url:
(require '[next.jdbc :as jdbc]
'[metabase.connection-pool :as connection-pool])
(with-open [connection (jdbc/get-connection (connection-pool/pooled-data-source-from-url "jdbc:postgresql:localhost:3000/my_db"))]
(reduce my-fn init-value (jdbc/plan connection ["SELECT *"])))Configuring the connection pool
You can set connection pool options such as size in a c3p0.properties file, or by passing them as a map to connection-pool-spec:
(def ^:private connection-pool-properties
{"maxIdleTime" (* 3 60 60)
"minPoolSize" 1
"initialPoolSize" 1
"maxPoolSize" 15})
(def my-pool-spec
(connection-pool/connection-pool-spec my-jdbc-spec connection-pool-properties))See https://www.mchange.com/projects/c3p0/#configuration_properties for a list of all options.
Destroying connection pools
destroy-connection-pool! will destroy the connection pool you created:
(connection-pool/destroy-connection-pool! pool-spec)Legal Stuff
Copyright © 2019 Metabase, Inc. This project is licensed under the Eclipse Public License, same as Clojure.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
