Commit graph

280 commits

Author SHA1 Message Date
Sean Corfield
0a27e51f37 First steps to multiple result sets #116 2020-06-06 17:00:52 -07:00
Sean Corfield
7c0cee09bf Issue #117 sketch of dynamic nested transaction behavior 2020-06-06 16:57:25 -07:00
Sean Corfield
cc3988e773 Document all the new datafy/nav stuff 2020-05-31 21:32:03 -07:00
Sean Corfield
53c3b5f48e Bump java.data to 1.0.78 and surface configurable exception handling 2020-05-31 17:12:38 -07:00
Sean Corfield
ace912c867 Depends on local clojure.java.data 2020-05-31 14:13:55 -07:00
Sean Corfield
ab588070e6 Datafy parameter metadata 2020-05-31 12:23:31 -07:00
Sean Corfield
4be2b7130b Extend datafication and simplify
Handles weird SQLite edge case; datafies Statement and ResultSet; 
improves exception handling in `safe-bean` (but we really need a better 
bean maker).
2020-05-31 03:02:25 -07:00
Sean Corfield
332cf4a3ed Fix protocols vs namespace for datafy 2020-05-31 00:19:48 -07:00
Sean Corfield
6a6e42e9af Expand datafy/nav and metadata support (work in progress) 2020-05-30 23:44:18 -07:00
Sean Corfield
91b1b25475 Fixes #110 by documenting the solution
In addition to adding `row-number` and `column-names`, this also adds 
support for associative access by numeric key and indexed access.
2020-05-23 00:01:39 -07:00
Sean Corfield
b0b9e53352 Addresses #110 by adding tests around this scenario 2020-05-22 20:16:40 -07:00
Sean Corfield
860298943c Addresses #110 by adding row-number, column-names
This is a quick sketch that doesn't break the existing tests. 
Documentation and tests coming soon!
2020-05-22 17:11:36 -07:00
Sean Corfield
8e4dbd7bd9 Some clj-kondo cleanup 2020-05-21 18:39:23 -07:00
Sean Corfield
66fdba4be9 Provide built-in support for Stuart Sierra's Component library
Needs documenting!
2020-04-28 17:34:25 -07:00
Sean Corfield
905f7c3e12 Addresses #106 by adding experimental locking in this case 2020-04-27 17:52:11 -07:00
Sean Corfield
2fd27d18bd Improve documentation around next.jdbc.date-time
Expands the documentation around each place it is referenced. Expands 
the namespace docstring. Adds a mention of it to the result-set 
namespace docstring.
2020-04-07 14:29:37 -07:00
Sean Corfield
315d629202 Fixes #102 by supporting keywords in :return-keys 2020-03-27 16:06:38 -07:00
Sean Corfield
f0c4159bff Support loginTimeout on reified DataSource 2020-03-20 13:51:50 -07:00
Sean Corfield
9947cf9226 Fixes #101 by tightening ::jdbcUrl spec 2020-03-17 10:28:40 -07:00
Sean Corfield
780c759541 Complete support for MariaDB #100
Adds tests and test dependencies, based on a new environment variable. 
Updates change log. Documents difference in generated key return between 
MySQL and MariaDB.
2020-03-16 15:19:21 -07:00
Vincent Cantin
6f35f84a0e Add default data-source settings for MariaDB. 2020-03-17 00:22:13 +08:00
Sean Corfield
a1ef07d1ad Update README to drive people to cljdoc.org for documentation 2020-03-04 15:06:43 -08:00
Sean Corfield
9755992025 Add read-as-* functions to date/time support 2020-03-02 13:44:00 -08:00
Sean Corfield
051bc9bd9c Fixes #95 by adding notes about/links to next.jdbc.date-time 2020-03-01 10:11:18 -08:00
Sean Corfield
eb722b502e Fixes #93 by improving documentation about datafiable-row 2020-02-28 10:54:28 -08:00
Sean Corfield
126ac58c34 Fixes #88 by calling 1-arity keyword
Also supports calling `:qualifier-fn` on an empty table name.
2020-02-26 11:48:42 -08:00
Sean Corfield
ee4fb72cef Addresses #91 by removing superfluous asserts in optional rs 2020-02-26 09:30:05 -08:00
Sean Corfield
cba3ac4cec Addresses #89, #90, #91 2020-02-26 08:55:32 -08:00
Sean Corfield
7603e257e9 Link get-datasource docstring to dbtypes in next.jdbc.connection 2020-02-10 15:11:13 -08:00
Sean Corfield
425d1c367c Extend copyright to 2020 2020-01-01 13:13:41 -08:00
Sean Corfield
a2ba8ff780 Fixes #82 and adds next.jdbc.prepare/statement 2019-12-20 15:45:22 -08:00
Sean Corfield
205abe2faa Fixes #81 by splitting next.jdbc.sql 2019-12-11 16:42:28 -08:00
Sean Corfield
b6014e824a Fixes #80 by carefully avoiding the implicit commit when rollback fails 2019-12-11 16:03:41 -08:00
Sean Corfield
32e9f338d5 Addresses #76 by not converting SQL Date/Timestamp types 2019-11-26 11:14:41 -08:00
Sean Corfield
8fbd0837ab Add ^:no-doc to next.jdbc.transaction
In preparation for possible changes to cljdoc (so that it respects that 
metadata).
2019-11-15 13:21:00 -08:00
Sean Corfield
7ad1b720e9 Fix typo in docstring
Thanks to @holyjak for spotting this!
2019-11-15 10:54:04 -08:00
Sean Corfield
7b6aa69e31 Fixes #73 by adding optional namespace to extend SettableParameter 2019-11-14 17:10:49 -08:00
Sean Corfield
d561a7108e Fixes #75 by adding java.sql.Statement support 2019-11-14 16:15:52 -08:00
Sean Corfield
e404c47d83 Fixes #74 by mollifying Eastwood 2019-11-13 10:40:59 -08:00
Sean Corfield
4b01f31578 Move middleware experiment to tests
Until I figure out what to do about this, I don't want it accidentally 
included in a release!
2019-11-13 09:38:30 -08:00
Sean Corfield
e9b7ee80ab Document current state of experiment
and my unhappiness with it!
2019-11-10 17:53:23 -08:00
Sean Corfield
a57011a998 Recast the adapter/processors as a middleware
Still not happy with this but it seems more "holistic".
2019-11-09 22:59:34 -08:00
Sean Corfield
b2b7696973 Sketch of side-effecting builder-adapter 2019-11-08 12:47:54 -08:00
Sean Corfield
b5048cca85 Improve migration docs
`next.jdbc.connection` namespace docstring now mentions `dbtypes` and 
`->pool`. **Primary API** in the migration doc now explicitly recommends 
using a datasource for piecemeal migration.
2019-11-08 10:20:28 -08:00
Sean Corfield
ea0f1868b3 More documentation for #70
Adds CLOB & BLOB SQL Types to Tips & Tricks section with example of 
`ReadableColumn` extension and reference to helper/column reader in 
`next.jdbc.result-set`.
2019-10-17 18:02:37 -07:00
Sean Corfield
61083eba69 Address #70 by adding/documenting CLOB column reader example 2019-10-14 11:13:36 -07:00
Sean Corfield
8c75e3a546 Addresses #69 by expanding docs for execute-one!
Updates include adding notes on `execute!`, `execute-one!`, and `plan` 
in the README, as well as expanding the docstrings for those functions.
2019-10-11 11:26:41 -07:00
Sean Corfield
04237c89ea Add optional maps adapter 2019-10-04 13:52:23 -07:00
Sean Corfield
58bdb53f34 Fixes #67 by updating specs for :jdbcUrl 2019-09-27 22:22:23 -07:00
Sean Corfield
6c42d7ce67 Fixes #66 by adding support for :jdbcUrl in db-spec hash map 2019-09-27 13:06:45 -07:00
Sean Corfield
e03de7828a Document PR #64
Add to change log, Getting Started, and ns docstring for 
`next.jdbc.specs`. Also note docs in GitHub are for **master** now.
2019-09-14 13:32:34 -07:00
Gerred Dillon
740e1abaaf Add unstrument function to specs
Signed-off-by: Gerred Dillon <hello@gerred.org>
2019-09-14 15:51:46 -04:00
Sean Corfield
7a110f15ce Address #60 by adding two new schema formats
Still considering what #61 might need.
2019-09-08 17:05:07 -07:00
Sean Corfield
cae84736a3 Typo in docstring 2019-09-06 01:52:18 -07:00
Sean Corfield
1b93d3a04b Improve result set adapter docstrings 2019-08-24 11:25:19 -07:00
Sean Corfield
f95467a34c Improve docs for insert-multi! / execute-batch!
Call out the caveats more clearly. Note that Oracle doesn't support the 
`insert-multi!` syntax(!).
2019-08-22 13:09:07 -07:00
Sean Corfield
9a76e4c25a Add as-arrays-adapter 2019-08-21 14:47:55 -07:00
Sean Corfield
fed305dd2b Add and document as-maps-adapter 2019-08-21 14:19:32 -07:00
Sean Corfield
87e44ae6a6 Fixes #52 by using US-locale lower-case function 2019-08-08 17:01:23 -07:00
Sean Corfield
e0b0c214fd Improve printability as part of #51
Since `str` may be able to realize a row and render it as a string, attempts to print a row use this route to circumvent `print-sequential` failing due to lazy evaluation.
2019-08-02 12:42:00 -07:00
Sean Corfield
0fd8bf1a88 Fixes #51 by implementing IPersistentMap in full
* `dissoc`, `cons`, `=` -- both realize a full row.
* `count`, `empty` -- do not realize rows, `empty` doesn't use the builder at all.
* `str` -- attempts to realize a row (else returns the same "helpful" string as before).
2019-08-02 12:24:04 -07:00
Sean Corfield
5424353f2d Clarify position on default options
I.e., write your own wrapper if you want to globally override options.
2019-07-24 22:49:24 -07:00
Sean Corfield
b3f462e90b Fixes #48 by documenting connection/->pool 2019-07-18 12:12:09 -07:00
Sean Corfield
b1b2f13ebb Rename jdbc-url to ->pool 2019-07-18 11:01:55 -07:00
Sean Corfield
60c1e6660f Support connection pooling more easily 2019-07-17 23:50:56 -07:00
Sean Corfield
5d898ef27a Formatting tweak in ns docstring 2019-07-15 14:09:48 -07:00
Sean Corfield
3ffeb5dda9 Improve docstring 2019-07-15 14:01:42 -07:00
Sean Corfield
8e4ef3033c Note :none as possible value for :host 2019-07-15 13:51:23 -07:00
Sean Corfield
8883167805 Finish off #47
Make `dbtypes` public again (oops!). Note that it _won't_ contain defaults (if folks feel they need them, they can easily be added). Use `:host :none` in `dbtypes` to indicate a local database (no `:host`/`:port` segment) which is more consistent with how users would specify a new database.

