Changeset: e24340bdb133 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e24340bdb133
Added Files:
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.test
sql/test/Users/Tests/changeSchemaUser.test
sql/test/Users/Tests/columnRights.test
sql/test/Users/Tests/copyfrom.csv
sql/test/Users/Tests/copyinto.test.in
sql/test/Users/Tests/function_privs.test
sql/test/Users/Tests/grantMonetdb.test
sql/test/Users/Tests/role.test
sql/test/Users/Tests/schemaRights.test
sql/test/Users/Tests/table.test
sql/test/Users/Tests/table_privs.test
sql/test/Users/Tests/userCallFunction.test
sql/test/Users/Tests/user_default_role.test
sql/test/Users/Tests/user_default_schema.test
sql/test/Users/Tests/view_privs.test
sql/test/Users/Tests/view_privs_chain.test
sql/test/Users/Tests/withGrantOption.test
Removed Files:
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.py
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.sql
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out.32bit
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/function_privs.SQL.py
sql/test/Users/Tests/grantMonetdb.SQL.py
sql/test/Users/Tests/role.SQL.py
sql/test/Users/Tests/schemaRights.SQL.py
sql/test/Users/Tests/table.SQL.py
sql/test/Users/Tests/table_privs.SQL.py
sql/test/Users/Tests/userCallFunction.SQL.py
sql/test/Users/Tests/user_default_role.SQL.py
sql/test/Users/Tests/user_default_schema.SQL.py
sql/test/Users/Tests/view_privs.SQL.py
sql/test/Users/Tests/view_privs_chain.SQL.py
sql/test/Users/Tests/withGrantOption.SQL.py
Modified Files:
sql/test/FeatureRequests/Tests/All
sql/test/Users/Tests/createUserRollback.SQL.py
Branch: Sep2022
Log Message:
Converted to .test format.
diffs (truncated from 2935 to 300 lines):
diff --git a/sql/test/FeatureRequests/Tests/All
b/sql/test/FeatureRequests/Tests/All
--- a/sql/test/FeatureRequests/Tests/All
+++ b/sql/test/FeatureRequests/Tests/All
@@ -5,7 +5,7 @@ foreign_key_outer_join_dead_code_elimina
foreign_key_outer_join_dead_code_elimination-plan-1join-view
foreign_key_outer_join_dead_code_elimination-plan-2join-query
foreign_key_outer_join_dead_code_elimination-plan-2join-view
-foreign_key_outer_join_dead_code_elimination-plan-3join-query
+!ARCH_BITS32?foreign_key_outer_join_dead_code_elimination-plan-3join-query
foreign_key_outer_join_dead_code_elimination-explain-0join-query
foreign_key_outer_join_dead_code_elimination-explain-0join-view
foreign_key_outer_join_dead_code_elimination-explain-1join-query
diff --git
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.py
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.py
deleted file mode 100644
---
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from MonetDBtesting.sqltest import SQLTestCase
-import os
-
-with SQLTestCase() as tc:
- tc.connect()
- with
open('foreign_key_outer_join_dead_code_elimination-plan-3join-query.sql') as f:
- suffix = '.32bit' if os.getenv('TST_BITS', '') == '32bit' else ''
- tc.execute(query=None, client='mclient', stdin=f)\
-
.assertMatchStableOut(fout='foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out%s'
% (suffix))
diff --git
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.sql
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.sql
deleted file mode 100644
---
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-plan select count(*) from pk1 join fk on fk.fk1 = pk1.pk1;
-plan select id from pk1 join fk on fk.fk1 = pk1.pk1 order by id;
-plan select count(*) from pk2 join (pk1 join fk on fk.fk1 = pk1.pk1) on fk.fk2
= pk2.pk2;
-plan select id from pk2 join (pk1 join fk on fk.fk1 = pk1.pk1) on fk.fk2 =
pk2.pk2 order by id;
-plan select id, v1 from pk2 join (pk1 join fk on fk.fk1 = pk1.pk1) on fk.fk2 =
pk2.pk2 order by id;
-plan select id, v2 from pk2 join (pk1 join fk on fk.fk1 = pk1.pk1) on fk.fk2 =
pk2.pk2 order by id;
diff --git
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
deleted file mode 100644
---
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
+++ /dev/null
@@ -1,66 +0,0 @@
-% .plan # table_name
-% rel # name
-% clob # type
-% 80 # length
-project (
-| group by (
-| | select (
-| | | table("sys"."fk") [ "fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey"
]
-| | ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(63) NULL) ]
-| ) [ ] [ "sys"."count"() NOT NULL UNIQUE as "%1"."%1" ]
-) [ "%1"."%1" NOT NULL UNIQUE ]
-% .plan # table_name
-% rel # name
-% clob # type
-% 114 # length
-project (
-| select (
-| | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey" ]
-| ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(63) NULL) ]
-) [ "fk"."id" NOT NULL UNIQUE HASHCOL ] [ "fk"."id" ASC NOT NULL UNIQUE
HASHCOL ]
-% .plan # table_name
-% rel # name
-% clob # type
-% 134 # length
-project (
-| group by (
-| | select (
-| | | table("sys"."fk") [ "fk"."%fk_fk1_fkey" JOINIDX
"sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey" JOINIDX "sys"."fk"."fk_fk2_fkey" ]
-| | ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(63) NULL), ("fk"."%fk_fk1_fkey") ! *
= (oid(63) NULL) ]
-| ) [ ] [ "sys"."count"() NOT NULL UNIQUE as "%1"."%1" ]
-) [ "%1"."%1" NOT NULL UNIQUE ]
-% .plan # table_name
-% rel # name
-% clob # type
-% 168 # length
-project (
-| select (
-| | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ]
-| ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(63) NULL), ("fk"."%fk_fk1_fkey") ! * =
(oid(63) NULL) ]
-) [ "fk"."id" NOT NULL UNIQUE HASHCOL ] [ "fk"."id" ASC NOT NULL UNIQUE
HASHCOL ]
-% .plan # table_name
-% rel # name
-% clob # type
-% 171 # length
-project (
-| join (
-| | semijoin (
-| | | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ],
-| | | table("sys"."pk2") [ "pk2"."%TID%" NOT NULL UNIQUE ]
-| | ) [ ("fk"."%fk_fk2_fkey") = ("pk2"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk2_fkey" ],
-| | table("sys"."pk1") [ "pk1"."v1", "pk1"."%TID%" NOT NULL UNIQUE ]
-| ) [ ("fk"."%fk_fk1_fkey") = ("pk1"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk1_fkey" ]
-) [ "fk"."id" NOT NULL HASHCOL , "pk1"."v1" ] [ "fk"."id" ASC NOT NULL HASHCOL
]
-% .plan # table_name
-% rel # name
-% clob # type
-% 171 # length
-project (
-| join (
-| | semijoin (
-| | | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ],
-| | | table("sys"."pk1") [ "pk1"."%TID%" NOT NULL UNIQUE ]
-| | ) [ ("fk"."%fk_fk1_fkey") = ("pk1"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk1_fkey" ],
-| | table("sys"."pk2") [ "pk2"."v2", "pk2"."%TID%" NOT NULL UNIQUE ]
-| ) [ ("fk"."%fk_fk2_fkey") = ("pk2"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk2_fkey" ]
-) [ "fk"."id" NOT NULL HASHCOL , "pk2"."v2" ] [ "fk"."id" ASC NOT NULL HASHCOL
]
diff --git
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out.32bit
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out.32bit
deleted file mode 100644
---
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out.32bit
+++ /dev/null
@@ -1,66 +0,0 @@
-% .plan # table_name
-% rel # name
-% clob # type
-% 80 # length
-project (
-| group by (
-| | select (
-| | | table("sys"."fk") [ "fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey"
]
-| | ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(31) NULL) ]
-| ) [ ] [ "sys"."count"() NOT NULL UNIQUE as "%1"."%1" ]
-) [ "%1"."%1" NOT NULL UNIQUE ]
-% .plan # table_name
-% rel # name
-% clob # type
-% 114 # length
-project (
-| select (
-| | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey" ]
-| ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(31) NULL) ]
-) [ "fk"."id" NOT NULL UNIQUE HASHCOL ] [ "fk"."id" ASC NOT NULL UNIQUE
HASHCOL ]
-% .plan # table_name
-% rel # name
-% clob # type
-% 134 # length
-project (
-| group by (
-| | select (
-| | | table("sys"."fk") [ "fk"."%fk_fk1_fkey" JOINIDX
"sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey" JOINIDX "sys"."fk"."fk_fk2_fkey" ]
-| | ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(31) NULL), ("fk"."%fk_fk1_fkey") ! *
= (oid(31) NULL) ]
-| ) [ ] [ "sys"."count"() NOT NULL UNIQUE as "%1"."%1" ]
-) [ "%1"."%1" NOT NULL UNIQUE ]
-% .plan # table_name
-% rel # name
-% clob # type
-% 168 # length
-project (
-| select (
-| | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ]
-| ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(31) NULL), ("fk"."%fk_fk1_fkey") ! * =
(oid(31) NULL) ]
-) [ "fk"."id" NOT NULL UNIQUE HASHCOL ] [ "fk"."id" ASC NOT NULL UNIQUE
HASHCOL ]
-% .plan # table_name
-% rel # name
-% clob # type
-% 171 # length
-project (
-| join (
-| | semijoin (
-| | | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ],
-| | | table("sys"."pk2") [ "pk2"."%TID%" NOT NULL UNIQUE ]
-| | ) [ ("fk"."%fk_fk2_fkey") = ("pk2"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk2_fkey" ],
-| | table("sys"."pk1") [ "pk1"."v1", "pk1"."%TID%" NOT NULL UNIQUE ]
-| ) [ ("fk"."%fk_fk1_fkey") = ("pk1"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk1_fkey" ]
-) [ "fk"."id" NOT NULL HASHCOL , "pk1"."v1" ] [ "fk"."id" ASC NOT NULL HASHCOL
]
-% .plan # table_name
-% rel # name
-% clob # type
-% 171 # length
-project (
-| join (
-| | semijoin (
-| | | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ],
-| | | table("sys"."pk1") [ "pk1"."%TID%" NOT NULL UNIQUE ]
-| | ) [ ("fk"."%fk_fk1_fkey") = ("pk1"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk1_fkey" ],
-| | table("sys"."pk2") [ "pk2"."v2", "pk2"."%TID%" NOT NULL UNIQUE ]
-| ) [ ("fk"."%fk_fk2_fkey") = ("pk2"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk2_fkey" ]
-) [ "fk"."id" NOT NULL HASHCOL , "pk2"."v2" ] [ "fk"."id" ASC NOT NULL HASHCOL
]
diff --git
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.test
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.test
new file mode 100644
--- /dev/null
+++
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.test
@@ -0,0 +1,66 @@
+query T nosort
+plan select count(*) from pk1 join fk on fk.fk1 = pk1.pk1
+----
+project (
+| group by (
+| | select (
+| | | table("sys"."fk") [ "fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey"
]
+| | ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(63) NULL) ]
+| ) [ ] [ "sys"."count"() NOT NULL UNIQUE as "%1"."%1" ]
+) [ "%1"."%1" NOT NULL UNIQUE ]
+
+query T nosort
+plan select id from pk1 join fk on fk.fk1 = pk1.pk1 order by id
+----
+project (
+| select (
+| | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey" ]
+| ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(63) NULL) ]
+) [ "fk"."id" NOT NULL UNIQUE HASHCOL ] [ "fk"."id" ASC NOT NULL UNIQUE
HASHCOL ]
+
+query T nosort
+plan select count(*) from pk2 join (pk1 join fk on fk.fk1 = pk1.pk1) on fk.fk2
= pk2.pk2
+----
+project (
+| group by (
+| | select (
+| | | table("sys"."fk") [ "fk"."%fk_fk1_fkey" JOINIDX
"sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey" JOINIDX "sys"."fk"."fk_fk2_fkey" ]
+| | ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(63) NULL), ("fk"."%fk_fk1_fkey") ! *
= (oid(63) NULL) ]
+| ) [ ] [ "sys"."count"() NOT NULL UNIQUE as "%1"."%1" ]
+) [ "%1"."%1" NOT NULL UNIQUE ]
+
+query T nosort
+plan select id from pk2 join (pk1 join fk on fk.fk1 = pk1.pk1) on fk.fk2 =
pk2.pk2 order by id
+----
+project (
+| select (
+| | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ]
+| ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(63) NULL), ("fk"."%fk_fk1_fkey") ! * =
(oid(63) NULL) ]
+) [ "fk"."id" NOT NULL UNIQUE HASHCOL ] [ "fk"."id" ASC NOT NULL UNIQUE
HASHCOL ]
+
+query T nosort
+plan select id, v1 from pk2 join (pk1 join fk on fk.fk1 = pk1.pk1) on fk.fk2 =
pk2.pk2 order by id
+----
+project (
+| join (
+| | semijoin (
+| | | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ],
+| | | table("sys"."pk2") [ "pk2"."%TID%" NOT NULL UNIQUE ]
+| | ) [ ("fk"."%fk_fk2_fkey") = ("pk2"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk2_fkey" ],
+| | table("sys"."pk1") [ "pk1"."v1", "pk1"."%TID%" NOT NULL UNIQUE ]
+| ) [ ("fk"."%fk_fk1_fkey") = ("pk1"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk1_fkey" ]
+) [ "fk"."id" NOT NULL HASHCOL , "pk1"."v1" ] [ "fk"."id" ASC NOT NULL HASHCOL
]
+
+query T nosort
+plan select id, v2 from pk2 join (pk1 join fk on fk.fk1 = pk1.pk1) on fk.fk2 =
pk2.pk2 order by id
+----
+project (
+| join (
+| | semijoin (
+| | | table("sys"."fk") [ "fk"."id" NOT NULL UNIQUE HASHCOL ,
"fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey"
JOINIDX "sys"."fk"."fk_fk2_fkey" ],
+| | | table("sys"."pk1") [ "pk1"."%TID%" NOT NULL UNIQUE ]
+| | ) [ ("fk"."%fk_fk1_fkey") = ("pk1"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk1_fkey" ],
+| | table("sys"."pk2") [ "pk2"."v2", "pk2"."%TID%" NOT NULL UNIQUE ]
+| ) [ ("fk"."%fk_fk2_fkey") = ("pk2"."%TID%" NOT NULL UNIQUE) JOINIDX
"sys"."fk"."fk_fk2_fkey" ]
+) [ "fk"."id" NOT NULL HASHCOL , "pk2"."v2" ] [ "fk"."id" ASC NOT NULL HASHCOL
]
+
diff --git a/sql/test/Users/Tests/changeSchemaUser.SQL.py
b/sql/test/Users/Tests/changeSchemaUser.test
rename from sql/test/Users/Tests/changeSchemaUser.SQL.py
rename to sql/test/Users/Tests/changeSchemaUser.test
--- a/sql/test/Users/Tests/changeSchemaUser.SQL.py
+++ b/sql/test/Users/Tests/changeSchemaUser.test
@@ -1,56 +1,91 @@
-###
-# Tests for schema assignments and changes for users
-###
+statement ok
+CREATE SCHEMA library
+
+statement ok
+CREATE TABLE library.orders(price int, name VARCHAR(100))
+
+statement ok
+CREATE ROLE bankAdmin
-from MonetDBtesting.sqltest import SQLTestCase
+statement ok
+CREATE SCHEMA bank AUTHORIZATION bankAdmin
+
+statement ok
+CREATE TABLE bank.accounts(nr int, name VARCHAR(100))
-with SQLTestCase() as mdb:
- mdb.connect(username="monetdb", password="monetdb")
- mdb.execute("CREATE SCHEMA library;").assertSucceeded()
- mdb.execute("CREATE TABLE library.orders(price int, name
VARCHAR(100));").assertSucceeded()
+statement ok
+CREATE USER april WITH PASSWORD 'april' name 'april' schema bank
+
+statement ok
+GRANT ALL ON bank.accounts to april
- mdb.execute("CREATE ROLE bankAdmin;").assertSucceeded()
- mdb.execute("CREATE SCHEMA bank AUTHORIZATION
bankAdmin;").assertSucceeded()
- mdb.execute("CREATE TABLE bank.accounts(nr int, name
VARCHAR(100));").assertSucceeded()
+statement ok
+GRANT bankAdmin to april
+
+statement error 42M32!ALTER USER: no such user 'april2'
+ALTER USER "april2" SET SCHEMA library
+
+statement error 3F000!ALTER USER: no such schema 'library2'
+ALTER USER "april" SET SCHEMA library2
- mdb.execute("CREATE USER april WITH PASSWORD 'april' name 'april' schema
bank;").assertSucceeded()
- mdb.execute("GRANT ALL ON bank.accounts to april;").assertSucceeded()
- mdb.execute("GRANT bankAdmin to april;").assertSucceeded()
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]