Changeset: bed21365afc2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bed21365afc2
Modified Files:
        monetdb5/tools/Tests/mserver5-ipv6.py
        sql/backends/monet5/Tests/dbextra_lock_test.py
        sql/backends/monet5/Tests/shutdown.py
        sql/benchmarks/ssbm/Tests/explain.SQL.py
        sql/benchmarks/ssbm/Tests/load.SQL.py
        sql/benchmarks/ssbm/Tests/plan.SQL.py
        sql/benchmarks/tpch/LOCKED/Tests/load.SQL.py
        sql/benchmarks/tpch/Tests/explain.SQL.py
        sql/benchmarks/tpch/Tests/load.SQL.py
        sql/benchmarks/tpch/Tests/plan.SQL.py
        sql/test/BugDay_2005-10-06_2.8/Tests/MapiClient-dump.SF-905851.SQL.py
        sql/test/BugTracker-2008/Tests/insert-null-byte.SF-2233581.SQL.py
        sql/test/BugTracker-2009/Tests/create_on_ro_db_crash.SF-2830238.SQL.py
        sql/test/BugTracker-2009/Tests/dumping_tables.SF-2776908.SQL.py
        sql/test/BugTracker-2009/Tests/lost_update.SF-2790020.SQL.py
        
sql/test/BugTracker-2009/Tests/set_history_and_drop_table.SF-2607045.SQL.py
        sql/test/BugTracker-2010/Tests/new-readonly-db.Bug-2695.SQL.py
        sql/test/BugTracker-2010/Tests/operation-successful.Bug-2589.SQL.py
        
sql/test/BugTracker-2011/Tests/interrupted-initialization.Bug-2875.SQL.py
        sql/test/BugTracker-2011/Tests/many-connects-cache.Bug-2904.SQL.py
        sql/test/BugTracker-2011/Tests/python-connections-Bug.2901.SQL.py
        sql/test/BugTracker-2011/Tests/user_create_temp_table.Bug-2916.SQL.py
        sql/test/BugTracker-2012/Tests/currenttime.Bug-2781.SQL.py
        sql/test/BugTracker-2012/Tests/day-of-month-localization.Bug-2962.SQL.py
        sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.SQL.py
        sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.stable.err
        sql/test/BugTracker-2013/Tests/corrupt-after-restart.Bug-3282.SQL.py
        sql/test/BugTracker-2013/Tests/empty-strings.Bug-3261.SQL.py
        
sql/test/BugTracker-2013/Tests/psm_functions_and_accessrights.Bug-3300.SQL.py
        sql/test/BugTracker-2014/Tests/acidity-fail.Bug-3635.py
        sql/test/BugTracker-2014/Tests/utf8bom.Bug-3436.SQL.py
        sql/test/BugTracker-2015/Tests/concurrent-queries.Bug-3848.SQL.py
        sql/test/BugTracker-2015/Tests/local-remotetable-crash.Bug-3754.SQL.py
        sql/test/BugTracker-2015/Tests/schemadiff.Bug-3778.SQL.py
        sql/test/BugTracker-2017/Tests/shutdown.Bug-6182.SQL.py
        sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.SQL.py
        
sql/test/BugTracker-2018/Tests/local_replica_table_not_detected.Bug-6620.py
        sql/test/BugTracker-2018/Tests/remote-table-where-is-null.Bug-6601.py
        sql/test/BugTracker-2018/Tests/remote-table-where-not-equal.Bug-6621.py
        sql/test/BugTracker-2019/Tests/alter_table_drop_column.Bug-6749.py
        sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.py
        sql/test/BugTracker-2019/Tests/msqldump-mapi-cache.Bug-6777.py
        sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.py
        
