15 KiB
15 KiB
Change Log
Only accretive/fixative changes will be made from now on.
Changes made since release 1.0.445:
- Addition of
next.jdbc.datafyto provide moredatafy/navintrospection (see the additional section in datafy, nav, and :schema for details). - Addition of
next.jdbc.result-set/metadatato provide (datafied) result set metadata withinplan.
Stable Builds
-
2020-05-23 -- 1.0.445
- Enhanced support in
planfor "metadata" access:row-numberandcolumn-namescan be called on the abstract row (even after callingdatafiable-row). In addition,Associativeaccess via numeric "keys" will read columns by index, and row abstractions now supportIndexedaccess vianth(which will also read columns by index). Fixes #110. - Support for Stuart Sierra's Component library, via
next.jdbc.connection/component. See updated Getting Started guide for usage. - Add example of getting generated keys from
execute-batch!. - Add MySQL-specific result set streaming tip.
- Add array handling example to PostgreSQL Tips & Tricks. PR #108 from @maxp.
- Investigate possible solutions for #106 (mutable transaction thread safety) -- experimental
lockingonConnectionobject.
- Enhanced support in
-
2020-04-10 -- 1.0.424
- In Tips & Tricks, noted that MySQL returns
BLOBcolumns asbyte[]instead ofjava.sql.Blob. - Address #103, #104 by adding a section on timeouts to Tips & Tricks.
- Fix #102 by allowing keywords or strings in
:return-keys. - Fix #101 by tightening the spec on a JDBC URL to correctly reflect that it must start with
jdbc:. - Add support for calling
.getLoginTimeout/.setLoginTimeouton the reifiedDataSourcereturned byget-datasourcewhen called on a hash map "db-spec" or JDBC URL string. - Documentation improvements based on feedback (mostly from Slack), including a section on database metadata near the end of Getting Started.
- In Tips & Tricks, noted that MySQL returns
-
2020-03-16 -- 1.0.409
- Address #100 by adding support for MariaDB (@green-coder). Set
NEXT_JDBC_TEST_MARIADB=trueas well asNEXT_JDBC_TEST_MYSQL=truein order to run tests against MariaDB.
- Address #100 by adding support for MariaDB (@green-coder). Set
-
2020-03-14 -- 1.0.405 (no code changes -- just documentation)
- Improve documentation around
plansoreduceetc is more obvious. - Attempt to drive readers to cljdoc.org instead of the GitHub version (which is harder to navigate).
- Improve documentation around
-
2020-03-02 -- 1.0.395
- Add
read-as-instantandread-as-localfunctions tonext.jdbc.date-timeto extendReadableColumnso that SQLDATEandTIMESTAMPcolumns can be read as Java Time types. - Specifically call out PostgreSQL as needing
next.jdbc.date-timeto enable automatic conversion ofjava.util.Dateobjects to SQL timestamps for prepared statements (#95). - Split Tips & Tricks into its own page, with a whole new section on using JSON data types with PostgreSQL (#94 -- thank you @vharmain).
- Bump dependencies to latest.
- Add
-
2020-02-28 -- 1.0.384
- Add PostgreSQL streaming option information to Tips & Tricks (#87).
- Minor documentation fixes (including #85, #92, #93).
- Improve
Unknown dbtypeexception message (to clarify that:classnameis also missing, #90). - Fix #88 by using 1-arity
keywordcall when table name unavailable (or:qualifier-fnreturnsnilor an empty string); also allows:qualifier-fnfunction to be called on empty table name (so:qualifier-fn (constantly "qual")will now work much likeclojure.java.jdbc's:qualifier "qual"worked). - Address #89, #91 by making minor performance tweaks to
next.jdbc.result-setfunctions. - Planning to move to MAJOR.MINOR.COMMITS versioning scheme (1.0.384).
-
2019-12-20 -- 1.0.13
- Fix #82 by adding
clojure.java.data-based support for setting arbitrary properties onConnectionandPreparedStatementobjects, post-creation. Note: this uses the Java reflection API under the hood. - Adds
next.jdbc.prepare/statementto createStatementobjects with all the options available toprepareexcept:return-keys. - Update
org.clojure/java.datato 0.1.5 (for property setting). - Additional clarifications in the documentation based on feedback on Slack.
- Fix #82 by adding
-
2019-12-11 -- 1.0.12
- Address #81 by splitting the SQL-building functions out of
next.jdbc.sqlintonext.jdbc.sql.builder. - Fix #80 by avoiding the auto-commit restore after a failed rollback in a failed transaction.
- Address #78 by documenting the
:connectionInitSqlworkaround for HikariCP/PostgreSQL and non-default schemas.
- Address #81 by splitting the SQL-building functions out of
-
2019-12-07 -- 1.0.11
- Fix #76 by avoiding conversions on
java.sql.Dateandjava.sql.Timestamp. - Add testing against Microsoft SQL Server (run tests with environment variables
NEXT_JDBC_TEST_MSSQL=yesandMSSQL_SA_PASSWORDset to your local --127.0.0.1:1433-- SQL Serversauser password; assumes that it can create and dropfruitandfruit_timetables in themodeldatabase). - Add testing against MySQL (run tests with environment variables
NEXT_JDBC_TEST_MYSQL=yesandMYSQL_ROOT_PASSWORDset to your local --127.0.0.1:3306-- MySQLrootuser password; assumes you have already created an empty database calledclojure_test). - Bump several JDBC driver versions for up-to-date testing.
- Minor documentation fixes.
- Fix #76 by avoiding conversions on
-
2019-11-14 -- 1.0.10
- Fix #75 by adding support for
java.sql.Statementtoplan,execute!, andexecute-one!. - Address #74 by making several small changes to satisfy Eastwood.
- Fix #73 by providing a new, optional namespace
next.jdbc.date-timethat can be required if your database driver needs assistance convertingjava.util.Date(PostgreSQL!) or the Java Time types to SQLtimestamp(or SQLdate/time). - Fix link to All The Options in Migration from
clojure.java.jdbc. PR #71 (@laurio). - Address #70 by adding CLOB & BLOB SQL Types to the Tips & Tricks section of Friendly SQL Functions and by adding
next.jdbc.result-set/clob-column-readerandnext.jdbc.result-set/clob->stringhelper to make it easier to deal withCLOBcolumn data. - Clarify what
execute!andexecute-one!produce when the result set is empty ([]andnilrespectively, and there are now tests for this). Similarly forfind-by-keysandget-by-id. - Add MS SQL Server section to Tips & Tricks to note that it returns an empty string for table names by default (so table-qualified column names are not available). Using the
:result-type(scroll) and:concurrencyoptions will cause table names to be returned. - Clarify that Friendly SQL Functions are deliberately simple (hint: they will not be enhanced or expanded -- use
plan,execute!, andexecute-one!instead, with a DSL library if you want!). - Improve migration docs: explicitly recommend the use of a datasource for code that needs to work with both
clojure.java.jdbcandnext.jdbc; add caveats about column name conflicts (in several places). - Improve
datafy/navdocumentation around:schema. - Update
org.clojure/java.datato"0.1.4"(0.1.2 fixes a number of reflection warnings).
- Fix #75 by adding support for
-
2019-10-11 -- 1.0.9
- Address #69 by trying to clarify when to use
execute-one!vsexecute!vsplan. - Address #68 by clarifying that builder functions do not affect the "fake result set" containing
:next.jdbc/update-count. - Fix #67 by adding
:jdbcUrlversion spec. - Add
next.jdbc.optional/as-maps-adapterto provide a way to override the default result set reading behavior of using.getObjectwhen omitting SQLNULLvalues from result set maps.
- Address #69 by trying to clarify when to use
-
2019-09-27 -- 1.0.8
- Fix #66 by adding support for a db-spec hash map format containing a
:jdbcUrlkey (consistent with->pool) so that you can create a datasource from a JDBC URL string and additional options. - Address #65 by adding a HugSQL "quick start" to the Friendly SQL Functions section of the docs.
- Add
next.jdbc.specs/unstrument. PR #64 (@gerred). - Address #63 by improving documentation around qualified column names and
:qualifier(clojure.java.jdbc) migration, with a specific caveat about Oracle not fully supporting.getTableName().
- Fix #66 by adding support for a db-spec hash map format containing a
-
2019-09-09 -- 1.0.7
- Address #60 by supporting simpler schema entry formats:
:table/columnis 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). - Added test for using
ANY(?)and arrays in PostgreSQL forIN (?,,,?)style queries. Added a Tips & Tricks section to Friendly SQL Functions with database-specific suggestions, that starts with this one. - Improved documentation in several areas.
- Address #60 by supporting simpler schema entry formats:
-
2019-08-24 -- 1.0.6
- Improved documentation around
insert-multi!andexecute-batch!(addresses #57). - Fix #54 by improving documentation around data type conversions (and the
ReadableColumnandSettableParameterprotocols). - Fix #52 by using a US-locale function in the "lower" result set builders to avoid unexpected character changes in column names in locales such as Turkish. If you want the locale-sensitive behavior, pass
clojure.string/lower-caseinto one of the "modified" result set builders. - Add
next.jdbc.result-set/as-maps-adapterandnext.jdbc.result-set/as-arrays-adapterto provide a way to override the default result set reading behavior of using.getObject. - Update
org.clojure/test.checkto"0.10.0".
- Improved documentation around
-
2019-08-05 -- 1.0.5
- Fix #51 by implementing
IPersistentMapfully for the "mapified" result set insideplan. This adds support fordissocandcons(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. - Improved documentation around connection pooling (HikariCP caveats).
- Fix #51 by implementing
-
2019-07-24 -- 1.0.4
- Fix #50 by adding machinery to test against (embedded) PostgreSQL!
- Improved documentation for connection pooled datasources (including adding a Component example); clarified the recommendations for globally overriding default options (write a wrapper namespace that suits your usage).
- Note: this release is primarily to fix the cljdoc.org documentation via repackaging the JAR file.
-
2019-07-23 -- 1.0.3
- Fix #48 by adding
next.jdbc.connection/->pooland documenting how to use HikariCP and c3p0 in the Getting Started docs (as well as adding tests for both libraries). - Documentation improvements, including examples of extending
ReadableColumnandSettableParameter. - Updated test dependencies (testing against more recent versions of several drivers).
- Fix #48 by adding
-
2019-07-15 -- 1.0.2
- Fix #47 by refactoring database specs to be a single hash map instead of pouring multiple maps into one.
- Fix #46 by allowing
:hostto be:nonewhich tellsnext.jdbcto omit the host/port section of the JDBC URL, so that local databases can be used with:dbtype/:classnamefor database types thatnext.jdbcdoes not know. Also added:dbname-separatorand:host-prefixto the "db-spec" to allow fine-grained control over how the JDBC URL is assembled. - Fix #45 by adding TimesTen driver support.
- Fix #44 so that
insert-multi!with an emptyrowsvector returns[]. - Fix #43 by adjusting the spec for
insert-multi!to "require less" of thecolsandrowsarguments. - Fix #42 by adding specs for
execute-batch!andset-parametersinnext.jdbc.prepare. - Fix #41 by improving docstrings and documentation, especially around prepared statement handling.
- Fix #40 by adding
next.jdbc.prepare/execute-batch!. - Added
asserts innext.jdbc.sqlas more informative errors for cases that would generate SQL exceptions (from malformed SQL). - Added spec for
:order-byto reflect what is actually permitted. - Expose
next.jdbc.connect/dbtypesas a table of known database types and aliases, along with their class name(s), port, and other JDBC string components.
-
2019-07-03 -- 1.0.1
- Fix #37 by adjusting the spec for
with-transactionto "require less" of the:bindingvector. - Fix #36 by adding type hint in
with-transactionmacro. - Fix #35 by explaining the database-specific options needed to ensure
insert-multi!performs a single, batched operation. - Fix #34 by explaining save points (in the Transactions documentation).
- Fix #33 by updating the spec for the example
key-mapinfind-by-keys,update!, anddelete!to reflect that you cannot pass an empty map to these functions (and added tests to ensure the calls fail with spec errors).
- Fix #37 by adjusting the spec for
-
2019-06-12 -- 1.0.0 "gold"
- Address #31 by making
reify'd objects produce a more informative string representation if they are printed (e.g., misusingplanby not reducing it or not mapping an operation over the rows). - Fix #26 by exposing
next.jdbc.result-set/datafiable-result-setso that variousjava.sql.DatabaseMetaDatamethods that return result metadata information inResultSets can be easily turned into a fully realized result set.
- Address #31 by making
-
2019-06-04 -- 1.0.0-rc1:
- Fix #24 by adding return type hints to
next.jdbcfunctions. - Fix #22 by adding
next.jdbc.optionalwith six map builders that omitNULLcolumns from the row hash maps. - Documentation improvements (#27, #28, and #29), including changing "connectable" to "transactable" for the
transactfunction and thewith-transactionmacro (for consistency with the name of the underlying protocol). - Fix #30 by adding
modifiedvariants of column name functions and builders. Thelowervariants have been rewritten in terms of these newmodifiedvariants. This adds:label-fnand:qualifier-fnoptions that mirror:column-fnand:table-fnfor row builders.
- Fix #24 by adding return type hints to
-
2019-05-24 -- 1.0.0-beta1:
- Set up CircleCI testing (just local DBs for now).
- Address #21 by adding
next.jdbc.specsand documenting basic usage. - Fix #19 by caching loaded database driver classes.
- Address #16 by renaming
reducible!toplan(BREAKING CHANGE!). - Address #3 by deciding to maintain this library outside Clojure Contrib.
Alpha Builds
- 2019-05-04 -- 1.0.0-alpha13 -- Fix #18 by removing more keys from properties when creating connections.
- 2019-04-26 -- 1.0.0-alpha12 -- Fix #17 by renaming
:next.jdbc/sql-stringto:next.jdbc/sql-params(BREAKING CHANGE!) and pass whole vector. - 2019-04-24 -- 1.0.0-alpha11 -- Rename
:gen-fnto:builder-fn(BREAKING CHANGE!); Fix #13 by adding documentation fordatafy/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. - 2019-04-22 -- 1.0.0-alpha9 -- Fix #14 by respecting
:gen-fn(as of 1.0.0-alpha11::builder-fn) inexecute-oneforPreparedStatement. - 2019-04-21 -- 1.0.0-alpha8 -- Initial publicly announced release.