Files
openGauss-server/src/test/regress/output/data_source.source
2023-10-18 14:46:22 +08:00

546 lines
26 KiB
Plaintext

/*
* This file is used to test Data Source & plan of EC
*/
----
--- Test CREATE Data Source
----
select reset_unique_sql('GLOBAL','ALL',0);
reset_unique_sql
------------------
t
(1 row)
CREATE DATA SOURCE llt_mppdb_1;
CREATE DATA SOURCE llt_mppdb_2 TYPE 'MPPDB';
CREATE DATA SOURCE llt_mppdb_3 VERSION 'V1R7C10';
CREATE DATA SOURCE llt_mppdb_4 VERSION NULL;
CREATE DATA SOURCE llt_mppdb_5 TYPE 'MPPDB' VERSION 'V1R7C10';
CREATE DATA SOURCE llt_mppdb_6 TYPE 'MPPDB' VERSION NULL;
CREATE DATA SOURCE llt_mppdb_7 TYPE 'MPPDB' VERSION 'V1R7C10' OPTIONS (dsn 'mppdb', password '');
CREATE DATA SOURCE llt_mppdb_8 TYPE 'MPPDB' VERSION NULL OPTIONS (dsn 'mppdb', encoding '');
CREATE DATA SOURCE llt_mppdb_9 OPTIONS (username '', dsn 'mppdb');
\! echo $GAUSSHOME | sed 's/^.*tmp_check\/install\///g' | xargs -I{} rm -f {}/bin/datasource.key.cipher
\! echo $GAUSSHOME | sed 's/^.*tmp_check\/install\///g' | xargs -I{} rm -f {}/bin/datasource.key.rand
\! echo $GAUSSHOME | sed 's/^.*tmp_check\/install\///g' | xargs -I{} /usr3/data1/jiangyan/openGauss-server/src/test/regress/./tmp_check/install//data1/jiangyan/openGauss-server//dest/bin/gs_guc generate -S 123456@pwd -D {}/bin -o datasource
The gs_guc run with the following arguments: [/usr3/data1/jiangyan/openGauss-server/src/test/regress/./tmp_check/install//data1/jiangyan/openGauss-server//dest/bin/gs_guc -S ******** -D /data1/jiangyan/openGauss-server//dest/bin/..//bin -o datasource generate ].
gs_guc generate -S ***
CREATE DATA SOURCE llt_mppdb_10 TYPE 'MPPDB' VERSION 'V1R7C10' OPTIONS (dsn 'mppdb', password 'pwd@123456789');
CREATE DATA SOURCE llt_mppdb_11 TYPE 'MPPDB' VERSION 'V1R7C10' OPTIONS (dsn 'mppdb', password 'pwd');
SELECT query FROM DBE_PERF.statement WHERE query LIKE 'CREATE DATA SOURCE llt_mppdb_7%';
query
-----------------------------------------------------------------------------------------------------------
CREATE DATA SOURCE llt_mppdb_7 TYPE 'MPPDB' VERSION 'V1R7C10' OPTIONS (dsn 'mppdb', password '********');
(1 row)
SELECT query FROM DBE_PERF.statement WHERE query LIKE 'CREATE DATA SOURCE llt_mppdb_10%';
query
------------------------------------------------------------------------------------------------------------
CREATE DATA SOURCE llt_mppdb_10 TYPE 'MPPDB' VERSION 'V1R7C10' OPTIONS (dsn 'mppdb', password '********');
(1 row)
SELECT query FROM DBE_PERF.statement WHERE query LIKE 'CREATE DATA SOURCE llt_mppdb_11%';
query
------------------------------------------------------------------------------------------------------------
CREATE DATA SOURCE llt_mppdb_11 TYPE 'MPPDB' VERSION 'V1R7C10' OPTIONS (dsn 'mppdb', password '********');
(1 row)
select reset_unique_sql('GLOBAL','ALL',0);
reset_unique_sql
------------------
t
(1 row)
DROP DATA SOURCE llt_mppdb_10;
DROP DATA SOURCE llt_mppdb_11;
-- duplicated options
CREATE DATA SOURCE llt_mppdb_f1 OPTIONS (encoding 'utf8', encoding '');
ERROR: option "encoding" provided more than once
-- invalid option
CREATE DATA SOURCE llt_mppdb_f2 OPTIONS (url '10.10.10.10');
ERROR: option "url" not recognized.
HINT: valid options are: dsn, username, password, encoding
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME LIKE 'llt_mppdb_%';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
-------------+----------+---------+------------+--------+-----------------------
llt_mppdb_1 | 10 | | | |
llt_mppdb_2 | 10 | MPPDB | | |
llt_mppdb_3 | 10 | | V1R7C10 | |
llt_mppdb_4 | 10 | | | |
llt_mppdb_5 | 10 | MPPDB | V1R7C10 | |
llt_mppdb_6 | 10 | MPPDB | | |
llt_mppdb_7 | 10 | MPPDB | V1R7C10 | | {dsn=mppdb,password=}
llt_mppdb_8 | 10 | MPPDB | | | {dsn=mppdb,encoding=}
llt_mppdb_9 | 10 | | | | {username=,dsn=mppdb}
(9 rows)
DROP DATA SOURCE IF EXISTS llt_mppdb_1;
DROP DATA SOURCE IF EXISTS llt_mppdb_2;
DROP DATA SOURCE IF EXISTS llt_mppdb_3;
DROP DATA SOURCE IF EXISTS llt_mppdb_4;
DROP DATA SOURCE IF EXISTS llt_mppdb_5;
DROP DATA SOURCE IF EXISTS llt_mppdb_6;
DROP DATA SOURCE IF EXISTS llt_mppdb_7;
DROP DATA SOURCE IF EXISTS llt_mppdb_8;
DROP DATA SOURCE IF EXISTS llt_mppdb_9;
DROP DATA SOURCE IF EXISTS llt_mppdb_f1;
NOTICE: data source "llt_mppdb_f1" does not exist, skipping
DROP DATA SOURCE IF EXISTS llt_mppdb_f2;
NOTICE: data source "llt_mppdb_f2" does not exist, skipping
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME LIKE 'llt_mppdb_%';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
---------+----------+---------+------------+--------+------------
(0 rows)
-- test encrypted options
CREATE DATA SOURCE llt_tst_ds_1 options (dsn 'encryptOpt');
CREATE DATA SOURCE llt_tst_ds_2 options (encoding 'encryptOpt123');
CREATE DATA SOURCE llt_tst_ds_3 options (dsn 'tst', username 'encryptOpt12345678901234567', password 'encryptOpt12345671234567890');
NOTICE: Using probably encrypted option (prefix='encryptOpt') directly and it is not recommended.
HINT: The datasource object can't be used if the option is not encrypted correctly.
SELECT srcoptions FROM pg_extension_data_source where srcname='llt_tst_ds_1';
srcoptions
------------------
{dsn=encryptOpt}
(1 row)
SELECT srcoptions FROM pg_extension_data_source where srcname='llt_tst_ds_2';
srcoptions
--------------------------
{encoding=encryptOpt123}
(1 row)
SELECT srcoptions FROM pg_extension_data_source where srcname='llt_tst_ds_3';
srcoptions
-------------------------------------------------------------------------------------
{dsn=tst,username=encryptOpt12345678901234567,password=encryptOpt12345671234567890}
(1 row)
DROP DATA SOURCE IF EXISTS llt_tst_ds_1;
DROP DATA SOURCE IF EXISTS llt_tst_ds_2;
DROP DATA SOURCE IF EXISTS llt_tst_ds_3;
----
--- Test DROP Data Source
----
CREATE DATA SOURCE llt_mppdb_11 VERSION NULL OPTIONS (dsn 'mppdb', password '');
CREATE DATA SOURCE llt_mppdb_12 VERSION NULL OPTIONS (dsn 'mppdb', password '');
CREATE DATA SOURCE llt_mppdb_13 VERSION NULL OPTIONS (dsn 'mppdb', password '');
CREATE DATA SOURCE llt_mppdb_14 VERSION NULL OPTIONS (dsn 'mppdb', password '');
CREATE DATA SOURCE llt_mppdb_15 VERSION NULL OPTIONS (dsn 'mppdb', password '');
CREATE DATA SOURCE llt_mppdb_16 VERSION NULL OPTIONS (dsn 'mppdb', password '');
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME LIKE 'llt_mppdb_%';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+-----------------------
llt_mppdb_11 | 10 | | | | {dsn=mppdb,password=}
llt_mppdb_12 | 10 | | | | {dsn=mppdb,password=}
llt_mppdb_13 | 10 | | | | {dsn=mppdb,password=}
llt_mppdb_14 | 10 | | | | {dsn=mppdb,password=}
llt_mppdb_15 | 10 | | | | {dsn=mppdb,password=}
llt_mppdb_16 | 10 | | | | {dsn=mppdb,password=}
(6 rows)
DROP DATA SOURCE llt_mppdb_11;
DROP DATA SOURCE llt_mppdb_12 CASCADE;
DROP DATA SOURCE llt_mppdb_13 RESTRICT;
DROP DATA SOURCE IF EXISTS llt_mppdb_11;
NOTICE: data source "llt_mppdb_11" does not exist, skipping
DROP DATA SOURCE IF EXISTS llt_mppdb_12 CASCADE;
NOTICE: data source "llt_mppdb_12" does not exist, skipping
DROP DATA SOURCE IF EXISTS llt_mppdb_13 RESTRICT;
NOTICE: data source "llt_mppdb_13" does not exist, skipping
DROP DATA SOURCE IF EXISTS llt_mppdb_14;
DROP DATA SOURCE IF EXISTS llt_mppdb_15 CASCADE;
DROP DATA SOURCE IF EXISTS llt_mppdb_16 RESTRICT;
DROP DATA SOURCE llt_mppdb_14;
ERROR: source "llt_mppdb_14" does not exist
DROP DATA SOURCE llt_mppdb_15 CASCADE;
ERROR: source "llt_mppdb_15" does not exist
DROP DATA SOURCE llt_mppdb_16 RESTRICT;
ERROR: source "llt_mppdb_16" does not exist
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME LIKE 'llt_mppdb_%';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
---------+----------+---------+------------+--------+------------
(0 rows)
CREATE DATA SOURCE llt_mppdb_21 TYPE 'MPPDB' VERSION 'V1R7C10';
CREATE DATA SOURCE llt_mppdb_22 TYPE 'MPPDB' VERSION 'V1R7C10';
CREATE DATA SOURCE llt_mppdb_23 TYPE 'MPPDB' VERSION 'V1R7C10';
CREATE DATA SOURCE llt_mppdb_24 TYPE 'MPPDB' VERSION 'V1R7C10';
CREATE DATA SOURCE llt_mppdb_25 TYPE 'MPPDB' VERSION 'V1R7C10';
CREATE DATA SOURCE llt_mppdb_26 TYPE 'MPPDB' VERSION 'V1R7C10';
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME LIKE 'llt_mppdb_%';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+------------
llt_mppdb_21 | 10 | MPPDB | V1R7C10 | |
llt_mppdb_22 | 10 | MPPDB | V1R7C10 | |
llt_mppdb_23 | 10 | MPPDB | V1R7C10 | |
llt_mppdb_24 | 10 | MPPDB | V1R7C10 | |
llt_mppdb_25 | 10 | MPPDB | V1R7C10 | |
llt_mppdb_26 | 10 | MPPDB | V1R7C10 | |
(6 rows)
DROP DATA SOURCE llt_mppdb_21;
DROP DATA SOURCE llt_mppdb_22 CASCADE;
DROP DATA SOURCE llt_mppdb_23 RESTRICT;
DROP DATA SOURCE IF EXISTS llt_mppdb_21;
NOTICE: data source "llt_mppdb_21" does not exist, skipping
DROP DATA SOURCE IF EXISTS llt_mppdb_22 CASCADE;
NOTICE: data source "llt_mppdb_22" does not exist, skipping
DROP DATA SOURCE IF EXISTS llt_mppdb_23 RESTRICT;
NOTICE: data source "llt_mppdb_23" does not exist, skipping
DROP DATA SOURCE IF EXISTS llt_mppdb_24;
DROP DATA SOURCE IF EXISTS llt_mppdb_25 CASCADE;
DROP DATA SOURCE IF EXISTS llt_mppdb_26 RESTRICT;
DROP DATA SOURCE llt_mppdb_24;
ERROR: source "llt_mppdb_24" does not exist
DROP DATA SOURCE llt_mppdb_25 CASCADE;
ERROR: source "llt_mppdb_25" does not exist
DROP DATA SOURCE llt_mppdb_26 RESTRICT;
ERROR: source "llt_mppdb_26" does not exist
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME LIKE 'llt_mppdb_%';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
---------+----------+---------+------------+--------+------------
(0 rows)
----
--- Test ALTER Data Source
----
CREATE DATA SOURCE llt_mppdb_31;
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+------------
llt_mppdb_31 | 10 | | | |
(1 row)
ALTER DATA SOURCE llt_mppdb_31 TYPE '';
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+------------
llt_mppdb_31 | 10 | | | |
(1 row)
ALTER DATA SOURCE llt_mppdb_31 VERSION 'V1R7';
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+------------
llt_mppdb_31 | 10 | | V1R7 | |
(1 row)
ALTER DATA SOURCE llt_mppdb_31 TYPE 'MPPDB1' VERSION NULL;
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+------------
llt_mppdb_31 | 10 | MPPDB1 | | |
(1 row)
ALTER DATA SOURCE llt_mppdb_31 TYPE 'MPPDB2' VERSION 'V1R7C10';
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+------------
llt_mppdb_31 | 10 | MPPDB2 | V1R7C10 | |
(1 row)
ALTER DATA SOURCE llt_mppdb_31 OPTIONS (dsn 'mppdb1', username '', encoding 'utf8');
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+--------------------------------------
llt_mppdb_31 | 10 | MPPDB2 | V1R7C10 | | {dsn=mppdb1,username=,encoding=utf8}
(1 row)
ALTER DATA SOURCE llt_mppdb_31 OPTIONS (SET dsn 'mppdb2', DROP username, ADD password '');
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+--------------------------------------
llt_mppdb_31 | 10 | MPPDB2 | V1R7C10 | | {dsn=mppdb2,encoding=utf8,password=}
(1 row)
\! echo $GAUSSHOME | sed 's/^.*tmp_check\/install\///g' | xargs -I{} rm -f {}/bin/datasource.key.cipher
\! echo $GAUSSHOME | sed 's/^.*tmp_check\/install\///g' | xargs -I{} rm -f {}/bin/datasource.key.rand
ALTER DATA SOURCE llt_mppdb_31 TYPE 'MPPDB3' VERSION 'V1R7C20' OPTIONS (DROP encoding, username '123user', SET password '123456@pwd');
ERROR: No key file datasource.key.cipher
HINT: Please create datasource.key.cipher file with gs_guc and gs_ssh, such as :gs_ssh -c "gs_guc generate -S XXX -D $GAUSSHOME/bin -o datasource"
\! echo $GAUSSHOME | sed 's/^.*tmp_check\/install\///g' | xargs -I{} /usr3/data1/jiangyan/openGauss-server/src/test/regress/./tmp_check/install//data1/jiangyan/openGauss-server//dest/bin/gs_guc generate -S 123456@pwd -D {}/bin -o datasource
The gs_guc run with the following arguments: [/usr3/data1/jiangyan/openGauss-server/src/test/regress/./tmp_check/install//data1/jiangyan/openGauss-server//dest/bin/gs_guc -S ******** -D /data1/jiangyan/openGauss-server//dest/bin/..//bin -o datasource generate ].
gs_guc generate -S ***
SELECT PG_SLEEP(1);
pg_sleep
----------
(1 row)
ALTER DATA SOURCE llt_mppdb_31 TYPE 'MPPDB3' VERSION 'V1R7C20' OPTIONS (DROP encoding, username '123user', SET password '123456@pwd');
\! echo $GAUSSHOME | sed 's/^.*tmp_check\/install\///g' | xargs -I{} rm -f {}/bin/datasource.key.cipher
\! echo $GAUSSHOME | sed 's/^.*tmp_check\/install\///g' | xargs -I{} rm -f {}/bin/datasource.key.rand
SELECT * FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srcowner | srctype | srcversion | srcacl | srcoptions
--------------+----------+---------+------------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
llt_mppdb_31 | 10 | MPPDB3 | V1R7C20 | | {dsn=mppdb2,password=encryptOptvj5E4r/A+1gzoFLm+HHetKWyCPWQB3uD9EyBSq7Yun6n7ih1Tnyk+dbBKJtWNcoT,username=encryptOptYEkl7iYwIlMreLTJV3QKXd+nCGXA9GxKEr5RywDEoIWYsZhvDZH1WkEVWbyxRpzA}
(1 row)
-- duplicated options
ALTER DATA SOURCE llt_mppdb_31 OPTIONS (DROP username, ADD username '456user');
ERROR: option "username" provided more than once
SELECT srcname, srctype, srcversion, srcacl FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srctype | srcversion | srcacl
--------------+---------+------------+--------
llt_mppdb_31 | MPPDB3 | V1R7C20 |
(1 row)
-- invalid options
ALTER DATA SOURCE llt_mppdb_31 OPTIONS (url '10.10.10.10');
ERROR: option "url" not recognized.
HINT: valid options are: dsn, username, password, encoding
SELECT srcname, srctype, srcversion, srcacl FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31';
srcname | srctype | srcversion | srcacl
--------------+---------+------------+--------
llt_mppdb_31 | MPPDB3 | V1R7C20 |
(1 row)
-- alter name
ALTER DATA SOURCE llt_mppdb_31 RENAME TO llt_mppdb_31_new;
SELECT srcname, srcowner FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31_new';
srcname | srcowner
------------------+----------
llt_mppdb_31_new | 10
(1 row)
-- alter owner
CREATE USER PLOKEN1 IDENTIFIED BY 'Gs@123456';
ALTER DATA SOURCE llt_mppdb_31_new OWNER TO PLOKEN1;
ERROR: permission denied to change owner of data source "llt_mppdb_31_new"
HINT: The owner of a data source must be a system admin.
ALTER USER PLOKEN1 WITH SYSADMIN;
ALTER DATA SOURCE llt_mppdb_31_new OWNER TO PLOKEN1;
SELECT srcname, srcowner FROM PG_EXTENSION_DATA_SOURCE WHERE SRCNAME='llt_mppdb_31_new';
srcname | srcowner
------------------+----------
llt_mppdb_31_new | 16429
(1 row)
DROP DATA SOURCE IF EXISTS llt_mppdb_31_new CASCADE;
DROP USER PLOKEN1;
----
--- Test GRANT/REVOKE Data Source
----
CREATE DATA SOURCE llt_mppdb_41 VERSION 'V1R7C10' OPTIONS (username '', encoding 'utf8');
CREATE DATA SOURCE llt_mppdb_42 TYPE 'MPPDB' OPTIONS (dsn '', encoding 'utf8');
CREATE USER PLOKEN2 IDENTIFIED BY 'Gs@123456';
CREATE USER PLOKEN3 IDENTIFIED BY 'Gs@654321';
-- grant invalid privileges
GRANT SELECT ON DATA SOURCE llt_mppdb_41 TO PLOKEN2;
ERROR: invalid privilege type SELECT for data source
DETAIL: N/A
-- grant valid privileges, here usage == all
GRANT USAGE ON DATA SOURCE llt_mppdb_41 TO PLOKEN2;
GRANT ALL PRIVILEGES ON DATA SOURCE llt_mppdb_42 TO PLOKEN2;
SELECT srcname, srcacl FROM PG_EXTENSION_DATA_SOURCE WHERE srcname='llt_mppdb_41';
srcname | srcacl
--------------+------------------------------------------
llt_mppdb_41 | {jiangyan=U/jiangyan,ploken2=U/jiangyan}
(1 row)
SELECT srcname, srcacl FROM PG_EXTENSION_DATA_SOURCE WHERE srcname='llt_mppdb_42';
srcname | srcacl
--------------+------------------------------------------
llt_mppdb_42 | {jiangyan=U/jiangyan,ploken2=U/jiangyan}
(1 row)
-- revoke privileges
REVOKE USAGE ON DATA SOURCE llt_mppdb_41 FROM PLOKEN2;
REVOKE ALL ON DATA SOURCE llt_mppdb_42 FROM PLOKEN2;
SELECT srcname, srcacl FROM PG_EXTENSION_DATA_SOURCE WHERE srcname='llt_mppdb_41';
srcname | srcacl
--------------+-----------------------
llt_mppdb_41 | {jiangyan=U/jiangyan}
(1 row)
SELECT srcname, srcacl FROM PG_EXTENSION_DATA_SOURCE WHERE srcname='llt_mppdb_42';
srcname | srcacl
--------------+-----------------------
llt_mppdb_42 | {jiangyan=U/jiangyan}
(1 row)
-- change owner
ALTER USER PLOKEN3 WITH SYSADMIN;
ALTER DATA SOURCE llt_mppdb_42 OWNER TO PLOKEN3;
-- grant all
GRANT ALL ON DATA SOURCE llt_mppdb_42 TO PLOKEN3;
GRANT ALL ON DATA SOURCE llt_mppdb_42 TO PLOKEN2;
SELECT srcname, srcacl FROM PG_EXTENSION_DATA_SOURCE WHERE srcname='llt_mppdb_42';
srcname | srcacl
--------------+-----------------------------------------------------------
llt_mppdb_42 | {jiangyan=U/jiangyan,ploken3=U/ploken3,ploken2=U/ploken3}
(1 row)
-- revoke usage (test all == usage)
REVOKE USAGE ON DATA SOURCE llt_mppdb_42 FROM PLOKEN3;
REVOKE USAGE ON DATA SOURCE llt_mppdb_42 FROM PLOKEN2;
SELECT srcname, srcacl FROM PG_EXTENSION_DATA_SOURCE WHERE srcname='llt_mppdb_42';
srcname | srcacl
--------------+-----------------------
llt_mppdb_42 | {jiangyan=U/jiangyan}
(1 row)
DROP DATA SOURCE llt_mppdb_41;
DROP DATA SOURCE llt_mppdb_42;
DROP USER PLOKEN2;
DROP USER PLOKEN3;
-- For coverity of :
-- GetDataSource, pg_extension_data_source_aclmask,
-- pg_extension_data_source_ownercheck
create user ds_user_llt_01 identified by 'Gs@123456';
create user ds_user_llt_02 with sysadmin identified by 'Gs@123456';
create data source mpp_llt_01 options (dsn 'mpp_llt_01');
create data source mpp_llt_01;
ERROR: data source "mpp_llt_01" already exists
grant usage on data source mpp_llt_01 to ds_user_llt_01;
\! /usr3/data1/jiangyan/openGauss-server/src/test/regress/./tmp_check/install//data1/jiangyan/openGauss-server//dest/bin/gsql -d postgres -p 25632 -U ds_user_llt_01 -W Gs@123456 -c "grant usage on data source mpp_llt_01 to ds_user_llt_02;"
ERROR: no privileges were granted for "mpp_llt_01"
\! /usr3/data1/jiangyan/openGauss-server/src/test/regress/./tmp_check/install//data1/jiangyan/openGauss-server//dest/bin/gsql -d postgres -p 25632 -U ds_user_llt_01 -W Gs@123456 -c "alter data source mpp_llt_01 version '11.1';"
ERROR: must be owner of data source mpp_llt_01
DETAIL: N/A
drop data source mpp_llt_01;
drop user ds_user_llt_01;
drop user ds_user_llt_02;
----
--- Part Test of EC: Explain Plan
----
create data source myself options (dsn 'myself');
create table ds_s2_tbl_001 (c1 int);
explain (costs off) select * from exec_on_extension('myself', 'select * from a') as (c1 int);
QUERY PLAN
------------------------------------
Function Scan on exec_on_extension
(1 row)
explain (costs off) select * from exec_hadoop_sql('myself', 'select * from a', '') as (c1 int);
QUERY PLAN
----------------------------------
Function Scan on exec_hadoop_sql
(1 row)
explain (costs off) insert into ds_s2_tbl_001 select * from exec_on_extension('myself', 'select * from a') as (c1 int);
QUERY PLAN
------------------------------------------
Insert on ds_s2_tbl_001
-> Function Scan on exec_on_extension
(2 rows)
explain (costs off) insert into ds_s2_tbl_001 select * from exec_hadoop_sql('myself', 'select * from a', '') as (c1 int);
QUERY PLAN
----------------------------------------
Insert on ds_s2_tbl_001
-> Function Scan on exec_hadoop_sql
(2 rows)
explain (costs off) select * from (select * from exec_on_extension('myself', 'select * from a') as (c1 int)) a inner join ds_s2_tbl_001 b on a.c1=b.c1;
QUERY PLAN
------------------------------------------------
Hash Join
Hash Cond: (b.c1 = exec_on_extension.c1)
-> Seq Scan on ds_s2_tbl_001 b
-> Hash
-> Function Scan on exec_on_extension
(5 rows)
explain (costs off) select * from (select * from exec_hadoop_sql('myself', 'select * from a', '') as (c1 int)) a inner join ds_s2_tbl_001 b on a.c1=b.c1;
QUERY PLAN
----------------------------------------------
Hash Join
Hash Cond: (b.c1 = exec_hadoop_sql.c1)
-> Seq Scan on ds_s2_tbl_001 b
-> Hash
-> Function Scan on exec_hadoop_sql
(5 rows)
explain (costs off) select * from
ds_s2_tbl_001,
(select * from exec_on_extension('myself', 'select * from a') as (c1 int)) b
where
ds_s2_tbl_001.c1 = b.c1 and
b.c1 in
(select * from exec_on_extension('myself', 'select * from a') as (c1 int));
QUERY PLAN
------------------------------------------------------------------------
Hash Join
Hash Cond: (ds_s2_tbl_001.c1 = exec_on_extension.c1)
-> Seq Scan on ds_s2_tbl_001
-> Hash
-> Hash Join
Hash Cond: (exec_on_extension.c1 = exec_on_extension.c1)
-> Function Scan on exec_on_extension
-> Hash
-> HashAggregate
Group By Key: exec_on_extension.c1
-> Function Scan on exec_on_extension
(11 rows)
explain (costs off) select * from
ds_s2_tbl_001,
(select * from exec_hadoop_sql('myself', 'select * from a', '') as (c1 int)) b
where
ds_s2_tbl_001.c1 = b.c1 and
b.c1 in
(select * from exec_hadoop_sql('myself', 'select * from a', '') as (c1 int));
QUERY PLAN
--------------------------------------------------------------------
Hash Join
Hash Cond: (ds_s2_tbl_001.c1 = exec_hadoop_sql.c1)
-> Seq Scan on ds_s2_tbl_001
-> Hash
-> Hash Join
Hash Cond: (exec_hadoop_sql.c1 = exec_hadoop_sql.c1)
-> Function Scan on exec_hadoop_sql
-> Hash
-> HashAggregate
Group By Key: exec_hadoop_sql.c1
-> Function Scan on exec_hadoop_sql
(11 rows)
explain (costs off) select * from
ds_s2_tbl_001,
(select * from exec_on_extension('myself', 'select * from a') as (c1 int)) b
where
ds_s2_tbl_001.c1 = b.c1 and
b.c1 in
(select * from exec_hadoop_sql('myself', 'select * from a', '') as (c1 int));
QUERY PLAN
----------------------------------------------------------------------
Hash Join
Hash Cond: (ds_s2_tbl_001.c1 = exec_on_extension.c1)
-> Seq Scan on ds_s2_tbl_001
-> Hash
-> Hash Join
Hash Cond: (exec_on_extension.c1 = exec_hadoop_sql.c1)
-> Function Scan on exec_on_extension
-> Hash
-> HashAggregate
Group By Key: exec_hadoop_sql.c1
-> Function Scan on exec_hadoop_sql
(11 rows)
explain (costs off) select * from
ds_s2_tbl_001,
(select * from exec_hadoop_sql('myself', 'select * from a', '') as (c1 int)) b
where
ds_s2_tbl_001.c1 = b.c1 and
b.c1 in
(select * from exec_on_extension('myself', 'select * from a') as (c1 int));
QUERY PLAN
----------------------------------------------------------------------
Hash Join
Hash Cond: (ds_s2_tbl_001.c1 = exec_hadoop_sql.c1)
-> Seq Scan on ds_s2_tbl_001
-> Hash
-> Hash Join
Hash Cond: (exec_hadoop_sql.c1 = exec_on_extension.c1)
-> Function Scan on exec_hadoop_sql
-> Hash
-> HashAggregate
Group By Key: exec_on_extension.c1
-> Function Scan on exec_on_extension
(11 rows)
drop table ds_s2_tbl_001;
drop data source myself;