Only accretive/fixative changes will be made from now on.
1.2.724 -- 2021-09-25
next.jdbc compatible with GraalVM 22+ (PR #178, @FieryCod).1.2.709 -- 2021-08-30
:property-separator from "etc" map and defaulting H2 to ";" for this.tools.build for running tests and JAR building etc.1.2.689 -- 2021-08-01
DatafiableRow to ResultSet so there's a public method to call on (rows of) a JDBC result set directly.clojure.java.jdbc functions inside next.jdbc/with-transaction and discuss how to migrate transaction-based code in the Migration guide.with-transaction in Getting Started.depstar, test-runner, and CI versions. Add example build.clj to run tests in a subprocess (purely educational).1.2.674 -- 2021-06-16
:property-separator to next.jdbc.connection/dbtypes and using it in jdbc-url.next.jdbc/with-logging to create a wrapped connectable that will invoke logging functions with the SQL/parameters and optionally the result or exception for each operation.:unit_count references in Getting Started (were :unit_cost).test-runner.1.2.659 -- 2021-05-05
clj-commons/camel-snake-kebab an unconditional dependency. [Being a conditional dependency that could be brought in at runtime caused problems with GraalVM-based native compilation as well as with multi-project monorepos]1.1.646 -- 2021-03-15
execute-batch! to work with datasources and connections, and providing the SQL statement directly.1.1.643 -- 2021-03-06
com.github.seancorfield/next.jdbc (although new versions will continue to be deployed to seancorfield/next.jdbc for a while -- see the Clojars Verified Group Names policy).next.jdbc.transaction/*nested-tx* more thoroughly since that difference from clojure.java.jdbc has come up in conversation a few times recently.:allowMultiQueries true as an option for MySQL/MariaDB to allow multiple statements to be executed and multiple result sets to be returned.next.jdbc.prepare/execute-batch! to next.jdbc/execute-batch! (to avoid a circular dependency that previously relied on requiring next.jdbc.result-set at runtime -- which was problematic for GraalVM-based native compilation); next.jdbc.prepare/execute-batch! is deprecated: it will continue to exist and work, but is no longer documented. In addition, next.jdbc.prepare/execute-batch! now relies on a private volatile! in order to reference next.jdbc.result-set/datafiable-result-set so that it is GraalVM-friendly. Note: code that requires next.jdbc.prepare and uses execute-batch! without also requiring something that causes next.jdbc.result-set to be loaded will no longer return generated keys from execute-batch! but that's an almost impossible path since nearly all code that uses execute-batch! will have called next.jdbc/prepare to get the PreparedStatement in the first place.1.1.613 -- 2020-11-05
camel-snake-case is properly required before use in an uberjar context.1.1.610 -- 2020-10-19
"duckdb" to next.jdbc.connection/dbtypes.next.jdbc.types/as-* functions to use a thunk instead of a vector to convey metadata, so that wrapped values do not get unpacked by HoneySQL.ResultSet, so that reducible-result-set and foldable-result-set can be exposed for folks who want more control over processing result sets obtained from database metadata.datafiable-result-set can now be called without the connectable and/or opts arguments; a nil connectable now disables foreign key navigation in datafied results (rather than throwing an obscure exception).1.1.588 -- 2020-09-09
next.jdbc.plan/select-one! and next.jdbc.plan/select!.ResultSet.getMetaData() returns null, we assume the column count is zero, i.e., an empty result set. This should "never happen" but some JDBC drivers are badly behaved and their idea of an "empty result set" does not match the JDBC API spec.1.1.582 -- 2020-08-05
next.jdbc.connection/jdbc-url to build :jdbcUrl values that can be passed to ->pool or component.1.1.581 -- 2020-08-03
bool and bit columns in a new Tips & Tricks section, inspired by #134.:return-generated-keys as an option on execute-batch!.1.1.569 -- 2020-07-10
next.jdbc/with-options and next.jdbc.prepare/statement; correct spec for next.jdbc.connection/component. PR #131 from @Briaoeuidhtns.clojure.lang.ILookup on the three builder adapters.with-column-value to RowBuilder and a more generic builder-adapter.next.jdbc/snake-kebab-opts, next.jdbc/unqualified-snake-kebab-opts, next.jdbc.result-set/as-kebab-maps, and next.jdbc.result-set/as-unqualified-kebab-maps (which are present only if camel-snake-kebab is on your classpath).:rewriteBatchedStatements true (plural). Also surface the batch statement tips in the Tips & Tricks page.plan.1.1.547 -- 2020-06-29
plan foldable (in the clojure.core.reducers sense).next.jdbc.sql.builder/for-query to support :top (SQL Server), :limit / :offset (MySQL/PostgreSQL), :offset / :fetch (SQL Standard) for find-by-keys.next.jdbc.transaction/*nested-tx* to provide control over how attempts to create nested transactions should be handled.:multi-rs option to execute! to retrieve multiple result sets, for example from stored procedure calls or T-SQL scripts.:all to be passed into find-by-keys instead of an example hash map or a where clause vector so all rows will be returned (expected to be used with :offset etc to support simple pagination of an entire table).:columns option to find-by-keys (and get-by-id) to specify a subset of columns to be returned in each row. This can also specify an alias for the column and allows for computed expressions to be selected with an alias.1.0.478 -- 2020-06-24
next.jdbc.types namespace, full of auto-generated as-xxx functions, one for each of the java.sql.Types values.1.0.476 -- 2020-06-22
next.jdbc.sql functions.1.0.475 -- 2020-06-22
"jtds" database driver (against MS SQL Server), making it officially supported.next.jdbc.prepare/statement being incorrectly type-hinted.next.jdbc/with-options that lets you wrap up a connectable along with default options that should be applied to all operations on that connectable.row-number, column-names, and metadata.db-do-commands in the clojure.java.jdbc migration guide.1.0.462 -- 2020-05-31
next.jdbc.datafy to provide more datafy/nav introspection (see the additional section in datafy, nav, and :schema for details).next.jdbc.result-set/metadata to provide (datafied) result set metadata within plan.1.0.445 -- 2020-05-23
plan for "metadata" access: row-number and column-names can be called on the abstract row (even after calling datafiable-row). In addition, Associative access via numeric "keys" will read columns by index, and row abstractions now support Indexed access via nth (which will also read columns by index). Fixes #110.next.jdbc.connection/component. See updated Getting Started guide for usage.execute-batch!.locking on Connection object.1.0.424 -- 2020-04-10
BLOB columns as byte[] instead of java.sql.Blob.:return-keys.jdbc:..getLoginTimeout/.setLoginTimeout on the reified DataSource returned by get-datasource when called on a hash map "db-spec" or JDBC URL string.1.0.409 -- 2020-03-16
NEXT_JDBC_TEST_MARIADB=true as well as NEXT_JDBC_TEST_MYSQL=true in order to run tests against MariaDB.1.0.405 -- 2020-03-14 (no code changes -- just documentation)
plan so reduce etc is more obvious.1.0.395 -- 2020-03-02
read-as-instant and read-as-local functions to next.jdbc.date-time to extend ReadableColumn so that SQL DATE and TIMESTAMP columns can be read as Java Time types.next.jdbc.date-time to enable automatic conversion of java.util.Date objects to SQL timestamps for prepared statements (#95).1.0.384 -- 2020-02-28
Unknown dbtype exception message (to clarify that :classname is also missing, #90).keyword call when table name unavailable (or :qualifier-fn returns nil or an empty string); also allows :qualifier-fn function to be called on empty table name (so :qualifier-fn (constantly "qual") will now work much like clojure.java.jdbc's :qualifier "qual" worked).next.jdbc.result-set functions.1.0.13 -- 2019-12-20
clojure.java.data-based support for setting arbitrary properties on Connection and PreparedStatement objects, post-creation. Note: this uses the Java reflection API under the hood.next.jdbc.prepare/statement to create Statement objects with all the options available to prepare except :return-keys.org.clojure/java.data to 0.1.5 (for property setting).1.0.12 -- 2019-12-11
next.jdbc.sql into next.jdbc.sql.builder.:connectionInitSql workaround for HikariCP/PostgreSQL and non-default schemas.1.0.11 -- 2019-12-07
java.sql.Date and java.sql.Timestamp.NEXT_JDBC_TEST_MSSQL=yes and MSSQL_SA_PASSWORD set to your local -- 127.0.0.1:1433 -- SQL Server sa user password; assumes that it can create and drop fruit and fruit_time tables in the model database).NEXT_JDBC_TEST_MYSQL=yes and MYSQL_ROOT_PASSWORD set to your local -- 127.0.0.1:3306 -- MySQL root user password; assumes you have already created an empty database called clojure_test).1.0.10 -- 2019-11-14
java.sql.Statement to plan, execute!, and execute-one!.next.jdbc.date-time that can be required if your database driver needs assistance converting java.util.Date (PostgreSQL!) or the Java Time types to SQL timestamp (or SQL date/time).clojure.java.jdbc. PR #71 (@laurio).next.jdbc.result-set/clob-column-reader and next.jdbc.result-set/clob->string helper to make it easier to deal with CLOB column data.execute! and execute-one! produce when the result set is empty ([] and nil respectively, and there are now tests for this). Similarly for find-by-keys and get-by-id.:result-type (scroll) and :concurrency options will cause table names to be returned.plan, execute!, and execute-one! instead, with a DSL library if you want!).clojure.java.jdbc and next.jdbc; add caveats about column name conflicts (in several places).datafy/nav documentation around :schema.org.clojure/java.data to "0.1.4" (0.1.2 fixes a number of reflection warnings).1.0.9 -- 2019-10-11
execute-one! vs execute! vs plan.:next.jdbc/update-count.:jdbcUrl version spec.next.jdbc.optional/as-maps-adapter to provide a way to override the default result set reading behavior of using .getObject when omitting SQL NULL values from result set maps.1.0.8 -- 2019-09-27
:jdbcUrl key (consistent with ->pool) so that you can create a datasource from a JDBC URL string and additional options.next.jdbc.specs/unstrument. PR #64 (@gerred).:qualifier (clojure.java.jdbc) migration, with a specific caveat about Oracle not fully supporting .getTableName().1.0.7 -- 2019-09-09
:table/column is equivalent to the old [:table :column :one] and [:table/column] is equivalent to the old [:table :column :many]. The older formats will continue to be supported but should be considered deprecated. PR #62 (@seancorfield).ANY(?) and arrays in PostgreSQL for IN (?,,,?) style queries. Added a Tips & Tricks section to Friendly SQL Functions with database-specific suggestions, that starts with this one.1.0.6 -- 2019-08-24
insert-multi! and execute-batch! (addresses #57).ReadableColumn and SettableParameter protocols).clojure.string/lower-case into one of the "modified" result set builders.next.jdbc.result-set/as-maps-adapter and next.jdbc.result-set/as-arrays-adapter to provide a way to override the default result set reading behavior of using .getObject.org.clojure/test.check to "0.10.0".1.0.5 -- 2019-08-05
IPersistentMap fully for the "mapified" result set inside plan. This adds support for dissoc and cons (which will both realize a row), count (which returns the column count but does not realize a row), empty (returns an empty hash map without realizing a row), etc.1.0.4 -- 2019-07-24
1.0.3 -- 2019-07-23
next.jdbc.connection/->pool and documenting how to use HikariCP and c3p0 in the Getting Started docs (as well as adding tests for both libraries).ReadableColumn and SettableParameter.1.0.2 -- 2019-07-15
:host to be :none which tells next.jdbc to omit the host/port section of the JDBC URL, so that local databases can be used with :dbtype/:classname for database types that next.jdbc does not know. Also added :dbname-separator and :host-prefix to the "db-spec" to allow fine-grained control over how the JDBC URL is assembled.insert-multi! with an empty rows vector returns [].insert-multi! to "require less" of the cols and rows arguments.execute-batch! and set-parameters in next.jdbc.prepare.next.jdbc/execute-batch! (previously next.jdbc.prepare/execute-batch!).asserts in next.jdbc.sql as more informative errors for cases that would generate SQL exceptions (from malformed SQL).:order-by to reflect what is actually permitted.next.jdbc.connect/dbtypes as a table of known database types and aliases, along with their class name(s), port, and other JDBC string components.1.0.1 -- 2019-07-03
with-transaction to "require less" of the :binding vector.with-transaction macro.insert-multi! performs a single, batched operation.key-map in find-by-keys, update!, and delete! to reflect that you cannot pass an empty map to these functions (and added tests to ensure the calls fail with spec errors).1.0.0 "gold" -- 2019-06-12
reify'd objects produce a more informative string representation if they are printed (e.g., misusing plan by not reducing it or not mapping an operation over the rows).next.jdbc.result-set/datafiable-result-set so that various java.sql.DatabaseMetaData methods that return result metadata information in ResultSets can be easily turned into a fully realized result set.1.0.0-rc1 -- 2019-06-04
next.jdbc functions.next.jdbc.optional with six map builders that omit NULL columns from the row hash maps.transact function and the with-transaction macro (for consistency with the name of the underlying protocol).modified variants of column name functions and builders. The lower variants have been rewritten in terms of these new modified variants. This adds :label-fn and :qualifier-fn options that mirror :column-fn and :table-fn for row builders.1.0.0-beta1 -- 2019-05-24
next.jdbc.specs and documenting basic usage.reducible! to plan (BREAKING CHANGE!).:next.jdbc/sql-string to :next.jdbc/sql-params (BREAKING CHANGE!) and pass whole vector.:gen-fn to :builder-fn (BREAKING CHANGE!); Fix #13 by adding documentation for datafy/nav/:schema; Fix #15 by automatically adding :next.jdbc/sql-string (as of 1.0.0-alpha12: :next.jdbc/sql-params) into the options hash map, so custom builders can depend on the SQL string.:gen-fn (as of 1.0.0-alpha11: :builder-fn) in execute-one! for PreparedStatement.Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |