Sean Corfield
8025d3520d
Bug fixes for JOINs
2020-10-12 22:54:59 -07:00
Sean Corfield
b547a94003
Restore - -> _ translation from 1.0
2020-10-12 22:54:46 -07:00
Sean Corfield
f14b73e592
Start merging old core tests (for helpers)
2020-10-12 18:50:07 -07:00
Sean Corfield
0206eabc1e
Empty SQL vector support
...
Drop clauses that generate no SQL
2020-10-12 18:38:35 -07:00
Sean Corfield
eff3b03a81
Support case/when/then/else
2020-10-12 18:38:05 -07:00
Sean Corfield
d1e4e196d0
Support empty conditions
...
Which remove the clause
2020-10-12 18:37:48 -07:00
Sean Corfield
febcf385ee
Yet another where helper fix
...
Support nil conditions
2020-10-12 18:37:28 -07:00
Sean Corfield
96260901c2
All v1 core clauses are implemented now!
2020-10-12 14:53:52 -07:00
Sean Corfield
796f11c3f4
Fix composite by turning it into special syntax
2020-10-12 11:42:47 -07:00
Sean Corfield
ccd5447a09
Format sequential values as full SQL expressions
2020-10-12 11:33:18 -07:00
Sean Corfield
2decf35072
Fix most of the README formatting
2020-10-09 23:59:43 -07:00
Sean Corfield
9da83b5e1b
Fix where merging; fix single-arg helpers
2020-10-09 23:59:30 -07:00
Sean Corfield
d04d9f600a
Fix VALUES with multiple hash maps
2020-10-09 23:58:55 -07:00
Sean Corfield
15ace00e49
Fix string alias (should quote)
2020-10-09 23:58:38 -07:00
Sean Corfield
98b18bbb6e
Fix where/having helpers; add select-distinct
2020-10-09 23:05:05 -07:00
Sean Corfield
a83998d354
Documented extension mechanism; updated README
...
Helpers are the next big piece of work.
2020-10-09 22:31:55 -07:00
Sean Corfield
97a3782112
Support :inline option
...
This is similar to `:parameterizer :none` (but better).
2020-10-09 21:52:18 -07:00
Sean Corfield
0c7ce43381
Address #279 by treating UNION expressions as nested
2020-10-09 21:30:45 -07:00
Sean Corfield
04724df814
Implement :lift special syntax
2020-10-02 13:43:44 -07:00
Sean Corfield
6632335384
Add nesting support in expressions and the DSL
2020-10-02 13:24:44 -07:00
Sean Corfield
9f8d1a8564
Implement :?foo [:param :foo] and primitive [:raw "sql"]
2020-10-01 23:30:18 -07:00
Sean Corfield
ddef4068ba
Ensure DSL elements can be symbols (as well as keywords)
2020-09-30 13:00:09 -07:00
Sean Corfield
a789d4a4ff
Support registration of new infix operators and new function/syntax
2020-09-29 14:40:03 -07:00
Sean Corfield
b94f169af3
Normalize symbol/keyword logic
...
We will allow symbols anywhere that we previously allowed keywords.
2020-09-29 14:20:34 -07:00
Sean Corfield
8b2f0ef292
Add locking select support via for/lock
2020-09-28 20:45:43 -07:00
Sean Corfield
867d5d3482
Implement composite; clean up readme
2020-09-28 19:24:17 -07:00
Sean Corfield
6d31c4839d
Add first pass of helpers
2020-09-28 13:47:55 -07:00
Sean Corfield
a7590e9216
Enhance special syntax
...
Pass op in as first argument so we can write more generic functions.
2020-09-28 13:18:21 -07:00
Sean Corfield
0706d0b7ba
Improve insert into support
2020-09-28 12:12:40 -07:00
Sean Corfield
534401e5d6
Add ILIKE/NOT-ILIKE
2020-09-28 12:12:25 -07:00
Sean Corfield
ad49c4e386
Add NOT operator, improve NULL support
2020-09-28 12:12:10 -07:00
Sean Corfield
804305d3c5
Add EXCEPT ALL
2020-09-28 11:52:32 -07:00
Sean Corfield
6db2426046
Fix do update set; add on conflict tests
2020-09-28 11:49:29 -07:00
Sean Corfield
61cf6eda5a
Add variadic string concatenation ||
2020-09-28 11:49:13 -07:00
Sean Corfield
25097af134
First cut of on conflict support
2020-09-26 15:16:12 -07:00
Sean Corfield
9154d73678
Implement returning (postgres)
2020-09-26 00:39:54 -07:00
Sean Corfield
002523bb8c
Generate AS for select/from; except for Oracle
2020-09-26 00:17:31 -07:00
Sean Corfield
6aced04179
Address #266 by adding :pretty? true option
...
Adds newline before, after, and between each SQL clause.
2020-09-25 23:58:51 -07:00
Sean Corfield
4d3b317520
Add meta unwrap for more feature support
2020-09-25 17:10:25 -07:00
Sean Corfield
0052aade7c
Implement variadic and/or/+/*
2020-09-25 16:40:15 -07:00
Sean Corfield
a6c1f98b71
Fix CTE syntax
...
Should always be wrapped in parens
2020-09-25 16:38:38 -07:00
Sean Corfield
1ebbbc1772
Fix inline string behavior
2020-09-25 16:38:11 -07:00
Sean Corfield
63a079ca8d
Bump readme version (and gen'd code)
2020-09-25 15:31:29 -07:00
Sean Corfield
9f20ade0fe
Fix is/not null generation
2020-09-25 15:31:11 -07:00
Sean Corfield
11ef895c4a
Clean up dialect support; start docs
...
Also move old namespaces to test-only tree for reference while I
continue developing V2.
2020-09-24 19:07:32 -07:00
Sean Corfield
6cf8fa9e45
Implement base clause order for more predictable dialect selection
2020-09-24 11:13:08 -07:00
Sean Corfield
ba701b60cd
Continue to support Clojure 1.7 for now
2020-09-24 11:04:18 -07:00
Sean Corfield
3ce47b92f2
Implement :inline syntax; allow select call without alias
2020-09-23 22:52:57 -07:00
Sean Corfield
97531fa4cf
Implement array as SQL syntax instead of special HoneySQL syntax
2020-09-23 22:25:13 -07:00
Sean Corfield
f7d5e3a4cf
Down to just 8 failures now!
...
Mising: array, inline, parameterizer.
2020-09-23 18:15:20 -07:00
Sean Corfield
1a699f18ab
Support more clauses; flesh out dialect and clause ordering
2020-09-23 12:55:02 -07:00
Sean Corfield
a1d90a6382
Work toward more 1.x compatibility
...
Temporarily disable `AS` in alias while testing compatibility; only
quoted by default if `:dialect` specified (may revisit this).
2020-09-23 00:14:25 -07:00
Sean Corfield
834ac3a096
Rename sql-format back to format now Chlorine is updated!
2020-09-21 10:56:05 -07:00
Sean Corfield
1dc0447244
Convert more RCFs to tests
2020-09-20 22:25:28 -07:00
Sean Corfield
b6d6d2c4f4
Refactor to sql-format for now
2020-09-20 21:33:04 -07:00
Sean Corfield
2c98d35f63
Start some tests; implement more clauses
2020-09-20 19:17:37 -07:00
Sean Corfield
29b6e47a8e
Experimental WIP
2020-09-20 18:48:07 -07:00
Sean Corfield
b3baa094c2
Fixes #257 by adding CROSS JOIN
2020-05-29 16:01:49 -07:00
Sean Corfield
d86150784b
Fixes #239 by never qualifying inserted column names
2020-05-18 12:06:20 -07:00
Sean Corfield
ac92047d5e
Refer/link to next.jdbc as appropriate
2020-03-08 15:40:08 -07:00
Sean Corfield
58a9a97694
Remove macrovich dependency
2020-03-08 15:30:48 -07:00
Sean Corfield
8784a104fb
Fixes #253 properly; logs #254 and #255 in CHANGES
2020-03-06 09:42:51 -08:00
Ted Coakley
e7dce6b347
Adds support for except set operation #254
2020-03-06 17:34:06 +00:00
Sean Corfield
9fb3d42660
Release 0.9.9 fixes #253
2020-03-02 16:01:14 -08:00
Sean Corfield
a732815b37
Fixes #249 by adding :namespace-as-table? option for 0.9.8
2019-09-07 23:42:38 -07:00
Sean Corfield
e7f2343ae7
Tweak argument names
2019-09-07 15:58:48 -07:00
Sean Corfield
bb73dcbda7
Fixes #162 by adding composite/:composite
...
Relies on paren-wrapping within subqueries which is the context for
values.
2019-09-07 15:56:06 -07:00
Sean Corfield
f17a6f5582
Fixes #247 by reverting #132 / #131
...
Adds `*allow-namespaced-names?*` Var and `:allow-namespaced-names?`
option so the previous behavior can still be used.
2019-09-07 15:18:10 -07:00
Sean Corfield
c573f3bd9c
Fixes #235 by adding two different SET priority variants
...
This allows the behavior change in #200 to be worked around.
2019-09-07 14:55:06 -07:00
Sean Corfield
4ca74f2b0d
Fixes #139 by checking columns arguments
2019-09-07 14:02:04 -07:00
Sean Corfield
7831ebed38
Fixes #128 by adding :truncate / truncate
2019-09-07 13:24:46 -07:00
Sean Corfield
94601ee5ae
Fixes #248 by changing how aliases are rendered
...
In theory, the only change here will be to stop the paren-wrapping in
generation of alias SQL -- but I think that treating alias/columns pairs
like this (as a nested alias) is very suspicious anyway so that probably
ought to be fixed "properly" at some point.
2019-09-05 16:38:20 -07:00
Sean Corfield
8bf68d1d10
Another run at fixing #246
2019-08-21 21:59:39 -07:00
Sean Corfield
a31426da6b
Fixes #246
...
Also fixes reflection warning introduced in #237 .
2019-08-21 16:03:21 -07:00
Sean Corfield
509df19702
Fix #242 by turning modifiers into a multimethod
2019-04-06 20:30:16 -07:00
Sean Corfield
05cc39a41c
Revert #240 but keep the dependency updates
2019-04-02 11:25:15 -07:00
Sean Corfield
d10166c0ed
Fix #240 by extending keyword call syntax
...
Also updates dev/test dependencies.
2019-03-27 10:51:26 -07:00
Cam Saul
bd076b193a
Fix query generation when user.language is Turkish
2019-02-08 20:02:31 -08:00
Griffin Smith
8c2142cb34
bind *parameterizer* in format-predicate
...
format-predicate throws an NPE if *parameterizer* is not bound - this
mirrors the binding form of `format` to allow supplying that as an
option.
2019-01-07 17:19:52 -05:00
Gordon Stratton
5faae8790f
The "AS" alias is no longer split before quoting
...
Fixes #216
2018-10-01 15:19:03 +00:00
Sean Corfield
ea3e9b40bd
Fix #228 by allowing no predicates in where/merge-where
2018-09-24 18:44:01 -07:00
Sean Corfield
284d0142b6
Fix #226 by adding assert
2018-09-02 18:35:02 -07:00
Vincent
6e3631822d
Added Inlinable protocol for more sensible stringification of inline values, and to allow library users to further extend the inline behavior ( #224 )
2018-08-30 18:55:53 +02:00
Sean Corfield
2b238c5a47
Fix #221 by treating #inline nil as a special case
2018-08-03 17:13:46 -07:00
Sean Corfield
61d8926a63
First cut for #219
2018-06-29 21:59:17 -07:00
Sean Corfield
ea76608c7c
Merge branch 'delete' of https://github.com/MichaelBlume/honeysql into MichaelBlume-delete
...
Corrects `delete` to support multiple tables.
Adds tests.
Adds README examples.
# Conflicts:
# src/honeysql/format.cljc
# src/honeysql/helpers.clj
2018-06-26 18:24:01 -07:00
Chris Targett
f778419cb9
Refactored parameterizer to use mutimethods
...
It was briefly mentioned in #honeysql on clojurians.slack.com that this
mechanism of extension uses a register method and an atom to support
extension when multimethods are used elsewhere.
2018-05-15 21:22:32 +01:00
Michael Blume
fcdf326968
Put SET after JOIN
...
Fix #200
2018-04-15 23:51:35 -07:00
Michael Blume
43e94bf497
Merge pull request #201 from vincent-dm/master
...
adds support for JOIN ... USING (...) syntax (#188 )
2018-04-12 23:39:59 -07:00
Juvenn Woo
e874a6114d
Replace alter-var-root with atom for parameterizers
2018-03-09 14:11:50 +08:00
Juvenn Woo
2abe128008
Support register customized parameterizer
2018-03-09 11:54:14 +08:00
Nuttanart Pornprasitsakul
3206b099df
Remove nil predicate from :and
2018-02-18 13:27:07 +07:00
Nuttanart Pornprasitsakul
15af00e0de
Remove nil argument to where
2018-02-15 22:44:13 +07:00
Michael Blume
3588768970
Merge pull request #195 from madvas/master
...
Fix #193
2018-02-10 23:50:22 -08:00
Michael Blume
8ad38d28af
Merge pull request #196 from emidln/emidln/insert-into-drop-parens
...
Avoid wrapping QUERY with parens while formatting INSERT INTO ... QUERY
2018-02-10 23:48:01 -08:00
Vincent
8a6ecd94aa
adds support for JOIN ... USING (...) syntax ( #188 )
2018-01-16 03:13:14 +01:00
Tianxiang Xiong
ccff2d2c23
Limit value context to sequences in value positions
...
Fix #198
2018-01-09 23:42:53 -08:00
Brandon Adams
c7df208e3e
Avoid wrapping QUERY with parens while formatting INSERT INTO ... QUERY
...
This also adds a test using honeysql.format/format for an existing
format-clause test case for :insert-into which encodes the previously
failing behavior.
2017-12-12 16:09:31 -06:00
madvas
54b620d0f9
Fix #193
2017-11-29 19:41:35 +01:00
Michael Blume
faba02f2b4
Merge pull request #186 from arichiardi/parameterizer-none
...
Add :parameterizer :none option
2017-11-15 21:23:11 -08:00
Ken Fehling
7f64e26984
Add :intersect to default-clause-priorities
2017-11-15 18:59:54 -05:00
Andrea Richiardi
6cf89436d4
Add :parameterizer :none option
...
Sometimes you want to completely skip using parameters.
Postgres, in particular, complains with cryptic "syntax error at or near "$1"
whenever query parameters cannot be used for the query. An example would be
CREATE TABLE queries where the only parameters are the VARCHAR size.
This patch adds a :none option to :parameterizer which completely skips
parameter filling (and numbering), returning the SQL string only.
2017-11-06 17:13:02 -08:00
Andrea Richiardi
65037939b2
[ Fix #167 ] Add ClojureScript self-host support
...
This patch uses the wonderful cgrand/macrovich for supporting both JVM and
self-host ClojureScript. The library avoids destructive code changes, no
namespaces were moved.
The patch also adds a runner for self-host tests by adding the lein-tach
plugin. Tests can be launched with:
lein tach lumo (or planck)
See the lein-tach README for details.
2017-11-01 10:13:47 -07:00
Michael Blume
7256f7afba
Revert "Merge pull request #169 "
...
Revert the reversion, keep the behavior from 0.9.0, vectors will be
primarily used for function calls.
2017-08-25 09:12:53 -07:00
Michael Blume
a707222d53
Run all code samples from README as tests
...
using `lein test-readme` alias
2017-07-19 10:28:51 -07:00
Michael Blume
3eaf5edbc0
Merge pull request #169 from MichaelBlume/fix-tuples
...
Revert #149 and restore tuple behavior
2017-07-18 13:47:56 -07:00
Michael Blume
d99efb8606
allow inlining values
...
Most of the time we want to parameterize numbers, but sometimes we don't
Fixes #171
2017-07-18 12:50:27 -07:00
Michael Blume
62c4760c6a
Revert "Merge pull request #149 "
...
Should #168
2017-07-17 20:49:35 -07:00
Brandon Adams
f94e343f31
Reprioritize WITH wrt UNION and UNION ALL
...
WITH needs to come before clauses that are part of a UNION
or UNION ALL.[1][2][3][4]
[1] "A CTE must be followed by a single SELECT, INSERT, UPDATE, or DELETE
statement that references some or all the CTE columns."
https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql
[2] "the WITH clause itself is attached to a primary statement that can
also be a SELECT, INSERT, UPDATE, or DELETE"
https://www.postgresql.org/docs/9.6/static/queries-with.html
[3] https://mariadb.com/kb/en/mariadb/with/
[4] "All common table expressions (ordinary and recursive) are created
by prepending a WITH clause in front of a SELECT, INSERT, DELETE, or
UPDATE statement."
https://sqlite.org/lang_with.html
Added a test case demonstrating the expected behavior for each of
UNION and UNION ALL.
2017-06-27 20:01:52 -07:00
Eli Naeher
00316fc6bd
Add helpers for :with and :with-recursive clauses
2017-05-19 22:59:21 -07:00
Michael Blume
f22cae3278
Require that defhelper arglist has two elements
...
one for the map and one for varargs
Add & to metadata arglists, make them correct
2017-05-10 09:46:54 -07:00
Michael Blume
e0072efbdc
Merge pull request #132 , allow namespaced keywords
2017-04-05 21:11:45 -07:00
Tom Connors
bdfee0883e
Fix using maps with different key orders in :values
2017-03-24 00:18:04 -07:00
Joost Diepenmaat
f8b913d667
Fix operators in value positions
2017-02-17 10:21:23 +01:00
Richard Newman
9dd87d14a0
Don't parenthesize the subclauses of a UNION, UNION ALL, or INTERSECT clause. Fixes #141 .
2016-10-12 08:50:54 -07:00
Sean Corfield
6a0eacdd5f
Address #138 : add priority for union/union-all
...
By prioritizing union / union-all to happen early on, complex queries
with order by / limit / offset etc will be correctly formatted _after_
the union / union-all clause has been formatted.
2016-09-13 19:50:50 -07:00
Richard Newman
f9546af9ca
Make defhelper work.
2016-07-18 14:13:10 -07:00
Richard Newman
ec03b7c06f
ClojureScript doesn't have IRecord, but we should be using record? anyway.
2016-07-18 14:12:01 -07:00
Mike Blume
7c8cdf241d
MichaelBlume's first pass at ClojureScript support.
2016-07-18 14:12:01 -07:00
Mike Blume
5603e9df9f
Add ClojureScript build, move files to cljc.
...
ClojureScript build fails.
2016-07-18 14:10:52 -07:00
Jon Doane
5b197f9756
Solve an issue where namespaced keywords and symbols where only taking the name portion of the identifier.
...
- This now checks if there is a namespace and prepends it to the name if it exists.
2016-07-09 10:37:33 -04:00
Michael Blume
3265e4e14d
fix arglist metadata
2016-05-21 13:26:18 -07:00
Alexander K. Hudek
3ec65bd198
Treat numbers as paramterized values to fix issues with NaN, Infinity, and -Infinity.
2016-05-17 14:37:39 -04:00
Michael Blume
43df955a86
Merge pull request #111 from stuarth/master
...
allow joins without a pred
2016-03-30 23:10:18 -07:00
Michael Blume
d9567e64e0
Merge pull request #110 from csummers/master
...
escape quote characters in quoted identifiers
2016-03-12 17:33:09 -08:00
Dave Della Costa
0662a00722
Merge pull request #103 from jakemcc/add-intersect
...
add intersect support
2016-03-02 12:37:17 -05:00
Stuart Hinson
80e9d2ec44
allow joins without a pred
2016-03-01 09:39:21 -05:00
Curtis Summers
47cefd0371
escape quote characters in quoted identifiers
2016-02-24 06:45:49 -06:00
Michael Blume
06c97376ef
prevent records from being treated as maps
...
Thanks to @djwhitt and @blinsay for reporting and for providing
test cases.
Fixes #106
2016-02-09 14:09:22 -08:00
Jake McCrary
8fa44d22b3
add INTERSECT support
2015-11-29 17:49:45 -06:00
Michael Blume
607ee17cca
Merge pull request #95 from emidln/emidln/with_column_names
...
Support column names in :with clauses
2015-10-18 11:07:03 -07:00
Brandon Adams
10a1565467
Support column names in :with clauses
...
This binds `honeysql.format/*subquery?*` to `false` which turns
on processing of a cte-name like `[:foo {:columns [:a :b :c]}]`
resulting in a string like `WITH foo (a, b, c)`.
2015-10-12 15:13:16 -05:00
Jon Doane
4b1f26632e
Add a "huh" on the allow-dashed-names option on honeysql.format/format.
2015-10-11 12:14:47 -04:00
Jon Doane
1f6e9151fd
Updated default for allowing dashes.
2015-10-11 11:03:03 -04:00
Jon Doane
95e208485a
Added support for preserving dashes in quoted names.o
2015-10-11 10:47:14 -04:00
loganlinn
b51611d4d6
Add fn-handler for CASE statement
2015-08-06 11:29:54 -07:00
Mike Blume
81f2c72675
one more field accessor
2015-06-15 15:54:27 -07:00
Mike Blume
fae5545e8a
move format-predicate down
2015-06-15 15:54:27 -07:00
Mike Blume
38e3812e66
just call it to-sql
2015-06-15 15:54:26 -07:00
Mike Blume
cb296e2e31
avoid boilerplate using defrecord
2015-06-15 15:44:35 -07:00
Mike Blume
04a7086687
be clear that these are field accessors
...
not function calls
2015-06-15 15:44:34 -07:00
Donald Ball
713f72cfb6
Fix the parameterizable protocol to include nil
...
I forgot that Object doesn't include nil on protocols.
I added test coverage demonstrating the regression, only to note that
parameterized and literal queries produce different sql for the nil
case. I believe only the former is actually valid ANSI SQL, though mysql
at least does not care.
2015-05-20 11:23:36 -04:00
Mike Blume
115ac81fee
Merge pull request #74
2015-05-08 16:41:11 -07:00
Mike Blume
6b64743315
add pname to *param-names* once per value
...
keep *params* and *param-names* at the same count
2015-05-08 14:23:28 -07:00
Andy Chambers
203296149f
Add support for exists
2015-04-24 08:08:13 -07:00
Donald Ball
4bdaae39af
Convert seq param values to literal sql param lists
...
This allows seqs to be used as param values, e.g. for IN clauses. It
also converts sets to seqs for the same purpose.
It does not expand the parameter name when this occurs, which will lead
to a mismatch between the *param-names* and *params* collections. It is
not clear how *param-names* are intended to be used, so I have no better
fix to suggest other than repeating a seq's param name the corresponding
number of times into that collection.
2015-04-21 14:28:28 -04:00
Donald Ball
2820662f59
Apply seq to sets when converting to sql
...
This allows them to be used as values, e.g. for in clauses, as
demonstrated in the test.
2015-04-20 23:40:59 -04:00
Mike Blume
72784452b9
Merge remote-tracking branch 'dball/support-locking-selects' into HEAD
2015-04-17 14:25:23 -07:00
Michael Blume
198115fb84
Merge pull request #69 from mishok13/nulls-first-last-in-order-by
...
NULL order specification support
2015-04-17 14:20:23 -07:00
Donald Ball
bc0b7e904f
Support locking selects
...
This will need documentation before being merged.
2015-04-17 15:15:23 -04:00