• R/O
  • SSH

execsql: Commit

Default repository for execsql.py


Commit MetaInfo

Révisionb32d9705dfc15928ff2fb65c06598d5d763cfbf9 (tree)
l'heure2021-10-25 22:13:48
Auteurrdnielsen
Commiterrdnielsen

Message de Log

Re-ordered regular expressions for some metacommands.

Change Summary

Modification

diff -r 3197bf18984a -r b32d9705dfc1 execsql/execsql.py
--- a/execsql/execsql.py Tue Oct 19 19:02:46 2021 -0700
+++ b/execsql/execsql.py Mon Oct 25 06:13:48 2021 -0700
@@ -27,12 +27,12 @@
2727 #
2828 # ===============================================================================
2929
30-__version__ = "1.94.1"
31-__vdate = "2021-10-19"
30+__version__ = "1.94.2"
31+__vdate = "2021-10-22"
3232
3333 primary_vno = 1
3434 secondary_vno = 94
35-tertiary_vno = 1
35+tertiary_vno = 2
3636
3737 import os
3838 import os.path
@@ -9300,9 +9300,9 @@
93009300 global err_halt_writespec
93019301 err_halt_writespec = WriteSpec(message=msg, dest=outf, tee=tee)
93029302
9303-metacommandlist.add(ins_fn_rxs(r'^\s*ON\s+ERROR_HALT\s+WRITE\s+"(?P<text>([^"]|\n)*)"(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_error_halt_write)
93049303 metacommandlist.add(ins_fn_rxs(r'^\s*ON\s+ERROR_HALT\s+WRITE\s+\'(?P<text>([^\']|\n)*)\'(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_error_halt_write)
93059304 metacommandlist.add(ins_fn_rxs(r'^\s*ON\s+ERROR_HALT\s+WRITE\s+\[(?P<text>([^\]]|\n)*)\](?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_error_halt_write)
9305+metacommandlist.add(ins_fn_rxs(r'^\s*ON\s+ERROR_HALT\s+WRITE\s+"(?P<text>([^"]|\n)*)"(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_error_halt_write)
93069306
93079307
93089308
@@ -9350,9 +9350,9 @@
93509350 global cancel_halt_writespec
93519351 cancel_halt_writespec = WriteSpec(message=msg, dest=outf, tee=tee)
93529352
9353-metacommandlist.add(ins_fn_rxs(r'^\s*ON\s+CANCEL_HALT\s+WRITE\s+"(?P<text>([^"]|\n)*)"(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_cancel_halt_write)
93549353 metacommandlist.add(ins_fn_rxs(r'^\s*ON\s+CANCEL_HALT\s+WRITE\s+\'(?P<text>([^\']|\n)*)\'(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_cancel_halt_write)
93559354 metacommandlist.add(ins_fn_rxs(r'^\s*ON\s+CANCEL_HALT\s+WRITE\s+\[(?P<text>([^\]]|\n)*)\](?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_cancel_halt_write)
9355+metacommandlist.add(ins_fn_rxs(r'^\s*ON\s+CANCEL_HALT\s+WRITE\s+"(?P<text>([^"]|\n)*)"(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_cancel_halt_write)
93569356
93579357
93589358
@@ -9854,12 +9854,12 @@
98549854 exec_log.log_exit_halt(script, lno, msg=errmsg)
98559855 exit_now(errlevel, None)
98569856
9857-metacommandlist.add(ins_fn_rxs(r'^\s*HALT\s*(?:\s+MESSAGE)?(?:\s+"(?P<errmsg>.+)"(?:\s+(?P<tee>TEE\s+TO\s+', r'))?)?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt)
98589857 metacommandlist.add(ins_fn_rxs(r'^\s*HALT\s*(?:\s+MESSAGE)?(?:\s+\[(?P<errmsg>.+)\](?:\s+(?P<tee>TEE\s+TO\s+', r'))?)?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt)
98599858 metacommandlist.add(ins_fn_rxs(r'^\s*HALT\s*(?:\s+MESSAGE)?(?:\s+\`(?P<errmsg>.+)\`(?:\s+(?P<tee>TEE\s+TO\s+', r'))?)?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt)
98609859 metacommandlist.add(ins_fn_rxs(r'^\s*HALT\s*(?:\s+MESSAGE)?(?:\s+\#(?P<errmsg>.+)\#(?:\s+(?P<tee>TEE\s+TO\s+', r'))?)?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt)
98619860 metacommandlist.add(ins_fn_rxs(r'^\s*HALT\s*(?:\s+MESSAGE)?(?:\s+\'(?P<errmsg>.+)\'(?:\s+(?P<tee>TEE\s+TO\s+', r'))?)?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt)
98629861 metacommandlist.add(ins_fn_rxs(r'^\s*HALT\s*(?:\s+MESSAGE)?(?:\s+\~(?P<errmsg>.+)\~(?:\s+(?P<tee>TEE\s+TO\s+', r'))?)?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt)
9862+metacommandlist.add(ins_fn_rxs(r'^\s*HALT\s*(?:\s+MESSAGE)?(?:\s+"(?P<errmsg>.+)"(?:\s+(?P<tee>TEE\s+TO\s+', r'))?)?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt)
98639863
98649864
98659865 #**** BEGIN BATCH
@@ -10028,8 +10028,6 @@
1002810028 exec_log.log_exit_halt(*current_script_line(), msg=errmsg)
1002910029 exit_now(errlevel, None)
1003010030
10031-metacommandlist.add(ins_table_rxs(ins_fn_rxs(r'^\s*HALT(?:\s+MESSAGE)?\s+"(?P<errmsg>(.|\n)*)"(?:\s+(?P<tee>TEE\s+TO\s+', r'))?(?:\s+DISPLAY\s+'),
10032- r')?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt_msg)
1003310031 metacommandlist.add(ins_table_rxs(ins_fn_rxs(r'^\s*HALT(?:\s+MESSAGE)?\s+\[(?P<errmsg>(.|\n)*)\](?:\s+(?P<tee>TEE\s+TO\s+', r'))?(?:\s+DISPLAY\s+'),
1003410032 r')?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt_msg)
1003510033 metacommandlist.add(ins_table_rxs(ins_fn_rxs(r'^\s*HALT(?:\s+MESSAGE)?\s+\#(?P<errmsg>(.|\n)*)\#(?:\s+(?P<tee>TEE\s+TO\s+', r'))?(?:\s+DISPLAY\s+'),
@@ -10040,6 +10038,8 @@
1004010038 r')?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt_msg)
1004110039 metacommandlist.add(ins_table_rxs(ins_fn_rxs(r'^\s*HALT(?:\s+MESSAGE)?\s+\~(?P<errmsg>(.|\n)*)\~(?:\s+(?P<tee>TEE\s+TO\s+', r'))?(?:\s+DISPLAY\s+'),
1004210040 r')?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt_msg)
10041+metacommandlist.add(ins_table_rxs(ins_fn_rxs(r'^\s*HALT(?:\s+MESSAGE)?\s+"(?P<errmsg>(.|\n)*)"(?:\s+(?P<tee>TEE\s+TO\s+', r'))?(?:\s+DISPLAY\s+'),
10042+ r')?(?:\s+EXIT_STATUS\s+(?P<errorlevel>\d+))?\s*$'), x_halt_msg)
1004310043
1004410044
1004510045 #**** PROMPT ENTER_SUB
@@ -11462,10 +11462,11 @@
1146211462 return None
1146311463
1146411464 metacommandlist.add(
11465- ins_table_rxs(r'^\s*PROMPT\s+ASK\s+"(?P<question>[^"]+)"\s+SUB\s+(?P<match>~?\w+)(?:\s+DISPLAY\s+', r')?\s*$') +
11466- ins_table_rxs(r"^\s*PROMPT\s+ASK\s+'(?P<question>[^']+)'\s+SUB\s+(?P<match>~?\w+)(?:\s+DISPLAY\s+", r')?\s*$') +
11467- ins_table_rxs(r'^\s*PROMPT\s+ASK\s+\[(?P<question>[^\]]+)\]\s+SUB\s+(?P<match>~?\w+)(?:\s+DISPLAY\s+', r')?\s*$'),
11468- x_prompt_ask)
11465+ ins_table_rxs(r"^\s*PROMPT\s+ASK\s+'(?P<question>[^']+)'\s+SUB\s+(?P<match>~?\w+)(?:\s+DISPLAY\s+", r')?\s*$'), x_prompt_ask)
11466+metacommandlist.add(
11467+ ins_table_rxs(r'^\s*PROMPT\s+ASK\s+\[(?P<question>[^\]]+)\]\s+SUB\s+(?P<match>~?\w+)(?:\s+DISPLAY\s+', r')?\s*$'), x_prompt_ask)
11468+metacommandlist.add(
11469+ ins_table_rxs(r'^\s*PROMPT\s+ASK\s+"(?P<question>[^"]+)"\s+SUB\s+(?P<match>~?\w+)(?:\s+DISPLAY\s+', r')?\s*$'), x_prompt_ask)
1146911470
1147011471
1147111472 #**** SELECT_SUB
@@ -11746,12 +11747,12 @@
1174611747 exec_log.log_user_msg(msg)
1174711748 return None
1174811749
11749-metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+"(?P<text>([^"]|\n)*)"(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11750-metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\'(?P<text>([^\']|\n)*)\'(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11750+metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\~(?P<text>([^\~]|\n)*)\~(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11751+metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\#(?P<text>([^\#]|\n)*)\#(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11752+metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\`(?P<text>([^\`]|\n)*)\`(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
1175111753 metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\[(?P<text>([^\]]|\n)*)\](?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11752-metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\`(?P<text>([^\`]|\n)*)\`(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11753-metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\#(?P<text>([^\#]|\n)*)\#(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11754-metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\~(?P<text>([^\~]|\n)*)\~(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11754+metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+\'(?P<text>([^\']|\n)*)\'(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
11755+metacommandlist.add(ins_fn_rxs(r'^\s*WRITE\s+"(?P<text>([^"]|\n)*)"(?:(?:\s+(?P<tee>TEE))?\s+TO\s+', r')?\s*$'), x_write)
1175511756
1175611757
1175711758
@@ -11826,8 +11827,8 @@
1182611827 return dbs.current().schema_exists(schemaname)
1182711828
1182811829 conditionallist.add((
11829- r'^SCHEMA_EXISTS\(\s*"(?P<schema>[A-Za-z0-9_\-\: ]+)"\s*\)',
11830- r'^SCHEMA_EXISTS\(\s*(?P<schema>[A-Za-z0-9_\-\: ]+)\s*\)'
11830+ r'^SCHEMA_EXISTS\(\s*(?P<schema>[A-Za-z0-9_\-\: ]+)\s*\)',
11831+ r'^SCHEMA_EXISTS\(\s*"(?P<schema>[A-Za-z0-9_\-\: ]+)"\s*\)'
1183111832 ), xf_schemaexists)
1183211833
1183311834
@@ -11837,10 +11838,10 @@
1183711838 return dbs.current().table_exists(tablename.strip(), schemaname)
1183811839
1183911840 conditionallist.add((
11840- r'^TABLE_EXISTS\(\s*(?:(?P<schema>[A-Za-z0-9_\-\/]+)\.)?(?P<tablename>[A-Za-z0-9_\-\/]+)\)',
11841+ r'^TABLE_EXISTS\(\s*(?:(?P<schema>[A-Za-z0-9_\-\/\: ]+)\.)?(?P<tablename>[A-Za-z0-9_\-\/\: ]+)\)',
11842+ r'^TABLE_EXISTS\(\s*(?:\[(?P<schema>[A-Za-z0-9_\-\/\: ]+)\]\.)?\[(?P<tablename>[A-Za-z0-9_\-\/\: ]+)\]\)',
1184111843 r'^TABLE_EXISTS\(\s*(?:"(?P<schema>[A-Za-z0-9_\-\/\: ]+)"\.)?"(?P<tablename>[A-Za-z0-9_\-\/\: ]+)"\)',
11842- r'^TABLE_EXISTS\(\s*(?:\[(?P<schema>[A-Za-z0-9_\-\/\: ]+)\]\.)?\[(?P<tablename>[A-Za-z0-9_\-\/\: ]+)\]\)',
11843- r'^TABLE_EXISTS\(\s*(?:(?P<schema>[A-Za-z0-9_\-\/\: ]+)\.)?(?P<tablename>[A-Za-z0-9_\-\/\: ]+)\)'
11844+ r'^TABLE_EXISTS\(\s*(?:(?P<schema>[A-Za-z0-9_\-\/]+)\.)?(?P<tablename>[A-Za-z0-9_\-\/]+)\)'
1184411845 ), xf_tableexists)
1184511846
1184611847 def xf_roleexists(**kwargs):
@@ -11848,8 +11849,8 @@
1184811849 return dbs.current().role_exists(rolename)
1184911850
1185011851 conditionallist.add((
11851- r'^ROLE_EXISTS\(\s*"(?P<role>[A-Za-z0-9_\-\:\$ ]+)"\s*\)',
11852- r'^ROLE_EXISTS\(\s*(?P<role>[A-Za-z0-9_\-\:\$ ]+)\s*\)'
11852+ r'^ROLE_EXISTS\(\s*(?P<role>[A-Za-z0-9_\-\:\$ ]+)\s*\)',
11853+ r'^ROLE_EXISTS\(\s*"(?P<role>[A-Za-z0-9_\-\:\$ ]+)"\s*\)'
1185311854 ), xf_roleexists)
1185411855
1185511856
@@ -11895,20 +11896,20 @@
1189511896 are_eq = s1 == s2
1189611897 return are_eq
1189711898
11898-conditionallist.add(r'^\s*EQUAL(S)?\s*\(\s*"(?P<string1>[^"]+)"\s*,\s*"(?P<string2>[^"]+)"\s*\)', xf_equals)
11899+conditionallist.add(r'^\s*EQUAL(S)?\s*\(\s*(?P<string1>[^ )]+)\s*,\s*(?P<string2>[^ )]+)\s*\)', xf_equals)
11900+conditionallist.add(r'^\s*EQUAL(S)?\s*\(\s*"(?P<string1>[^"]+)"\s*,\s*(?P<string2>[^ )]+)\s*\)', xf_equals)
1189911901 conditionallist.add(r'^\s*EQUAL(S)?\s*\(\s*(?P<string1>[^ )]+)\s*,\s*"(?P<string2>[^"]+)"\s*\)', xf_equals)
11900-conditionallist.add(r'^\s*EQUAL(S)?\s*\(\s*"(?P<string1>[^"]+)"\s*,\s*(?P<string2>[^ )]+)\s*\)', xf_equals)
11901-conditionallist.add(r'^\s*EQUAL(S)?\s*\(\s*(?P<string1>[^ )]+)\s*,\s*(?P<string2>[^ )]+)\s*\)', xf_equals)
11902+conditionallist.add(r'^\s*EQUAL(S)?\s*\(\s*"(?P<string1>[^"]+)"\s*,\s*"(?P<string2>[^"]+)"\s*\)', xf_equals)
1190211903
1190311904 def xf_identical(**kwargs):
1190411905 s1 = kwargs["string1"].strip('"')
1190511906 s2 = kwargs["string2"].strip('"')
1190611907 return s1 == s2
1190711908
11908-conditionallist.add(r'^\s*IDENTICAL\s*\(\s*"(?P<string1>[^"]+)"\s*,\s*"(?P<string2>[^"]+)"\s*\)', xf_identical)
11909+conditionallist.add(r'^\s*IDENTICAL\s*\(\s*(?P<string1>[^ ,)]+)\s*,\s*(?P<string2>[^ )]+)\s*\)', xf_identical)
11910+conditionallist.add(r'^\s*IDENTICAL\s*\(\s*"(?P<string1>[^"]+)"\s*,\s*(?P<string2>[^ )]+)\s*\)', xf_identical)
1190911911 conditionallist.add(r'^\s*IDENTICAL\s*\(\s*(?P<string1>[^ ,]+)\s*,\s*"(?P<string2>[^"]+)"\s*\)', xf_identical)
11910-conditionallist.add(r'^\s*IDENTICAL\s*\(\s*"(?P<string1>[^"]+)"\s*,\s*(?P<string2>[^ )]+)\s*\)', xf_identical)
11911-conditionallist.add(r'^\s*IDENTICAL\s*\(\s*(?P<string1>[^ ,)]+)\s*,\s*(?P<string2>[^ )]+)\s*\)', xf_identical)
11912+conditionallist.add(r'^\s*IDENTICAL\s*\(\s*"(?P<string1>[^"]+)"\s*,\s*"(?P<string2>[^"]+)"\s*\)', xf_identical)
1191211913
1191311914 def xf_isnull(**kwargs):
1191411915 item = kwargs["item"].strip().strip(u'"')
@@ -11956,18 +11957,18 @@
1195611957 return unquoted(kwargs["value"].strip()).lower() in ('true', 'yes', '1')
1195711958
1195811959 conditionallist.add((
11959- r'^\s*(?P<value>True)\s*',
11960- r'^\s*(?P<value>"True")\s*',
11961- r'^\s*(?P<value>False)\s*',
11962- r'^\s*(?P<value>"False")\s*',
11960+ r'^\s*(?P<value>1)\s*',
11961+ r'^\s*(?P<value>"1")\s*',
11962+ r'^\s*(?P<value>0)\s*',
11963+ r'^\s*(?P<value>"0")\s*',
1196311964 r'^\s*(?P<value>Yes)\s*',
1196411965 r'^\s*(?P<value>"Yes")\s*',
1196511966 r'^\s*(?P<value>No)\s*',
1196611967 r'^\s*(?P<value>"No")\s*',
11967- r'^\s*(?P<value>1)\s*',
11968- r'^\s*(?P<value>"1")\s*',
11969- r'^\s*(?P<value>0)\s*',
11970- r'^\s*(?P<value>"0")\s*'
11968+ r'^\s*(?P<value>"False")\s*',
11969+ r'^\s*(?P<value>False)\s*',
11970+ r'^\s*(?P<value>"True")\s*',
11971+ r'^\s*(?P<value>True)\s*'
1197111972 ), xf_boolliteral)
1197211973
1197311974
@@ -12009,12 +12010,12 @@
1200912010 return dbs.current().column_exists(tablename.strip(), columnname.strip(), schemaname)
1201012011
1201112012 conditionallist.add((
12012- r'^COLUMN_EXISTS\(\s*"(?P<columnname>[A-Za-z0-9_\-\: ]+)"\s+IN\s+(?:"(?P<schema>[A-Za-z0-9_\-\: ]+)"\.)?"(?P<tablename>[A-Za-z0-9_\-\: ]+)"\)',
12013- r'^COLUMN_EXISTS\(\s*"(?P<columnname>[A-Za-z0-9_\-\: ]+)"\s+IN\s+(?:\[(?P<schema>[A-Za-z0-9_\-\: ]+)\]\.)?\[(?P<tablename>[A-Za-z0-9_\-\: ]+)\]\)',
12013+ r'^COLUMN_EXISTS\(\s*(?P<columnname>[A-Za-z0-9_\-\:]+)\s+IN\s+(?:(?P<schema>[A-Za-z0-9_\-\: ]+)\.)?(?P<tablename>[A-Za-z0-9_\-\: ]+)\)',
12014+ r'^COLUMN_EXISTS\(\s*(?P<columnname>[A-Za-z0-9_\-\:]+)\s+IN\s+(?:\[(?P<schema>[A-Za-z0-9_\-\: ]+)\]\.)?\[(?P<tablename>[A-Za-z0-9_\-\: ]+)\]\)',
12015+ r'^COLUMN_EXISTS\(\s*(?P<columnname>[A-Za-z0-9_\-\:]+)\s+IN\s+(?:"(?P<schema>[A-Za-z0-9_\-\: ]+)"\.)?"(?P<tablename>[A-Za-z0-9_\-\: ]+)"\)',
1201412016 r'^COLUMN_EXISTS\(\s*"(?P<columnname>[A-Za-z0-9_\-\: ]+)"\s+IN\s+(?:(?P<schema>[A-Za-z0-9_\-\: ]+)\.)?(?P<tablename>[A-Za-z0-9_\-\: ]+)\)',
12015- r'^COLUMN_EXISTS\(\s*(?P<columnname>[A-Za-z0-9_\-\:]+)\s+IN\s+(?:"(?P<schema>[A-Za-z0-9_\-\: ]+)"\.)?"(?P<tablename>[A-Za-z0-9_\-\: ]+)"\)',
12016- r'^COLUMN_EXISTS\(\s*(?P<columnname>[A-Za-z0-9_\-\:]+)\s+IN\s+(?:\[(?P<schema>[A-Za-z0-9_\-\: ]+)\]\.)?\[(?P<tablename>[A-Za-z0-9_\-\: ]+)\]\)',
12017- r'^COLUMN_EXISTS\(\s*(?P<columnname>[A-Za-z0-9_\-\:]+)\s+IN\s+(?:(?P<schema>[A-Za-z0-9_\-\: ]+)\.)?(?P<tablename>[A-Za-z0-9_\-\: ]+)\)'
12017+ r'^COLUMN_EXISTS\(\s*"(?P<columnname>[A-Za-z0-9_\-\: ]+)"\s+IN\s+(?:\[(?P<schema>[A-Za-z0-9_\-\: ]+)\]\.)?\[(?P<tablename>[A-Za-z0-9_\-\: ]+)\]\)',
12018+ r'^COLUMN_EXISTS\(\s*"(?P<columnname>[A-Za-z0-9_\-\: ]+)"\s+IN\s+(?:"(?P<schema>[A-Za-z0-9_\-\: ]+)"\.)?"(?P<tablename>[A-Za-z0-9_\-\: ]+)"\)'
1201812019 ), xf_columnexists)
1201912020
1202012021 def xf_aliasdefined(**kwargs):
diff -r 3197bf18984a -r b32d9705dfc1 setup.py
--- a/setup.py Tue Oct 19 19:02:46 2021 -0700
+++ b/setup.py Mon Oct 25 06:13:48 2021 -0700
@@ -5,7 +5,7 @@
55 long_description = f.read()
66
77 setuptools.setup(name='execsql',
8- version='1.94.1',
8+ version='1.94.2',
99 description="Runs a SQL script against a PostgreSQL, MS-Access, SQLite, MS-SQL-Server, MySQL, MariaDB, Firebird, 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. Data can be exported in 18 different formats, including CSV, TSV, ODS, HTML, JSON, LaTeX, and Markdown tables, and using custom templates.",
1010 author='Dreas Nielsen',
1111 author_email='dreas.nielsen@gmail.com',
Afficher sur ancien navigateur de dépôt.