execsql2 2.22.6__py3-none-any.whl → 2.22.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- execsql/format.py +19 -1
- {execsql2-2.22.6.dist-info → execsql2-2.22.7.dist-info}/METADATA +2 -2
- {execsql2-2.22.6.dist-info → execsql2-2.22.7.dist-info}/RECORD +21 -21
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/README.md +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/config_settings.sqlite +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/example_config_prompt.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/make_config_db.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/md_compare.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/md_glossary.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/md_upsert.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/pg_compare.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/pg_glossary.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/pg_upsert.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/script_template.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/ss_compare.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/ss_glossary.sql +0 -0
- {execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/ss_upsert.sql +0 -0
- {execsql2-2.22.6.dist-info → execsql2-2.22.7.dist-info}/WHEEL +0 -0
- {execsql2-2.22.6.dist-info → execsql2-2.22.7.dist-info}/entry_points.txt +0 -0
- {execsql2-2.22.6.dist-info → execsql2-2.22.7.dist-info}/licenses/LICENSE.txt +0 -0
- {execsql2-2.22.6.dist-info → execsql2-2.22.7.dist-info}/licenses/NOTICE +0 -0
execsql/format.py
CHANGED
|
@@ -456,7 +456,21 @@ def _sqlglot_format(
|
|
|
456
456
|
|
|
457
457
|
try:
|
|
458
458
|
with contextlib.redirect_stderr(io.StringIO()):
|
|
459
|
-
|
|
459
|
+
# Parse with RAISE, not IGNORE. Under IGNORE sqlglot answers a
|
|
460
|
+
# statement it cannot parse with a *partial* AST — the tokens it
|
|
461
|
+
# failed on are simply absent — and regenerating from that AST
|
|
462
|
+
# writes back SQL that no longer means what the author wrote.
|
|
463
|
+
# ``INSERT ... CROSS JOIN LATERAL (VALUES ...) AS g(a, b) ON
|
|
464
|
+
# CONFLICT (a) DO NOTHING`` came back with ``DO NOTHING`` deleted:
|
|
465
|
+
# still one statement, still 88% of the input's alphanumeric
|
|
466
|
+
# characters, no string literals to compare, so every guard below
|
|
467
|
+
# passed it through. The guards are quantitative and this loss is
|
|
468
|
+
# qualitative — a dropped ``DISTINCT``, ``CASCADE``, ``DESC`` or
|
|
469
|
+
# ``NOT`` is smaller still, and no threshold separates those from
|
|
470
|
+
# ordinary reformatting. Only the parser knows whether it
|
|
471
|
+
# understood the whole statement, so ask it: input that does not
|
|
472
|
+
# parse is left exactly as written.
|
|
473
|
+
ast = sqlglot.parse(protected, read="postgres", error_level=sqlglot_errors.ErrorLevel.RAISE)
|
|
460
474
|
statements: list[str] = []
|
|
461
475
|
for node in ast:
|
|
462
476
|
if node is None:
|
|
@@ -524,6 +538,10 @@ def _sqlglot_format(
|
|
|
524
538
|
if restored is None:
|
|
525
539
|
return sql_lines
|
|
526
540
|
return _restore_variables(restored, replacements).split("\n")
|
|
541
|
+
except sqlglot_errors.ParseError:
|
|
542
|
+
# Unparsable input: anything generated from a partial parse is
|
|
543
|
+
# untrustworthy, so emit the original lines untouched.
|
|
544
|
+
return sql_lines
|
|
527
545
|
except Exception:
|
|
528
546
|
return sql_lines
|
|
529
547
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: execsql2
|
|
3
|
-
Version: 2.22.
|
|
3
|
+
Version: 2.22.7
|
|
4
4
|
Summary: Runs a SQL script against a PostgreSQL, SQLite, MariaDB/MySQL, DuckDB, Firebird, MS-Access, MS-SQL-Server, or Oracle database, or an ODBC DSN. Provides metacommands to import and export data, copy data between databases, conditionally execute SQL and metacommands, and dynamically alter SQL and metacommands with substitution variables.
|
|
5
5
|
Project-URL: Homepage, https://execsql2.readthedocs.io
|
|
6
6
|
Project-URL: Repository, https://github.com/geocoug/execsql
|
|
@@ -384,7 +384,7 @@ execsql-format --no-sql --in-place scripts/
|
|
|
384
384
|
```yaml
|
|
385
385
|
repos:
|
|
386
386
|
- repo: https://github.com/geocoug/execsql
|
|
387
|
-
rev: v2.22.
|
|
387
|
+
rev: v2.22.7
|
|
388
388
|
hooks:
|
|
389
389
|
- id: execsql-format
|
|
390
390
|
```
|
|
@@ -3,7 +3,7 @@ execsql/__main__.py,sha256=HdbK-SAhyUmfB6xINY5AzxdMSxGzWSGEG_2dv42Jn64,315
|
|
|
3
3
|
execsql/api.py,sha256=EOtBwMnm-8fmB_KmvxyjglR6C7CjdYhCPBisJ9CFfJg,22227
|
|
4
4
|
execsql/config.py,sha256=txKziUJLV7UPonj2sGFgkmlinDdSV50aHmR_cuCbEIo,34369
|
|
5
5
|
execsql/exceptions.py,sha256=GlphAiR8iZu4UR4U50WgSqEUMd9_8AeQJ_hhPcJOeQU,9381
|
|
6
|
-
execsql/format.py,sha256=
|
|
6
|
+
execsql/format.py,sha256=oJvAxDaWi-TQAnj_enwuEH-wtjZylKf67QWwHrSNEUU,47254
|
|
7
7
|
execsql/models.py,sha256=-DWTVrPNwM-n1h3e3rXMoBv9-wpWVdZahyy4RB7fRRE,15502
|
|
8
8
|
execsql/parser.py,sha256=aOxZ7Mzgvk7G4-nvy9Bgz7xlaZm6oo81cffDeBk_LCk,15597
|
|
9
9
|
execsql/plugins.py,sha256=l82VWa5NpvOQWD6vcO-WKP-vtn0wp9__wWDFAbwxZg0,12838
|
|
@@ -101,23 +101,23 @@ execsql/utils/numeric.py,sha256=_7bi5R6pHjMCkOPne_Sh5nUj-B8e9g6WFmjptFHaunA,1573
|
|
|
101
101
|
execsql/utils/regex.py,sha256=B3mSBhRRx_DpUnX_t9IoYd05KvWAebiLMCZqQAmEwcw,3885
|
|
102
102
|
execsql/utils/strings.py,sha256=UQNjpRCEFa1UO6feU-M-9e24wWAvizs_iu_4fFusLxo,8516
|
|
103
103
|
execsql/utils/timer.py,sha256=eDYf5VzCNFk7oo90InJucUm3XcBdhYMogjZMqeg9xzc,1899
|
|
104
|
-
execsql2-2.22.
|
|
105
|
-
execsql2-2.22.
|
|
106
|
-
execsql2-2.22.
|
|
107
|
-
execsql2-2.22.
|
|
108
|
-
execsql2-2.22.
|
|
109
|
-
execsql2-2.22.
|
|
110
|
-
execsql2-2.22.
|
|
111
|
-
execsql2-2.22.
|
|
112
|
-
execsql2-2.22.
|
|
113
|
-
execsql2-2.22.
|
|
114
|
-
execsql2-2.22.
|
|
115
|
-
execsql2-2.22.
|
|
116
|
-
execsql2-2.22.
|
|
117
|
-
execsql2-2.22.
|
|
118
|
-
execsql2-2.22.
|
|
119
|
-
execsql2-2.22.
|
|
120
|
-
execsql2-2.22.
|
|
121
|
-
execsql2-2.22.
|
|
122
|
-
execsql2-2.22.
|
|
123
|
-
execsql2-2.22.
|
|
104
|
+
execsql2-2.22.7.data/data/execsql2_extras/README.md,sha256=vX4NTL095dUoA_hesyRMGYBorEZ_Y_tJ9qrd-MVV09I,5032
|
|
105
|
+
execsql2-2.22.7.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
|
|
106
|
+
execsql2-2.22.7.data/data/execsql2_extras/example_config_prompt.sql,sha256=2e8KzzVWhho8KxYVHETSVmZdhW7wodioDsqBLSL6m4s,7487
|
|
107
|
+
execsql2-2.22.7.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
|
|
108
|
+
execsql2-2.22.7.data/data/execsql2_extras/md_compare.sql,sha256=qYYVAjSeHZzjszxV3Bv6bg8Ckbq2kMHl87_gh4sywMU,24140
|
|
109
|
+
execsql2-2.22.7.data/data/execsql2_extras/md_glossary.sql,sha256=hkZ2Onn57LAKKsuXxzhR8tPtcWXkmWEQkwPE58-Tm2k,10796
|
|
110
|
+
execsql2-2.22.7.data/data/execsql2_extras/md_upsert.sql,sha256=_CAK4BzEboRXTNy03SJR-oOjcEdSNMuRBPL6noWUptY,112560
|
|
111
|
+
execsql2-2.22.7.data/data/execsql2_extras/pg_compare.sql,sha256=1zJd4hVUKHR0tncc2qTBC9B4qVV4Us2ITkJpsjN3tMw,24352
|
|
112
|
+
execsql2-2.22.7.data/data/execsql2_extras/pg_glossary.sql,sha256=IKuwna-_8b20ljSkXZruuiQigrCpo7ueQdUqd1MXiuI,9908
|
|
113
|
+
execsql2-2.22.7.data/data/execsql2_extras/pg_upsert.sql,sha256=HpPJtTHvpEjQy03j-3iPxDEOHMRkudOg7O4D4YR38UI,108315
|
|
114
|
+
execsql2-2.22.7.data/data/execsql2_extras/script_template.sql,sha256=2J35ddZPguJ-vwTsz83wErv0jiWUyJcdW_JM0mNKDXA,11155
|
|
115
|
+
execsql2-2.22.7.data/data/execsql2_extras/ss_compare.sql,sha256=j1qVNUPXQsEU7-DoVgDJCGcE0EuIl7whLBT3fgeiMAo,24833
|
|
116
|
+
execsql2-2.22.7.data/data/execsql2_extras/ss_glossary.sql,sha256=2gLxv34xzKt0vy7hSzJH7a9JiMC3ETrv9MofxQwAibU,13065
|
|
117
|
+
execsql2-2.22.7.data/data/execsql2_extras/ss_upsert.sql,sha256=G_8rQ0VzuKIZHWs24O_WrfzpC5S27R1JsL-bFBR3SUQ,117730
|
|
118
|
+
execsql2-2.22.7.dist-info/METADATA,sha256=DbIBWCsTnJIRQx1h0UKA9kB5kXFMybxn7U9j-xWG8P4,20382
|
|
119
|
+
execsql2-2.22.7.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
|
|
120
|
+
execsql2-2.22.7.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
|
|
121
|
+
execsql2-2.22.7.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
|
|
122
|
+
execsql2-2.22.7.dist-info/licenses/NOTICE,sha256=McYzgxYav3U1OaVsY4Su1sfBrfmplpRdA9b6-gCDQCg,342
|
|
123
|
+
execsql2-2.22.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{execsql2-2.22.6.data → execsql2-2.22.7.data}/data/execsql2_extras/example_config_prompt.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|