sql/test/BugTracker-2019/Tests/remote-table-non-existent-column.Bug-6750.py
        sql/test/BugTracker-2020/Tests/alter-table-add-column.Bug-6816.py
        sql/test/BugTracker-2020/Tests/functions-not-persist.Bug-6819.SQL.py
        sql/test/BugTracker/Tests/auto_commit.SF-1724151.SQL.py
        sql/test/BugTracker/Tests/connect_crash.SF-1436626.SQL.py
        sql/test/BugTracker/Tests/local_temp_table.SF-1865953.SQL.py
        sql/test/BugTracker/Tests/mdb_starts_with_sql_debug_64.SF-1999354.SQL.py
        sql/test/BugTracker/Tests/set_a_new_user_password.SF-1844050.SQL.py
        
sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.SQL.py
        sql/test/Dependencies/Tests/Dependencies.SQL.py
        sql/test/Dump/Tests/dump-again.SQL.py
        sql/test/Dump/Tests/dump.SQL.py
        sql/test/Dump/Tests/reload-again.SQL.py
        sql/test/Dump/Tests/reload.SQL.py
        sql/test/Skyserver/Tests/Skyserver.SQL.py
        sql/test/Skyserver/Tests/Skyserver_v6.SQL.py
        sql/test/Tests/comment-auth.SQL.py
        sql/test/Tests/comment-dump.SQL.py
        sql/test/Tests/hot-snapshot.py
        sql/test/Tests/like_tests.SQL.py
        sql/test/Tests/null-byte-hang.SQL.py
        sql/test/Tests/zones2.SQL.py
        sql/test/Triggers/Tests/trigger_owner.SQL.py
        sql/test/UserDump/Tests/create.SQL.py
        sql/test/Users/Tests/changePasswordUser.SQL.py
        sql/test/Users/Tests/changeSchemaUser.SQL.py
        sql/test/Users/Tests/columnRights.SQL.py
        sql/test/Users/Tests/copyinto.SQL.py
        sql/test/Users/Tests/dropManyUsers.Bug-3764.SQL.py
        sql/test/Users/Tests/grantMonetdb.SQL.py
        sql/test/Users/Tests/grantMonetdbToRegularUser.Bug-3771.SQL.py
        sql/test/Users/Tests/grantMonetdbToSchemaOwner.Bug-3771.SQL.py
        sql/test/Users/Tests/grantPrivilegesNonDefaultRole.Bug-3365.SQL.py
        sql/test/Users/Tests/grantRevokeAndGrantAgain.Bug-3765.SQL.py
        sql/test/Users/Tests/grantRole.Bug-3772.SQL.py
        sql/test/Users/Tests/renameUser.SQL.py
        sql/test/Users/Tests/role.SQL.py
        sql/test/Users/Tests/role1.SQL.py
        sql/test/Users/Tests/role2.SQL.py
        sql/test/Users/Tests/schemaRights.SQL.py
        sql/test/Users/Tests/table.SQL.py
        sql/test/Users/Tests/test_privs2_p1.SQL.py
        sql/test/Users/Tests/test_privs2_p2.SQL.py
        sql/test/Users/Tests/test_privs_p1.SQL.py
        sql/test/Users/Tests/test_privs_p2.SQL.py
        sql/test/Users/Tests/unknown_user.SQL.py
        sql/test/Users/Tests/withGrantOption.SQL.py
        sql/test/VOC/Tests/VOC.SQL.py
        sql/test/Views/Tests/Views.SQL.py
        sql/test/emptydb/Tests/check.SQL.py
        sql/test/mapi/Tests/utf8test.SQL.py
        sql/test/merge-partitions/Tests/mergepart23.SQL.py
        sql/test/merge-partitions/Tests/mergepart29.SQL.py
        sql/test/miscellaneous/Tests/table_udf_missing_var.py
        sql/test/mserver5-sql-readonly/Tests/mserver5-sql-readonly-table.py
        sql/test/mserver5-sql-readonly/Tests/mserver5-sql-readonly-view.py
        sql/test/remote/Tests/creds.SQL.py
        sql/test/remote/Tests/different_user.SQL.py
        sql/test/remote/Tests/invalid_creds.SQL.py
        sql/test/remote/Tests/ssbm.SQL.py
        sql/test/rename/Tests/rename00.SQL.py
        sql/test/rename/Tests/rename11.py
        sql/test/scripts/Tests/alastair_udf_mergetable_bug.py
        sql/test/scripts/Tests/copy-from-lz4.py
        sql/test/testdb-reload/Tests/reload.py
        sql/test/testdb-upgrade/Tests/upgrade.SQL.py
        sql/test/wlcr/Tests/wlc01.py
        sql/test/wlcr/Tests/wlc100.py
        sql/test/wlcr/Tests/wlc20.py
        sql/test/wlcr/Tests/wlc21.py
        sql/test/wlcr/Tests/wlc30.py
        sql/test/wlcr/Tests/wlc40.py
        sql/test/wlcr/Tests/wlc50.py
        sql/test/wlcr/Tests/wlc70.py
        sql/test/wlcr/Tests/wlc80.py
        sql/test/wlcr/Tests/wlcr00.py
        sql/test/wlcr/Tests/wlr01.py
        sql/test/wlcr/Tests/wlr10.py
        sql/test/wlcr/Tests/wlr100.py
        sql/test/wlcr/Tests/wlr110.py
        sql/test/wlcr/Tests/wlr20.py
        sql/test/wlcr/Tests/wlr30.py
        sql/test/wlcr/Tests/wlr35.py
        sql/test/wlcr/Tests/wlr40.py
        sql/test/wlcr/Tests/wlr50.py
        sql/test/wlcr/Tests/wlr70.py
        sql/test/wlcr/Tests/wlr80.py
        testing/process.py
