Commit graph

307 commits

Author SHA1 Message Date
Sean Corfield
826407e9db first pass of caching formatter
needs more documentation.

Initial results suggest a speedup for simple queries of 2-3x.
Complex queries can see up to 20x speedup.
2022-01-08 00:41:21 -08:00
Sean Corfield
2670abc75f fix #377 by adopting @corasaurus-hex function as map= 2022-01-07 23:16:56 -08:00
Sean Corfield
99ce051a9d add array/struct support 2022-01-07 12:53:30 -08:00
Sean Corfield
e8e6c7f932 address #281 - support select foo.* except 2022-01-07 11:35:08 -08:00
Sean Corfield
a653f9b157 address #281 add select * except / replace for BigQuery 2022-01-06 23:02:20 -08:00
Sean Corfield
8979e938f3 fixes #374 2021-12-23 13:32:47 -08:00
Sean Corfield
b30aa0f3f9 fix #375 2021-12-21 22:54:02 -08:00
Sean Corfield
e0cafbd434 extend lint checks to several column lists 2021-12-03 13:06:34 -08:00
Sean Corfield
66fc3a68ee fix #354 2021-11-27 15:27:12 -08:00
Sean Corfield
d660c059d4 fix #370 2021-11-26 22:40:51 -08:00
Sean Corfield
be1df97b2b fix #371 2021-11-26 22:30:36 -08:00
Sean Corfield
3cacec9c32 addresses #366 -- needs documentation! 2021-10-03 22:32:05 -07:00
Sean Corfield
6aee04e25c fixes #365 2021-10-03 22:18:12 -07:00
Sean Corfield
3d0a9ba79c fixes #367 2021-10-03 21:59:11 -07:00
Sean Corfield
92e0a04a84 fixes #353 fixes #349 2021-09-25 17:27:04 -07:00
Sean Corfield
dae09ff601 fixes #363 by improving inlining capability 2021-09-25 17:06:48 -07:00
Sean Corfield
c7c6102661 address #353 for create table/string entity 2021-09-09 10:41:37 -07:00
Sean Corfield
ec758dd818 support AS in DELETE FROM alias 2021-09-01 10:20:19 -07:00
Sean Corfield
9ece8972b5 fixes #344 by special-casing MySQL SET 2021-08-12 18:26:39 -07:00
Sean Corfield
10e6e755e9 fixes #340 2021-07-22 19:49:25 -07:00
Sean Corfield
50bbfef07f Fixes #338 properly by making offset/fetch smarter 2021-07-17 17:57:17 -07:00
Sean Corfield
7e84b58463 fixes #338 by adding ONLY to :fetch 2021-07-17 13:32:43 -07:00
Sean Corfield
cf136c2fdc cljs/1.9 compatibility 2021-06-17 13:05:49 -07:00
Sean Corfield
00b20f6bbf Address #330 by improving exception 2021-06-17 12:54:15 -07:00
Sean Corfield
228eb9fb67 Fix #327 by improving error message 2021-06-12 18:47:10 -07:00
Sean Corfield
a51cfe5a2e Fixes #328 by adding :distinct special syntax 2021-06-12 18:15:59 -07:00
Sean Corfield
f508196ba3 Address #329 2021-06-12 18:15:41 -07:00
Sean Corfield
52308d484f Support PostgreSQL && array operator 2021-05-17 10:40:19 -07:00
Sean Corfield
819c6e7c19 Additional work on #325; update CHANGELOG 2021-05-10 12:37:07 -07:00
Sean Corfield
e38bb73295
Merge pull request #325 from zugnush/quoting_fix
quoting for :%fun.col(s) syntax to match with [[:fun :col]]
2021-05-10 12:24:06 -07:00
Sean Corfield
572984a45d Addresses #326 by allowing ON/USING to be optional 2021-05-10 12:05:07 -07:00
Sean Corfield
12bfa32962 Addresses #326 by no longer dropping parameters 2021-05-10 11:55:28 -07:00
Neil McCalum
9c38554154 format with opts, hyphen to under in function names, improve and relocate tests 2021-05-11 01:07:34 +12:00
Neil McCalum
6ebc017969 quoting for :%fun.col(s) syntax to match with [[:fun :col]] 2021-05-09 17:18:39 +12:00
Sean Corfield
d73560b7e3 Add :quoted-snake option 2021-05-08 21:01:28 -07:00
Sean Corfield
20cba15da2 Fixes #321 by adding :checking option
Initial linting is only for IN () and IN (NULL)
2021-04-22 22:13:32 -07:00
Sean Corfield
f606dc6044 Fixes #323 by allowing multiple column names 2021-04-22 19:16:30 -07:00
Sean Corfield
272b088918 Revert "Addresses #315 by expanding IN to handle nil"
This reverts commit 8a1e2cca71.
2021-04-12 15:04:17 -07:00
Sean Corfield
e6a5bdb001 Fixes #308 by adding support for clauses
This also corrects the docstring for the join-by helper.
2021-04-11 04:18:14 -07:00
Sean Corfield
50fd829752 Addresses #310 by adding filter, order-by, within-group syntax 2021-04-11 14:32:48 -07:00
Sean Corfield
bbc0ac8500 Documentation updates 2021-04-11 11:39:06 -07:00
Sean Corfield
8a1e2cca71 Addresses #315 by expanding IN to handle nil 2021-04-10 10:57:13 -07:00
Sean Corfield
7a83bc13fe Tweak docstring 2021-04-10 00:13:04 -07:00
Sean Corfield
88282ee258 Fixes #316 by adding check on entity characters
Also record that documentation addresses #300, #309, #313, and #314.
2021-04-09 23:41:59 -07:00
Sean Corfield
2fe083f8e6 Support named arguments in format again
With the advent of Clojure 1.11 and the ability to call functions that
accept named arguments using a hash map, I have restored the named
argument version of `format` (in addition to the hash map version),
and if you are using Clojure 1.11 you can mix'n'match styles.
2021-04-09 17:04:48 -07:00
Sean Corfield
106b19bcf6 Add clause-order to see current clause order
This should help when folks are figuing out `register-clause!` calls.
2021-04-09 16:31:16 -07:00
Sean Corfield
af382708e5 Fixes #319 by making register-clause! idempotent
Technically, it removes any instance of the clause from the ordering
before it attempts to add it back in, allowing you to correct the
order if you got it wrong.
2021-04-09 15:58:56 -07:00
Sean Corfield
06f25ed2e3 Fixes #317 by dropping qualifier in :set clause 2021-04-01 12:50:09 -07:00
Sean Corfield
13d62b4ac1 Also show quoting/not-quoting and table.col forms 2021-03-15 16:54:13 -07:00
Sean Corfield
73c2062d6e Investigation of string-as-entity behavior
This is something that should be updated in the docs.
2021-03-15 16:45:26 -07:00
Sean Corfield
9672ed3704 Fixes #312 (properly this time) 2021-03-15 15:26:22 -07:00
Sean Corfield
fd84864279 Fixes #161 by adding :raw clause support 2021-03-15 14:48:28 -07:00
Sean Corfield
16d04a1dfd Fixes #297 by adding into/bulk-collect-into 2021-03-13 13:42:08 -08:00
Sean Corfield
cff1e5b43c Fixes #284 by adding lateral expression syntax 2021-03-13 13:13:35 -08:00
Sean Corfield
82ee465820 Fixes #292 by supporting offset/fetch 2021-03-13 12:36:25 -08:00
Sean Corfield
6b070df52c Finish off TOP implementation #292 2021-03-13 12:10:42 -08:00
Sean Corfield
479008c294 Address #292 by starting to support SELECT TOP 2021-03-12 18:54:19 -08:00
Sean Corfield
dc6a3662f0 Fixes #303 by adding ON DUPLICATE KEY UPDATE 2021-03-12 16:13:52 -08:00
Sean Corfield
d35d9141bc Fixes #280 by adding [:escape pattern chars] 2021-03-12 15:39:54 -08:00
Sean Corfield
ddebda9481 Fixes #301 Fixes #306 by expanding drop/create syntax 2021-03-12 11:43:21 -08:00
Sean Corfield
445fb08e2f Initial work to support #301 2021-03-11 20:07:59 -08:00
Sean Corfield
efcee05e0a Beginnings of generic create #301 #306 2021-03-07 22:13:25 -08:00
Sean Corfield
e70985e93b Fixes #277 by adding join-by 2021-03-07 19:21:13 -08:00
Sean Corfield
41522c89a1 Clarify 1.9+ Clojure support 2021-03-07 09:43:03 -08:00
Sean Corfield
78ca2a0530 Fixes #305 by supporting more complex JOIN source 2021-02-27 09:33:20 -08:00
Sean Corfield
331597b22b Improve on conflict on constraint syntax 2021-02-15 17:56:47 -08:00
Sean Corfield
e23502eba8 Add create/drop extension #293 2021-02-13 22:06:43 -08:00
Sean Corfield
38da6f567b Fixes #294 by applying inline everywhere 2021-02-13 21:29:22 -08:00
Sean Corfield
e585ded37e Restore upsert helper for #293 2021-02-13 19:08:40 -08:00
Sean Corfield
6355452102 Update docs for the PG extension stuff 2021-02-13 16:17:30 -08:00
Sean Corfield
f6975ef6bd Fix select as, select distinct on 2021-02-13 15:58:56 -08:00
Sean Corfield
4ce56997c9 Fix rename table 2021-02-13 12:24:21 -08:00
Sean Corfield
4b7ded4009 WIP nilenso test (fails) 2021-02-13 10:50:36 -08:00
Sean Corfield
41ed38ea38 Finish and document DDL 2021-02-12 21:50:22 -08:00
Sean Corfield
167d7cee0c Addresses #293 by adding alter table stuff
And documenting more of the DDL.
2021-02-12 17:08:37 -08:00
Sean Corfield
49d8365bfb Addresses #293 partial with-columns implementation 2021-02-10 22:32:29 -08:00
Sean Corfield
83d4ccba38 Addresses #293 start work on DDL support 2021-02-10 20:07:05 -08:00
Sean Corfield
e157aec976 Addresses #293 by adding over, partition-by, and window 2021-02-10 16:25:31 -08:00
Sean Corfield
5318c184e6 Addresses #293 by expanding insert-into behavior
This adds alias support into `:insert-into`.
It also adds some tests for the PostgreSQL-specific
stuff currently in nilenso's library.
2021-02-10 15:07:16 -08:00
Sean Corfield
e02b5b5c82 Revert "Document with / CTE"
This reverts commit c00fbffe30.
2021-02-10 11:50:00 -08:00
Sean Corfield
9f579f492a Allow symbols in for/lock clauses 2021-02-08 12:48:33 -08:00
Sean Corfield
88ec86fd18 Allow direction to default with expression 2021-02-07 04:47:08 -08:00
Sean Corfield
c00fbffe30 Document with / CTE
Change the implementation to support just a pair instead of the legacy,
weird sequence of one pair.
2021-02-06 09:00:46 -08:00
Sean Corfield
1d2b8e8203 Document special syntax 2021-02-02 16:43:09 -08:00
Sean Corfield
ea0bfbabc1 Outline of docs for clauses, operators, and special syntax 2021-02-02 14:50:12 -08:00
Sean Corfield
80c137949e Initial Getting Started/Extending HoneySQL docs 2021-02-02 12:25:26 -08:00
Sean Corfield
4cbeb170dd Ensure no dependence on vector (vs sequence) 2021-02-01 16:45:35 -08:00
Sean Corfield
d7c7f15a6b Final de-?-ing keyword arguments/options 2021-02-01 16:24:00 -08:00
Sean Corfield
53bcfd8bea Move toward 2.0.0 Alpha 1 2021-02-01 14:49:17 -08:00
Sean Corfield
379d3d05c4 Drop ? from all keyword options 2021-02-01 13:10:57 -08:00
Sean Corfield
2ef9d4dad2 Docstring overhaul 2021-02-01 12:00:42 -08:00
Sean Corfield
7aab640e30 Fixes #291 by ensuring consistent values
For uneven vectors of values, pad with NULLs.