Reduce the number of special cases in the JDBC URL assembly, now that `:host :none` from `dbtypes` can drive that.
2019-07-15 11:15:26 -07:00
Sean Corfield
816fc7ce4b Fix #47 by refactoring how db-specs are built 2019-07-14 21:46:59 -07:00
Sean Corfield
44dba4f29c Fixes #46 by allowing :host :none
Also adds `:dbname-separator` and `:host-prefix` for fine-grained 
control over the JDBC URL format.
2019-07-11 15:43:49 -07:00
Sean Corfield
4457161305 Assert/spec/tests for empty cols in insert-multi! 2019-07-11 12:52:36 -07:00
Sean Corfield
4d7a5a440b Fix #43 by relaxing the spec for insert-multi!
Adds tests for `insert-multi!` that pass sequences instead of vectors.
2019-07-11 12:34:02 -07:00
Sean Corfield
821f9b1a5a Fixes #44
Also adds `assert`s in SQL-generating functions, instead of just 
producing illegal SQL.
2019-07-11 12:11:32 -07:00
Sean Corfield
2131136c0d Another tweak to TimesTen direct 2019-07-10 20:00:40 -07:00
Sean Corfield
2c524614ce TimesTen client needs special dbname separator too 2019-07-10 19:47:19 -07:00
Sean Corfield
bb753f363b Fixes #45 by adding TimesTen driver suport 2019-07-10 19:32:24 -07:00
Sean Corfield
3c32bfe13d Fixes #42 by adding specs for next.jdbc.prepare API functions 2019-07-10 12:11:26 -07:00
Sean Corfield
79d6f5ef29 Improve documentation around :dbtype
Expose `next.jdbc.connection/dbtypes` which is a table of all known 
`:dbtype` values and their driver class names, ports, etc.
2019-07-10 11:54:13 -07:00
Sean Corfield
29d46439e6 Fixes #40 by adding next.jdbc.prepare/execute-batch! 2019-07-09 16:00:10 -07:00
Sean Corfield
7184ef996c Fixes #41; Addresses #40; Expand prepared statement documentation
* Combine adjacent `with-open` calls.
* Show how `set-parameters` is used.
* Add a section on batched parameters, with their caveats, and how to 
use them.
2019-07-08 20:48:56 -07:00
Sean Corfield
58aeff56f7 Updated insert-multi! docstring
Removed caveat about batching (doesn't apply) but added caveat about 
size/parameter limits.
2019-07-08 17:21:28 -07:00
Sean Corfield
dcb632d7cf Make it clear that next.jdbc.prepare/create should not be called 2019-07-08 12:40:19 -07:00
Sean Corfield
ba4dc837e1 Fixes #33 by improving specs 2019-07-02 18:50:25 -07:00
Sean Corfield
1cec0a2643 Fixes #37; Fixes #36
* Fix `with-transaction` spec and how it invokes `transact` when no 
options map is provided.
* Adds type hint to `with-transaction`.
* Document manual rollback of transactions.
2019-07-02 16:45:48 -07:00
Sean Corfield
85eba1bb2f Fixes #35 by documenting the DB-specific insert multi options 2019-06-28 19:18:26 -07:00
Sean Corfield
e1b42b1804 Address #31 by improving string representation of reified objects
At least this should give a hint as to what you did wrong...
2019-06-11 16:47:58 -07:00
Sean Corfield
22a3f2bb5f Fix #26 by adding datafiable-result-set
This makes handling metadata result sets much easier.
2019-06-08 15:09:42 -07:00
Sean Corfield
b4331146ff Stop Joker flagging some ns as unused
These are pulled into `next.jdbc` to extend/implement protocols only.
2019-06-07 17:39:58 -07:00
Sean Corfield
b64fbf35ff Fix #30 by adding modified builders
Adds `:label-fn` and `:qualifier-fn` options, and `as-modified-*` 
builder variants.
2019-06-04 18:01:19 -07:00
jet
df1c38c03f Correct documentation for transact and with-transaction
Previously both functions were documented as taking a `Connectable`
object. This amends the documentation as well as the fn signature to
take a `Transactable` object.
2019-06-02 12:07:01 -04:00
Sean Corfield
382d1bef10 Fix #24 by adding type hints 2019-05-29 13:51:11 -07:00
Sean Corfield
fdfb0697ec Address #24 by setting warn on reflection in tests
This highlights the reflection on `.close` (in the connection tests).
2019-05-29 09:04:21 -07:00
Sean Corfield
6a9df0f4aa Fix #22 by adding next.jdbc.optional
Includes four `as*maps` builders that omit `NULL` columns completely 
from the returned row hash maps.
2019-05-25 19:16:30 -07:00
Sean Corfield
b831525948 Remove leftover REPL debugging code 2019-05-23 10:05:27 -07:00
Sean Corfield
a32c5b9e66 Address #16 by renaming reducible! to plan for Beta 1 2019-05-22 16:22:14 -07:00
Sean Corfield
656a0d8d9a Add namespace docstring for new specs 2019-05-21 21:55:10 -07:00
Sean Corfield
adf5a03e05 Address #21 by adding next.jdbc.specs
Docs still need to be updated for this!
2019-05-21 21:45:05 -07:00
Sean Corfield
99ee285689 Fix #19 by caching loaded database driver classes 2019-05-08 15:11:37 -07:00
Sean Corfield
ff94962e27 Fixes #18 by cleaning up connection properties better. 2019-05-04 23:59:48 -07:00
Sean Corfield
eb981d5726 Another pass over documentation and docstrings 2019-04-26 22:42:27 -07:00
Sean Corfield
ee2fcc47ab Fixes #17 by changing sql-string to sql-params 2019-04-26 10:34:26 -07:00
Sean Corfield
cf75268087 Rename :gen-fn to :builder-fn 2019-04-24 14:22:35 -07:00
Sean Corfield
13ad917864 Fix #15 by passing SQL string to builders
Adds internal `:next.jdbc/sql-string` option.
2019-04-24 10:07:52 -07:00
Sean Corfield
2c018654d3 Alpha 9; fixes #14; improves protocol docstrings
* Move documentation from `ns` into `defprotocol` and the method 
declarations.
* Indicate which protocols may be extended via metadata 
(`SettableParameter` and `Sourceable`).
2019-04-22 17:41:31 -07:00
Sean Corfield
2badd9f835 Big docstring cleanup 2019-04-21 16:13:52 -07:00
Sean Corfield
03b09f6e03 Alpha 5; fixes #12 by adding :order-by option to for-query 2019-04-21 13:42:33 -07:00
Sean Corfield
c2c798770a Alpha 4; fixes #11 by adding schema meta-quoting function 2019-04-21 13:00:03 -07:00
Sean Corfield
6f637b4e36 Start documenting differences/migration more seriously 2019-04-21 00:48:16 -07:00
Sean Corfield
d688e639d0 Document prepared statement handling 2019-04-20 22:28:21 -07:00
Sean Corfield
2ab35132a7 Document Result Set Builders
And sketch out the remaining documentation outline.
2019-04-20 22:00:40 -07:00
Sean Corfield
6e1dba1bce Fix user (name) property 2019-04-20 16:03:01 -07:00
Sean Corfield
f691d59be7 Update set-parameters docstring
Uses set-parameter and SettableParameter now, not `.setObject`
2019-04-19 22:51:05 -07:00
Sean Corfield
3588d526fa execute-all should return a vector even for update counts 2019-04-19 22:50:10 -07:00
Sean Corfield
12e396683c Add tests for map-like reducible! result set
Ensures basic associative/lookup access do not cause row building; 
ensures assoc/seq produce real maps; ensure datafiable-row produces a 
real map with metadata.
2019-04-19 21:53:55 -07:00
Sean Corfield
bfda745a70 Add row builder tests; fix row builder bug in execute-one 2019-04-18 23:03:09 -07:00
Sean Corfield
d4f79a68fd Add datafication tests; fix regex bug! 2019-04-18 22:43:19 -07:00
Sean Corfield
3b0b059f62 Add connection tests
Improve handling of relative files with H2 database connections.
2019-04-18 21:35:38 -07:00
Sean Corfield
d59b1ec2fb Basic SQL tests and bug fix!
Multi-row insert did not apply `:column-fn` correctly.
2019-04-18 18:31:15 -07:00
Sean Corfield
2cd9e9372d Fix docstring typos 2019-04-18 14:09:07 -07:00
Sean Corfield
e85cbf7c95 Make datafy/nav implementation more robust
Also some documentation cleanup
2019-04-18 14:06:14 -07:00
Sean Corfield
8c508b8416 Documentation cleanup 2019-04-18 13:19:59 -07:00
Sean Corfield
7f2d3479e9 Split :entities into two options
`:table-fn` and `:column-fn`
2019-04-18 08:12:56 -07:00
Sean Corfield
e5ea6af959 Rewrite builders as records
This seems to be very slightly faster than using `reify`. Also rename 
the map builder to `as-maps` and add unqualified variants of builders.
2019-04-18 08:12:12 -07:00
Sean Corfield
86db20b94b Improve default behavior of reducible! when forced to create a row
Defaults to `map-row-builder`; add examples of `assoc`, 
`datafiable-row`.
2019-04-18 00:36:22 -07:00
Sean Corfield
50fbc5f8f1 Respect :gen-fn in execute-one 2019-04-18 00:28:23 -07:00
Sean Corfield
5019995feb Move SQL sugar functions to next.jdbc.sql
Make SQL string builder functions private.
2019-04-17 23:56:44 -07:00
Sean Corfield
a17054b61a Improve protocol documentation 2019-04-17 23:43:32 -07:00
Sean Corfield
b5eb5b880e Consolidate the three use cases
* Remove `execute!` and `execute-one!` from `result-set`.
* Add `-execute-all` and `-execute-one` to the `Executable` protocol 
instead.
* Remove `:row-fn` support.
* Allow a `PreparedStatement` to be `Connectable` so it can be used with 
`datafy`/`nav`.
* Rewrite `RowBuilder` protocol and add `ResultSetBuilder` protocol; add 
`as-arrays` as a builder.
2019-04-17 23:34:31 -07:00
Sean Corfield
788015909f First cut at RowBuilder
Temporarily disables as-arrays
2019-04-10 23:59:19 -07:00
Sean Corfield
d2f0afa973 Fix #9 by combining ->factory and create again 2019-04-10 21:46:38 -07:00
Sean Corfield
9abf9f6380 Fix update count key to :next.jdbc/update-count 2019-04-04 20:25:20 -07:00
Tommi Reiman
c7ebec1fa2 Manually destructure options 2019-04-02 22:37:53 +03:00
Sean Corfield
e85f627a00 Address #2 by solidifying row function API
Low-level `execute!` requires row function to be passed. High-level API 
allows row function, else `datafiable-row`. Syntactic sugar still uses 
`:row-fn`.
2019-04-02 00:41:39 -07:00
Sean Corfield
c2c9bcbba4 Address #1 by solidifying syntactic sugar functions
Cleans up how options are handled. Adds `query` alias for `execute!`, 
clarifiies the syntactic sugar nature of the additional functions.
2019-04-01 23:57:12 -07:00
Sean Corfield
a76189d9c8 Fix #4 by adding transact
`with-transaction` now delegates to `transact` which in turn delegates 
to `p/-transact`.
2019-04-01 23:43:10 -07:00
Sean Corfield
be9e4a6a55 Rename protocols
For internal consistency and also to avoid confusion with 
`clojure.java.jdbc` protocols.
2019-04-01 23:32:24 -07:00
Sean Corfield
6d1a42a0a0 Fix #6 by adding IReadColumn and ISQLParameter protocols
The latter can be extended via metadata but the former cannot (since 
only the latter is coming from Clojure).
2019-04-01 23:25:10 -07:00
Sean Corfield
4b81a42b4d Allow Sourceable to be overridden via metadata 2019-04-01 23:22:59 -07:00
Sean Corfield
f217e86038 Address #2 by adding rs/as-arrays 2019-04-01 22:19:02 -07:00
Sean Corfield
81be787316 Improve docstrings throughout 2019-04-01 21:31:38 -07:00
Sean Corfield
6e08557d92 Add docstrings to everything 2019-03-31 23:17:12 -07:00
Sean Corfield
8646472e79 Flesh out more SQL generators
Add high-level insert!, insert-multi!, update!, delete!

Add more examples to tests.
2019-03-31 19:30:01 -07:00
Sean Corfield
561ccfc621 Add simple SQL generators 2019-03-31 18:22:04 -07:00
Sean Corfield
31cbecf411 Improve function naming in prepare ns 2019-03-31 17:30:10 -07:00
Sean Corfield
38017d720d Move examples to tests for now 2019-03-31 17:29:40 -07:00
Sean Corfield
376856600e Add quoted entity functions 2019-03-31 17:29:21 -07:00
Sean Corfield
ac95379bce Reorganize into multiple namespaces 2019-03-31 16:54:34 -07:00
Sean Corfield
4d41faa8cd Restore :identifiers functionality 2019-03-30 23:31:35 -07:00
Sean Corfield
2cb3c20122 Renaming/cleanup 2019-03-30 23:13:01 -07:00