Branch: Jun2020
Log Message:

Use With Statement Context Managers to automatically clean up.
We use this for killing processes and removing temporary files and
directories.


diffs (truncated from 6985 to 300 lines):

diff --git a/monetdb5/tools/Tests/mserver5-ipv6.py 
b/monetdb5/tools/Tests/mserver5-ipv6.py
--- a/monetdb5/tools/Tests/mserver5-ipv6.py
+++ b/monetdb5/tools/Tests/mserver5-ipv6.py
@@ -4,11 +4,12 @@ try:
 except ImportError:
     import process
 
-server = None
-try:
-    server = process.server(stdin=process.PIPE, stdout=process.PIPE, 
stderr=process.PIPE, ipv6=True)
-    client = process.client('sql', host='::1', server=server, 
stdin=process.PIPE, stdout=process.PIPE, stderr=process.PIPE)
-    cout, cerr = client.communicate('''
+with process.server(stdin=process.PIPE, stdout=process.PIPE,
+                    stderr=process.PIPE, ipv6=True) as server:
+    with process.client('sql', host='::1', server=server,
+                        stdin=process.PIPE, stdout=process.PIPE,
+                        stderr=process.PIPE) as client:
+        cout, cerr = client.communicate('''
 start transaction;
 create table "things" ("col1" int);
 insert into "things" values (1); select "col1" from "things";
@@ -16,12 +17,8 @@ rollback;
 ''')
 
     sout, serr = server.communicate()
-    server = None
     sys.stdout.write(sout)
     sys.stderr.write(serr)
 
     sys.stdout.write(cout)
     sys.stderr.write(cerr)
-finally:
-    if server is not None:
-        server.terminate()
diff --git a/sql/backends/monet5/Tests/dbextra_lock_test.py 
b/sql/backends/monet5/Tests/dbextra_lock_test.py
--- a/sql/backends/monet5/Tests/dbextra_lock_test.py
+++ b/sql/backends/monet5/Tests/dbextra_lock_test.py
@@ -8,22 +8,14 @@ import os
 
 p = os.path.join(os.getenv('GDK_DBFARM'), 'transient_dir')
 
-s1 = s2 = None
-try:
-    s1 = process.server(stdin = process.PIPE, stdout = process.PIPE,
-                        stderr = process.PIPE, dbextra=p)
-    s2 = process.server(stdin = process.PIPE, stdout = process.PIPE,
-                        stderr = process.PIPE, dbextra=p)
+with process.server(stdin=process.PIPE, stdout=process.PIPE,
+                    stderr=process.PIPE, dbextra=p) as s1:
+    with process.server(stdin=process.PIPE, stdout=process.PIPE,
+                        stderr=process.PIPE, dbextra=p) as s2:
+        out, err = s1.communicate()
+        sys.stdout.write(out)
+        sys.stderr.write(err)
 
-    out, err = s1.communicate()
-    sys.stdout.write(out)
-    sys.stderr.write(err)
-
-    out, err = s2.communicate()
-    sys.stdout.write(out)
-    sys.stderr.write(err)
-finally:
-    if s1 is not None:
-        s1.terminate()
-    if s2 is not None:
-        s2.terminate()
+        out, err = s2.communicate()
+        sys.stdout.write(out)
+        sys.stderr.write(err)
diff --git a/sql/backends/monet5/Tests/shutdown.py 
b/sql/backends/monet5/Tests/shutdown.py
--- a/sql/backends/monet5/Tests/shutdown.py
+++ b/sql/backends/monet5/Tests/shutdown.py
@@ -7,9 +7,10 @@ if databasedir == None:
     exit()
 databasedir = os.path.join(databasedir, 'SHUTDOWN_DATABASE')
 
-if os.name == 'nt':
-    os.system('shutdowntest.exe "%s"' % databasedir)
-else:
-    os.system('Mlog -x shutdowntest "%s"' % databasedir)
-
-shutil.rmtree(databasedir)
+try:
+    if os.name == 'nt':
+        os.system('shutdowntest.exe "%s"' % databasedir)
+    else:
+        os.system('Mlog -x shutdowntest "%s"' % databasedir)
+finally:
+    shutil.rmtree(databasedir)
diff --git a/sql/benchmarks/ssbm/Tests/explain.SQL.py 
b/sql/benchmarks/ssbm/Tests/explain.SQL.py
--- a/sql/benchmarks/ssbm/Tests/explain.SQL.py
+++ b/sql/benchmarks/ssbm/Tests/explain.SQL.py
@@ -6,11 +6,11 @@ except ImportError:
 
 TSTSRCDIR = os.environ['TSTSRCDIR']
 
-c = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE)
-c.stdin.write("set optimizer = 'sequential_pipe';\n")
-c.stdin.write('explain\n')
-for ln in open(os.path.join(TSTSRCDIR,"%s.sql" % os.environ['TST'][0:2])):
-    c.stdin.write(ln)
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin=process.PIPE, stdout=process.PIPE, 
stderr=process.PIPE) as c:
+    c.stdin.write("set optimizer = 'sequential_pipe';\n")
+    c.stdin.write('explain\n')
+    for ln in open(os.path.join(TSTSRCDIR,"%s.sql" % os.environ['TST'][0:2])):
+        c.stdin.write(ln)
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
diff --git a/sql/benchmarks/ssbm/Tests/load.SQL.py 
b/sql/benchmarks/ssbm/Tests/load.SQL.py
--- a/sql/benchmarks/ssbm/Tests/load.SQL.py
+++ b/sql/benchmarks/ssbm/Tests/load.SQL.py
@@ -7,14 +7,14 @@ except ImportError:
 TSTSRCDIR = os.environ['TSTSRCDIR']
 DATADIR = (os.path.join(TSTSRCDIR,"SF-0.01") + os.sep).replace('\\', r'\\')
 
-c = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE)
-for ln in open(os.path.join(TSTSRCDIR,"load-sf-0.01.sql")):
-    c.stdin.write(ln.replace('PWD/', DATADIR))
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin=process.PIPE, stdout=process.PIPE, 
stderr=process.PIPE) as c:
+    for ln in open(os.path.join(TSTSRCDIR,"load-sf-0.01.sql")):
+        c.stdin.write(ln.replace('PWD/', DATADIR))
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
 
-c = process.client('sql', stdin = open(os.path.join(TSTSRCDIR,"check1.sql")), 
stdout = process.PIPE, stderr = process.PIPE)
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin=open(os.path.join(TSTSRCDIR,"check1.sql")), 
stdout=process.PIPE, stderr=process.PIPE) as c:
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
diff --git a/sql/benchmarks/ssbm/Tests/plan.SQL.py 
b/sql/benchmarks/ssbm/Tests/plan.SQL.py
--- a/sql/benchmarks/ssbm/Tests/plan.SQL.py
+++ b/sql/benchmarks/ssbm/Tests/plan.SQL.py
@@ -6,10 +6,10 @@ except ImportError:
 
 TSTSRCDIR = os.environ['TSTSRCDIR']
 
-c = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE)
-c.stdin.write('plan\n')
-for ln in open(os.path.join(TSTSRCDIR,"%s.sql" % os.environ['TST'][0:2])):
-    c.stdin.write(ln)
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin=process.PIPE, stdout=process.PIPE, 
stderr=process.PIPE) as c:
+    c.stdin.write('plan\n')
+    for ln in open(os.path.join(TSTSRCDIR,"%s.sql" % os.environ['TST'][0:2])):
+        c.stdin.write(ln)
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
diff --git a/sql/benchmarks/tpch/LOCKED/Tests/load.SQL.py 
b/sql/benchmarks/tpch/LOCKED/Tests/load.SQL.py
--- a/sql/benchmarks/tpch/LOCKED/Tests/load.SQL.py
+++ b/sql/benchmarks/tpch/LOCKED/Tests/load.SQL.py
@@ -9,14 +9,14 @@ TSTDIR = os.environ['TSTDIR']
 SRCDIR = os.path.join(TSTSRCBASE,TSTDIR,os.pardir)
 DATADIR = (os.path.join(SRCDIR,"SF-0.01") + os.sep).replace('\\', r'\\')
 
-c = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE)
-for ln in open(os.path.join(SRCDIR,"load-sf-0.01-LOCKED.sql")):
-    c.stdin.write(ln.replace('PWD/', DATADIR))
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE) as c:
+    for ln in open(os.path.join(SRCDIR,"load-sf-0.01-LOCKED.sql")):
+        c.stdin.write(ln.replace('PWD/', DATADIR))
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
 
-c = process.client('sql', stdin = 
open(os.path.join(os.environ['TSTSRCDIR'],"check1.sql")), stdout = 
process.PIPE, stderr = process.PIPE)
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin = 
open(os.path.join(os.environ['TSTSRCDIR'],"check1.sql")), stdout = 
process.PIPE, stderr = process.PIPE) as c:
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
diff --git a/sql/benchmarks/tpch/Tests/explain.SQL.py 
b/sql/benchmarks/tpch/Tests/explain.SQL.py
--- a/sql/benchmarks/tpch/Tests/explain.SQL.py
+++ b/sql/benchmarks/tpch/Tests/explain.SQL.py
@@ -8,15 +8,15 @@ TSTSRCBASE = os.environ['TSTSRCBASE']
 TSTDIR = os.environ['TSTDIR']
 SRCDIR = os.path.join(TSTSRCBASE,TSTDIR)
 
-c = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE)
-c.stdin.write("set optimizer = 'sequential_pipe';\n")
-query = re.compile(r'^select\n')
-stats = re.compile(r'^select \* from optimizer_stats\(\) stats;\n')
-for ln in open(os.path.join(SRCDIR,"%s.sql" % os.environ['TST'][0:2])):
-    if query.match(ln):
-        c.stdin.write('explain select\n')
-    elif not stats.match(ln):
-        c.stdin.write(ln)
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin=process.PIPE, stdout=process.PIPE, 
stderr=process.PIPE) as c:
+    c.stdin.write("set optimizer = 'sequential_pipe';\n")
+    query = re.compile(r'^select\n')
+    stats = re.compile(r'^select \* from optimizer_stats\(\) stats;\n')
+    for ln in open(os.path.join(SRCDIR,"%s.sql" % os.environ['TST'][0:2])):
+        if query.match(ln):
+            c.stdin.write('explain select\n')
+        elif not stats.match(ln):
+            c.stdin.write(ln)
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
diff --git a/sql/benchmarks/tpch/Tests/load.SQL.py 
b/sql/benchmarks/tpch/Tests/load.SQL.py
--- a/sql/benchmarks/tpch/Tests/load.SQL.py
+++ b/sql/benchmarks/tpch/Tests/load.SQL.py
@@ -9,14 +9,14 @@ TSTDIR = os.environ['TSTDIR']
 SRCDIR = os.path.join(TSTSRCBASE,TSTDIR)
 DATADIR = (os.path.join(SRCDIR,"SF-0.01") + os.sep).replace('\\', r'\\')
 
-c = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE)
-for ln in open(os.path.join(SRCDIR,"load-sf-0.01.sql")):
-    c.stdin.write(ln.replace('PWD/', DATADIR))
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE) as c:
+    for ln in open(os.path.join(SRCDIR,"load-sf-0.01.sql")):
+        c.stdin.write(ln.replace('PWD/', DATADIR))
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
 
-c = process.client('sql', stdin = 
open(os.path.join(os.environ['TSTSRCDIR'],"check1.sql")), stdout = 
process.PIPE, stderr = process.PIPE)
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin = 
open(os.path.join(os.environ['TSTSRCDIR'],"check1.sql")), stdout = 
process.PIPE, stderr = process.PIPE) as c:
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
diff --git a/sql/benchmarks/tpch/Tests/plan.SQL.py 
b/sql/benchmarks/tpch/Tests/plan.SQL.py
--- a/sql/benchmarks/tpch/Tests/plan.SQL.py
+++ b/sql/benchmarks/tpch/Tests/plan.SQL.py
@@ -8,14 +8,14 @@ TSTSRCBASE = os.environ['TSTSRCBASE']
 TSTDIR = os.environ['TSTDIR']
 SRCDIR = os.path.join(TSTSRCBASE,TSTDIR)
 
-c = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE)
-query = re.compile(r'^select\n')
-stats = re.compile(r'^select \* from optimizer_stats\(\) stats;\n')
-for ln in open(os.path.join(SRCDIR,"%s.sql" % os.environ['TST'][0:2])):
-    if query.match(ln):
-        c.stdin.write('plan select\n')
-    elif not stats.match(ln):
-        c.stdin.write(ln)
-out, err = c.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
+with process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr 
= process.PIPE) as c:
+    query = re.compile(r'^select\n')
+    stats = re.compile(r'^select \* from optimizer_stats\(\) stats;\n')
+    for ln in open(os.path.join(SRCDIR,"%s.sql" % os.environ['TST'][0:2])):
+        if query.match(ln):
+            c.stdin.write('plan select\n')
+        elif not stats.match(ln):
+            c.stdin.write(ln)
+    out, err = c.communicate()
+    sys.stdout.write(out)
+    sys.stderr.write(err)
diff --git 
a/sql/test/BugDay_2005-10-06_2.8/Tests/MapiClient-dump.SF-905851.SQL.py 
b/sql/test/BugDay_2005-10-06_2.8/Tests/MapiClient-dump.SF-905851.SQL.py
--- a/sql/test/BugDay_2005-10-06_2.8/Tests/MapiClient-dump.SF-905851.SQL.py
+++ b/sql/test/BugDay_2005-10-06_2.8/Tests/MapiClient-dump.SF-905851.SQL.py
@@ -9,14 +9,14 @@ def client(cmd, infile = None):
         f = open(infile)
     else:
         f = None
-    clt = process.client(cmd, stdin = f,
-                         stdout = process.PIPE, stderr = process.PIPE,
-                         log = True)
-    if f is not None:
-        f.close()
-    out, err = clt.communicate()
-    sys.stdout.write(out)
-    sys.stderr.write(err)
+    with process.client(cmd, stdin = f,
+                        stdout = process.PIPE, stderr = process.PIPE,
+                        log = True) as clt:
+        if f is not None:
+            f.close()
+        out, err = clt.communicate()
+        sys.stdout.write(out)
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to