For uneven maps of values, use full set of keys across all of them.
2021-02-01 10:44:07 -08:00
Sean Corfield
0e2aae4a00 Fix :lift and test to use wrapper 2021-01-31 05:31:10 -08:00
Sean Corfield
c92656389b Make params dynamic/implement in/not-in 2021-01-31 05:08:21 -08:00
Sean Corfield
429761f106 Fixes #261 by re-implementing :raw 2021-01-30 12:35:51 -08:00
Sean Corfield
67c6c3a2cf Fixes #275 by dropping 1.7 & 1.8 2021-01-30 11:50:14 -08:00
Sean Corfield
8373c72f45 Fixes #286 by supporting WAIT, SKIP LOCKED
NOWAIT was already supported.
2021-01-30 11:43:48 -08:00
Sean Corfield
d2968bbfcc Fixes #289 by implementing USING 2021-01-30 11:19:12 -08:00
Sean Corfield
d5b11e2da6 Implement JOIN USING 2021-01-30 11:00:34 -08:00
Sean Corfield
07eb66759a Restore cljs compatibility 2021-01-30 17:27:00 -08:00
Sean Corfield
87eec786e1 It's 2021 2021-01-29 16:11:52 -08:00
Sean Corfield
273732089b Improve :inline/:raw
Note: these are still in flux!
2020-10-14 11:50:32 -07:00
Sean Corfield
b762a514b6 Addresses #280 by adding similar to / not similar to 2020-10-14 11:00:39 -07:00
Sean Corfield
4dcc44d878 Fix - as operator
Not a great workaround. May rethink depending on what other operators 
get added containing `-`.
2020-10-14 11:00:20 -07:00
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
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
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
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
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