Fixed misc bugs

This commit is contained in:
dengxuyue 2021-09-24 17:08:28 +08:00
parent 1d540f4462
commit 3fe0cec7ce
33 changed files with 323 additions and 273 deletions

View File

@ -64,7 +64,7 @@ When the Xlog is transferred to the standby node, the standby node flushs the Xl
**MOT Engine (beta release)**
The Memory-Optimized Tables (MOT) storage engine is a transactional rowstore optimized for many-core and large memory and delivering extreme OLTP performance and high resources utilization. With data and indexes stored totally in-memory, a NUMA-aware design, algorithms that eliminate lock and latch contention and query native compilation (JIT), MOT provides low latency data access and more efficient transaction execution. See [MOT Engine documentation](https://opengauss.org/en/docs/2.0.0/docs/Developerguide/mot.html).
The Memory-Optimized Tables (MOT) storage engine is a transactional rowstore optimized for many-core and large memory and delivering extreme OLTP performance and high resources utilization. With data and indexes stored totally in-memory, a NUMA-aware design, algorithms that eliminate lock and latch contention and query native compilation (JIT), MOT provides low latency data access and more efficient transaction execution. See [MOT Engine documentation](https://opengauss.org/en/docs/2.1.0/docs/Developerguide/mot.html).
**Security**
@ -383,7 +383,7 @@ https://opengauss.org/zh/
From the following website, you can obtain the binarylibs we have compiled. Please unzip it and rename to **binarylibs** after you download.
https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.0/openGauss-third_party_binarylibs.tar.gz
https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.1.0/openGauss-third_party_binarylibs.tar.gz
Now we have completed openGauss code, for example, we store it in following directories.
@ -544,7 +544,7 @@ Installation package packaging log: **./package/make_package.log**
## Quick Start
See the [Quick Start](https://opengauss.org/zh/docs/2.0.0/docs/Quickstart/Quickstart.html) to implement the image classification.
See the [Quick Start](https://opengauss.org/zh/docs/2.1.0/docs/Quickstart/Quickstart.html) to implement the image classification.
## Docs
@ -568,7 +568,7 @@ Welcome contributions. See our [Contributor](https://opengauss.org/zh/contributi
## Release Notes
For the release notes, see our [RELEASE](https://opengauss.org/zh/docs/2.0.0/docs/Releasenotes/Releasenotes.html).
For the release notes, see our [RELEASE](https://opengauss.org/zh/docs/2.1.0/docs/Releasenotes/Releasenotes.html).
## License

View File

@ -388,7 +388,11 @@ export CC="$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/gcc"
export CXX="$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/g++"
export LD_LIBRARY_PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/lib64:$BUILD_TOOLS_PATH/gcc$gcc_version/isl/lib:$BUILD_TOOLS_PATH/gcc$gcc_version/mpc/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/mpfr/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/gmp/lib/:$LD_LIBRARY_PATH
export PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin:$PATH
export JAVA_HOME=${binarylib_dir}/platform/huaweijdk8/${PLATFORM_ARCH}/jdk
jdkpath=${binarylib_dir}/platform/huaweijdk8/${PLATFORM_ARCH}/jdk
if [ ! -d ${jdkpath} ]; then
jdkpath=${binarylib_dir}/platform/openjdk8/${PLATFORM_ARCH}/jdk
fi
export JAVA_HOME=${jdkpath}
declare p7zpath="${BUILD_TOOLS_PATH}/p7z/bin"
###################################

View File

@ -1,2 +1,2 @@
PRODUCT=openGauss
VERSION=2.0.0
VERSION=2.1.0

View File

@ -388,7 +388,12 @@ export CC="${USE_CCACHE}$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/gcc"
export CXX="${USE_CCACHE}$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin/g++"
export LD_LIBRARY_PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/lib64:$BUILD_TOOLS_PATH/gcc$gcc_version/isl/lib:$BUILD_TOOLS_PATH/gcc$gcc_version/mpc/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/mpfr/lib/:$BUILD_TOOLS_PATH/gcc$gcc_version/gmp/lib/:$LD_LIBRARY_PATH
export PATH=$BUILD_TOOLS_PATH/gcc$gcc_version/gcc/bin:$PATH
export JAVA_HOME=${binarylib_dir}/platform/huaweijdk8/${PLATFORM_ARCH}/jdk
jdkpath=${binarylib_dir}/platform/huaweijdk8/${PLATFORM_ARCH}/jdk
if [ ! -d ${jdkpath} ]; then
jdkpath=${binarylib_dir}/platform/openjdk8/${PLATFORM_ARCH}/jdk
fi
export JAVA_HOME=${jdkpath}
declare p7zpath="${BUILD_TOOLS_PATH}/p7z/bin"
###################################
# build parameter about enable-llt

View File

@ -198,7 +198,7 @@ ENDMACRO(CHECK_CC_ENABLE)
function(GET_VERSIONSTR_FROMGIT ret)
set(PG_VERSION "9.2.4")
set(OPENGAUSS_VERSION "2.0.0")
set(OPENGAUSS_VERSION "2.1.0")
execute_process(
COMMAND ${CMAKE_SOURCE_DIR}/${openGauss}/cmake/src/buildfunction.sh --d ${PROJECT_TRUNK_DIR} OUTPUT_VARIABLE KERNEL_VERSION_STR)
execute_process(

View File

@ -118,7 +118,7 @@ function get_gs_version()
default_gs_version="(openGauss 2.0.0 build 1f1f1f1f) compiled at 2100-00-00 00:00:00 commit 9999 last mr 9999 debug"
else
date_time=$(date -d today +"%Y-%m-%d %H:%M:%S")
default_gs_version="(openGauss 2.0.0 build $csv_version) compiled at $date_time commit $commits last mr $mrid $debug_str"
default_gs_version="(openGauss 2.1.0 build $csv_version) compiled at $date_time commit $commits last mr $mrid $debug_str"
fi
printf "${default_gs_version}"
}
@ -130,12 +130,14 @@ function get_kernel_version()
commits=$(git log | grep "See merge request" | wc -l)
mrid=$(git log | grep "See merge request" | head -1 | awk -F! '{print $2}' | grep -o '[0-9]\+')
debug_str="$DEBUG_TYPE"
product=$(cat build/script/gauss.spec | grep 'PRODUCT' | awk -F "=" '{print $2}')
version=$(cat build/script/gauss.spec | grep 'VERSION' | awk -F "=" '{print $2}')
if test "$enable_ccache" = yes; then
default_kernel_version="(GaussDB Kernel V500R002C00 build 1f1f1f1f1f1f1f1f) compiled at 2100-00-00 00:00:00 commit 9999 last mr 9999 debug"
else
date_time=$(date -d today +"%Y-%m-%d %H:%M:%S")
default_kernel_version="(GaussDB Kernel V500R002C00 build $csv_version) compiled at $date_time commit $commits last mr $mrid $debug_str"
default_kernel_version="($product $version build $csv_version) compiled at $date_time commit $commits last mr $mrid $debug_str"
fi
printf "${default_kernel_version}"
}

View File

@ -714,7 +714,7 @@
#define PGXC_VERSION_NUM
/* openGauss version as a number string */
#define OPENGAUSS_VERSION_NUM_STR "2.0.0"
#define OPENGAUSS_VERSION_NUM_STR "2.1.0"
/* A string containing the version number, platform, and C compiler */
#define PG_VERSION_STR "@PG_VERSION_STR@"

View File

@ -695,7 +695,7 @@
#define PG_VERSION "9.2.4"
/* openGauss version as a string */
#define OPENGAUSS_VERSION "2.0.0"
#define OPENGAUSS_VERSION "2.1.0"
/* Gaussdb version as a string*/
#define DEF_GS_VERSION "(GaussDB A 8.0.0 build 21f07aff) compiled at 2020-03-17 10:59:07 commit 7431 last mr 12039 debug"

4
configure vendored
View File

@ -2184,7 +2184,7 @@ PACKAGE_VERSION='9.2.4'
# Postgres-XC 1.1devel is based on PostgreSQL 9.2.4
PACKAGE_XC_VERSION='1.1'
# openGauss is based on PostgreSQL 9.2.4 and it will be the Kernel of GaussDB database
OPENGAUSS_VERSION='2.0.0'
OPENGAUSS_VERSION='2.1.0'
cat >>confdefs.h <<_ACEOF
#define PG_VERSION "$PACKAGE_VERSION"
@ -2666,7 +2666,7 @@ else
fi
if test "$enable_ccache" = yes; then
default_gs_version="(openGauss 2.0.0 build 1f1f1f1f) compiled at 2100-00-00 00:00:00 commit 9999 last mr 9999 debug"
default_gs_version="(openGauss 2.1.0 build 1f1f1f1f) compiled at 2100-00-00 00:00:00 commit 9999 last mr 9999 debug"
default_kernel_version="(GaussDB Kernel V500R002C00 build 1f1f1f1f) compiled at 2100-00-00 00:00:00 commit 9999 last mr 9999 debug"
else
default_gs_version="($product $version build $gitversion) compiled at `date -d today +\"%Y-%m-%d %H:%M:%S\"` commit $commits last mr $mrid $debug_str"

View File

@ -180,7 +180,9 @@ install(DIRECTORY ${IPERF_LIB_PATH} DESTINATION .)
install(DIRECTORY ${KERBEROS_SBIN_PATH}/ DESTINATION bin)
install(DIRECTORY ${KERBEROS_BIN_PATH} DESTINATION .)
install(DIRECTORY ${KERBEROS_LIB_PATH} DESTINATION .)
install(DIRECTORY ${KMC_LIB_PATH} DESTINATION .)
if(NOT ${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF)
install(DIRECTORY ${KMC_LIB_PATH} DESTINATION .)
endif()
install(DIRECTORY ${LIBCURL_LIB_PATH} DESTINATION .)
install(DIRECTORY ${LIBPARQUET_LIB_PATH} DESTINATION .)
install(DIRECTORY ${LZ4_LIB_PATH} DESTINATION .)
@ -211,7 +213,9 @@ install(FILES ${SECURE_HOME}/../Dynamic_Lib/libsecurec.so DESTINATION lib)
install(FILES ${PLJAVA_HOME}/lib/libpljava.so DESTINATION lib)
install(FILES ${PLJAVA_HOME}/java/pljava.jar DESTINATION lib/postgresql/java)
install(FILES ${PLJAVA_HOME}/udstools.py DESTINATION share/postgresql/tmp)
install(FILES ${LIBHOTPATCH_LIB_PATH}/libdoprapatch.a DESTINATION lib)
if(NOT ${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF)
install(FILES ${LIBHOTPATCH_LIB_PATH}/libdoprapatch.a DESTINATION lib)
endif()
install(CODE "execute_process(
COMMAND cp ${BUILDTOOLS_PATH}/gcc7.3/gcc/lib64/libstdc++.so.6.0.24 ${prefix_home}/lib/libstdc++.so.6
WORKING_DIRECTORY ${prefix_home}/lib)"

View File

@ -295,7 +295,7 @@ static void show_version(int alls)
#ifdef ENABLE_MULTIPLE_NODES
printf("PostgreSQL 9.2.4\n");
#else
printf("openGauss 2.0.0\n");
printf("openGauss 2.1.0\n");
#endif
}

View File

@ -4113,6 +4113,16 @@ List* transformAlterTableStmt(Oid relid, AlterTableStmt* stmt, const char* query
break;
case AT_SplitPartition:
if (!RELATION_IS_PARTITIONED(rel))
ereport(ERROR,
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
errmodule(MOD_OPT),
errmsg("can not split partition against NON-PARTITIONED table")));
if (rel->partMap->type == PART_TYPE_LIST || rel->partMap->type == PART_TYPE_HASH) {
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("can not split LIST/HASH partition table")));
}
/* transform the boundary of range partition: from A_Const into Const */
splitDefState = (SplitPartitionState*)cmd->def;
if (!PointerIsValid(splitDefState->split_point)) {
@ -4133,12 +4143,6 @@ List* transformAlterTableStmt(Oid relid, AlterTableStmt* stmt, const char* query
Const* upBound = NULL;
Oid srcPartOid = InvalidOid;
if (!RELATION_IS_PARTITIONED(rel))
ereport(ERROR,
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
errmodule(MOD_OPT),
errmsg("can not split partition against NON-PARTITIONED table")));
/* get partition number */
partNum = getNumberOfPartitions(rel);

View File

@ -75,7 +75,9 @@ void clean_empty_conn_4cl(PGconn *conn)
}
libpq_free(conn->dbName);
if (conn->client_logic != NULL) {
#if ((defined(ENABLE_MULTIPLE_NODES)) || (defined(ENABLE_PRIVATEGAUSS)))
free_kms_cache(conn->client_logic->client_cache_id);
#endif
delete conn->client_logic;
conn->client_logic = NULL;
}
@ -142,16 +144,18 @@ bool ClientLogicJNI::link_client_logic(JNIEnv *env, jobject jdbc_cl_impl, const
bool ClientLogicJNI::set_kms_info(const char *key, const char *value)
{
CmkemErrCode ret = CMKEM_SUCCEED;
if (m_stub_conn == NULL) {
return false; /* should never happen */
}
#if ((defined(ENABLE_MULTIPLE_NODES)) || (defined(ENABLE_PRIVATEGAUSS)))
CmkemErrCode ret = CMKEM_SUCCEED;
ret = set_kms_cache_auth_info(m_stub_conn->client_logic->client_cache_id, key, value);
if (ret != CMKEM_SUCCEED) {
JNI_LOG_ERROR(get_cmkem_errmsg(ret));
return false;
}
#endif
return true;
}

View File

@ -22672,8 +22672,8 @@ static char* GenTemporaryPartitionName(Relation partTableRel, int sequence)
return pstrdup(tmpName);
}
static Oid GetNewPartitionOid(
Relation pgPartRel, Relation partTableRel, Node *partDef, Oid bucketOid, bool *isTimestamptz, StorageType stype)
static Oid GetNewPartitionOid(Relation pgPartRel, Relation partTableRel, Node *partDef, Oid bucketOid,
bool *isTimestamptz, StorageType stype, Datum new_reloptions)
{
Oid newPartOid = InvalidOid;
switch (nodeTag(partDef)) {
@ -22684,7 +22684,7 @@ static Oid GetNewPartitionOid(
bucketOid,
(RangePartitionDefState *)partDef,
partTableRel->rd_rel->relowner,
(Datum)0,
new_reloptions,
isTimestamptz,
stype,
AccessExclusiveLock);
@ -22760,8 +22760,8 @@ static Oid AddTemporaryPartition(Relation partTableRel, Node* partDef)
}
/* Temporary tables do not use segment-page */
newPartOid = GetNewPartitionOid(
pgPartRel, partTableRel, partDef, bucketOid, isTimestamptz, RelationGetStorageType(partTableRel));
newPartOid = GetNewPartitionOid(pgPartRel, partTableRel, partDef, bucketOid,
isTimestamptz, RelationGetStorageType(partTableRel), new_reloptions);
// We must bump the command counter to make the newly-created
// partition tuple visible for opening.

View File

@ -5623,8 +5623,10 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi
* ******************************** DOMAIN statements ****
*/
case T_CreateDomainStmt:
#ifdef ENABLE_MULTIPLE_NODES
if (!IsInitdb && !u_sess->attr.attr_common.IsInplaceUpgrade)
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("domain is not yet supported.")));
#endif
DefineDomain((CreateDomainStmt*)parse_tree);
#ifdef PGXC
if (IS_PGXC_COORDINATOR)

View File

@ -10,22 +10,22 @@ DECLARE
res int;
res2 text;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
res2 := 'aa55';
res := 55;
END;
/
just use call.
NOTICE: just use call.
create table t1(a int ,b text);
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
insert into t1 values(1,'you are so cute!');
END;
/
just use call.
NOTICE: just use call.
select * from t1;
a | b
@ -42,11 +42,11 @@ START TRANSACTION;
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
insert into t1 values(1,'you are so cute,will commit!');
END;
/
just use call.
NOTICE: just use call.
insert into t1 values(1,'you will rollback!');
rollback;
@ -68,14 +68,14 @@ BEGIN
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
insert into t1 values(1,'can you rollback!');
END;
insert into t1 values(2,'I will rollback!');
rollback;
END;
/
just use call.
NOTICE: just use call.
select * from t1;
a | b
---+---
@ -90,11 +90,11 @@ DECLARE
res int := 0;
res2 int := 1;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
res2 = res2/res;
END;
/
just use call.
NOTICE: just use call.
ERROR: ERROR: division by zero
CONTEXT: PL/pgSQL function inline_code_block line 6 at assignment
@ -107,16 +107,16 @@ DECLARE
res int := 0;
res2 int := 1;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
res2 = res2/res;
EXCEPTION
WHEN division_by_zero THEN
dbe_output.print_line('autonomous throw exception.');
raise notice 'autonomous throw exception.';
END;
/
just use call.
NOTICE: just use call.
autonomous throw exception.
NOTICE: autonomous throw exception.
/************************************************************************/
/* PROCEDURE */
@ -184,21 +184,23 @@ DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert into t2 values(num3, num4);
dbe_output.print_line('just use call.');
raise notice 'just use call.';
END;
/
CREATE OR REPLACE PROCEDURE autonomous_5(a int, b int) AS
DECLARE
BEGIN
dbe_output.print_line('just no use call.');
raise notice 'just no use call.';
insert into t2 values(666, 666);
autonomous_4(a,b);
rollback;
END;
/
select autonomous_5(11,22);
just no use call.
just use call.
NOTICE: just no use call.
CONTEXT: referenced column: autonomous_5
NOTICE: just use call.
CONTEXT: referenced column: autonomous_4
autonomous_5
--------------
@ -229,21 +231,23 @@ DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert into t2 values(num3, num4);
dbe_output.print_line('just use call.');
raise notice 'just use call.';
rollback;
END;
/
CREATE OR REPLACE PROCEDURE autonomous_7(a int, b int) AS
DECLARE
BEGIN
dbe_output.print_line('just no use call.');
raise notice 'just no use call.';
insert into t2 values(666, 666);
autonomous_6(a,b);
END;
/
select autonomous_7(11,22);
just no use call.
just use call.
NOTICE: just no use call.
CONTEXT: referenced column: autonomous_7
NOTICE: just use call.
CONTEXT: referenced column: autonomous_6
autonomous_7
--------------
@ -283,11 +287,12 @@ BEGIN
autonomous_8();
EXCEPTION
WHEN division_by_zero THEN
dbe_output.print_line('autonomous throw exception.');
raise notice 'autonomous throw exception.';
END;
/
select autonomous_9();
autonomous throw exception.
NOTICE: autonomous throw exception.
CONTEXT: referenced column: autonomous_9
autonomous_9
--------------
@ -307,11 +312,12 @@ BEGIN
b := b/a;
EXCEPTION
WHEN division_by_zero THEN
dbe_output.print_line('inner autonomous exception.');
raise notice 'inner autonomous exception.';
END;
/
select autonomous_10();
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_10
autonomous_10
---------------
@ -324,11 +330,12 @@ BEGIN
autonomous_10();
EXCEPTION
WHEN division_by_zero THEN
dbe_output.print_line('autonomous throw exception.');
raise notice 'autonomous throw exception.';
END;
/
select autonomous_11();
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_10
autonomous_11
---------------
@ -415,39 +422,46 @@ DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert into t3 values(a, b, c);
dbe_output.print_line('inner autonomous exception.');
raise notice 'inner autonomous exception.';
autonomous_15(a, b, c);
END;
/
select autonomous_15(1,2,'1111');
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
@ -455,7 +469,8 @@ inner autonomous exception.
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
@ -464,7 +479,8 @@ inner autonomous exception.
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
@ -474,7 +490,8 @@ inner autonomous exception.
inner autonomous exception.
NOTICE: inner autonomous exception.
CONTEXT: referenced column: autonomous_15
@ -729,11 +746,11 @@ SET SESSION AUTHORIZATION jim PASSWORD 'gauss_123';
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
insert into t5 values(1,'aaa');
END;
/
just use call.
NOTICE: just use call.
ERROR: ERROR: permission denied for relation t5
DETAIL: N/A

View File

@ -1,5 +1,7 @@
create user user1 password '1234567i*';
grant all on schema public to user1;
create schema privilege_test;
grant all on schema privilege_test to user1;
set role user1 password '1234567i*';
CREATE TYPE public.int111 AS (f1 int, f2 int);
CREATE TYPE public.text111 AS (f1 text, f2 text);
@ -7,7 +9,7 @@ create table public.aa_int(aa int111);
create table public.bb_text(bb text111);
insert into public.aa_int values((111,222));
insert into public.bb_text values((111,222));
CREATE OR REPLACE FUNCTION public.text_int(text111)RETURNS int111 AS $$
CREATE OR REPLACE FUNCTION privilege_test.text_int(text111)RETURNS int111 AS $$
declare
res public.int111;
begin
@ -15,14 +17,22 @@ begin
res:=($1.f1::int,$1.f2::int);
return res;
end;$$ language plpgsql security invoker;
select public.text_int((111,222));
select privilege_test.text_int((111,222));
ERROR: Permission denied.
CONTEXT: SQL statement "alter USER user1 with sysadmin"
PL/pgSQL function text_int(text111) line 5 at SQL statement
PL/pgSQL function privilege_test.text_int(text111) line 5 at SQL statement
referenced column: text_int
CREATE CAST (text111 AS int111) WITH FUNCTION public.text_int(text111) AS IMPLICIT;
CREATE CAST (text111 AS int111) WITH FUNCTION privilege_test.text_int(text111) AS IMPLICIT;
reset role;
select aa ,bb from aa_int ,bb_text where aa_int.aa=bb_text.bb::int111;
ERROR: Permission denied.
CONTEXT: SQL statement "alter USER user1 with sysadmin"
PL/pgSQL function text_int(text111) line 5 at SQL statement
PL/pgSQL function privilege_test.text_int(text111) line 5 at SQL statement
drop table aa_int;
drop table bb_text;
drop type int111 cascade;
NOTICE: drop cascades to 2 other objects
DETAIL: drop cascades to function privilege_test.text_int(text111)
drop cascades to cast from text111 to int111
drop type text111 cascade;
drop user user1 cascade;

View File

@ -1,10 +1,10 @@
select oid, * from pg_proc where proname in ('first', 'first_transition', 'last', 'last_transition') order by oid;
oid | proname | pronamespace | proowner | prolang | procost | prorows | provariadic | protransform | proisagg | proiswindow | prosecdef | proleakproof | proisstrict | proretset | provolatile | pronargs | pronargdefaults | prorettype | proargtypes | proallargtypes | proargmodes | proargnames | proargdefaults | prosrc | probin | proconfig | proacl | prodefaultargpos | fencedmode | proshippable | propackage | prokind
------+------------------+--------------+----------+---------+---------+---------+-------------+--------------+----------+-------------+-----------+--------------+-------------+-----------+-------------+----------+-----------------+------------+-------------+----------------+-------------+-------------+----------------+------------------+--------+-----------+--------+------------------+------------+--------------+------------+---------
6558 | first_transition | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 2283 | 2283 2283 | | | | | first_transition | | | | | f | | f | f
6559 | last_transition | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 2283 | 2283 2283 | | | | | last_transition | | | | | f | | f | f
6560 | first | 11 | 10 | 12 | 1 | 0 | 0 | - | t | f | f | f | f | f | i | 1 | 0 | 2283 | 2283 | | | | | aggregate_dummy | | | | | f | | f | f
6561 | last | 11 | 10 | 12 | 1 | 0 | 0 | - | t | f | f | f | f | f | i | 1 | 0 | 2283 | 2283 | | | | | aggregate_dummy | | | | | f | | f | f
oid | proname | pronamespace | proowner | prolang | procost | prorows | provariadic | protransform | proisagg | proiswindow | prosecdef | proleakproof | proisstrict | proretset | provolatile | pronargs | pronargdefaults | prorettype | proargtypes | proallargtypes | proargmodes | proargnames | proargdefaults | prosrc | probin | proconfig | proacl | prodefaultargpos | fencedmode | proshippable | propackage | prokind | proargsrc | propackageid | proisprivate | proargtypesext | prodefaultargposext
------+------------------+--------------+----------+---------+---------+---------+-------------+--------------+----------+-------------+-----------+--------------+-------------+-----------+-------------+----------+-----------------+------------+-------------+----------------+-------------+-------------+----------------+------------------+--------+-----------+--------+------------------+------------+--------------+------------+---------+-----------+--------------+--------------+----------------+---------------------
6558 | first_transition | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 2283 | 2283 2283 | | | | | first_transition | | | | | f | | f | f | | 0 | f | |
6559 | last_transition | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 2283 | 2283 2283 | | | | | last_transition | | | | | f | | f | f | | 0 | f | |
6560 | first | 11 | 10 | 12 | 1 | 0 | 0 | - | t | f | f | f | f | f | i | 1 | 0 | 2283 | 2283 | | | | | aggregate_dummy | | | | | f | | f | f | | 0 | f | |
6561 | last | 11 | 10 | 12 | 1 | 0 | 0 | - | t | f | f | f | f | f | i | 1 | 0 | 2283 | 2283 | | | | | aggregate_dummy | | | | | f | | f | f | | 0 | f | |
(4 rows)
create table first_last_test(a int, b int, c int, d int);

View File

@ -473,25 +473,15 @@ INSERT INTO gtest23q VALUES (2, 5); -- error
ERROR: insert or update on table "gtest23q" violates foreign key constraint "gtest23q_b_fkey"
DETAIL: Key (b)=(5) is not present in table "gtest23p".
DROP TABLE gtest23q;
-- domains (domain is not yet supported.)
-- domains
CREATE DOMAIN gtestdomain1 AS int CHECK (VALUE < 10);
ERROR: domain is not yet supported.
CREATE TABLE gtest24 (a int PRIMARY KEY, b gtestdomain1 GENERATED ALWAYS AS (a * 2) STORED);
ERROR: type "gtestdomain1" does not exist
LINE 1: CREATE TABLE gtest24 (a int PRIMARY KEY, b gtestdomain1 GENE...
^
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "gtest24_pkey" for table "gtest24"
INSERT INTO gtest24 (a) VALUES (4); -- ok
ERROR: relation "gtest24" does not exist on datanode1
LINE 1: INSERT INTO gtest24 (a) VALUES (4);
^
INSERT INTO gtest24 (a) VALUES (6); -- error
ERROR: relation "gtest24" does not exist on datanode1
LINE 1: INSERT INTO gtest24 (a) VALUES (6);
^
ERROR: value for domain gtestdomain1 violates check constraint "gtestdomain1_check"
DROP TABLE gtest24;
ERROR: table "gtest24" does not exist
DROP DOMAIN gtestdomain1;
ERROR: type "gtestdomain1" does not exist
-- typed tables (currently not supported)
CREATE TYPE gtest_type AS (f1 integer, f2 text, f3 bigint);
CREATE TABLE gtest28 OF gtest_type (f1 WITH OPTIONS GENERATED ALWAYS AS (f2 *2) STORED);

View File

@ -228,11 +228,11 @@ Number of partition: 5 (View pg_partition to check each partition range.)
insert into test_gpi_create_like values(generate_series(0,9999), 1);
explain (costs off) select * from test_gpi_create_like where c1 = 0;
QUERY PLAN
-----------------------------------------------------------------
QUERY PLAN
--------------------------------------------------------------------
Bitmap Heap Scan on test_gpi_create_like
Recheck Cond: (c1 = 0)
-> Bitmap Index Scan on test_gpi_create_like_c1_tableoid_idx
-> Bitmap Index Scan on test_gpi_create_like_c1_c2_tableoid_idx
Index Cond: (c1 = 0)
(4 rows)

View File

@ -21,9 +21,9 @@ select a.relname,a.parttype,a.reloptions from pg_partition a, pg_class b where a
(2 rows)
explain (costs off) select * from test_gpi_more_invalid where a >= 3000;
QUERY PLAN
---------------------------------------------------------------------------
Index Scan using global_index_gpi_more_invalid_b on test_gpi_more_invalid
QUERY PLAN
------------------------------------------------------------------------------------
Index Only Scan using global_index_gpi_more_invalid_a_b_c on test_gpi_more_invalid
Index Cond: (a >= 3000)
(2 rows)
@ -55,10 +55,10 @@ explain (costs off) select count(*) from test_gpi_more_invalid where a <= 100 an
(4 rows)
explain (costs off) select count(*) from test_gpi_more_invalid where a > 3000;
QUERY PLAN
--------------------------------------------------------------------------------------
QUERY PLAN
------------------------------------------------------------------------------------------
Aggregate
-> Index Only Scan using global_index_gpi_more_invalid_b on test_gpi_more_invalid
-> Index Only Scan using global_index_gpi_more_invalid_a_b_c on test_gpi_more_invalid
Index Cond: (a > 3000)
(3 rows)

View File

@ -119,12 +119,11 @@ select * from gpi_index_test where a < 200 and b > 190 order by a;
-- multi column index with global index
create index gpi_index_test_global_a_b on gpi_index_test(a,b) global;
explain (costs off) select * from gpi_index_test where a = 200 and b = 100;
QUERY PLAN
------------------------------------------------------------
Index Scan using gpi_index_test_global_b on gpi_index_test
Index Cond: (b = 100)
Filter: (a = 200)
(3 rows)
QUERY PLAN
--------------------------------------------------------------
Index Scan using gpi_index_test_global_a_b on gpi_index_test
Index Cond: ((a = 200) AND (b = 100))
(2 rows)
select * from gpi_index_test where a = 100 and b = 100 order by a;
a | b | c

View File

@ -136,13 +136,13 @@ with type_oids as
)
select * from pg_cast where castsource in ( select * from type_oids )
or casttarget in ( select * from type_oids ) order by 1;
castsource | casttarget | castfunc | castcontext | castmethod
------------+------------+----------+-------------+------------
17 | 4301 | 0 | e | b
20 | 4303 | 0 | e | b
23 | 4303 | 4317 | e | f
4301 | 4301 | 4311 | i | f
4402 | 4301 | 0 | e | b
castsource | casttarget | castfunc | castcontext | castmethod | castowner
------------+------------+----------+-------------+------------+-----------
17 | 4301 | 0 | e | b |
20 | 4303 | 0 | e | b |
23 | 4303 | 4317 | e | f |
4301 | 4301 | 4311 | i | f |
4402 | 4301 | 0 | e | b |
(5 rows)
--final cleaning

View File

@ -568,6 +568,7 @@ end cnt;
create user user1 password 'huawei@123';
set session AUTHORIZATION user1 PASSWORD 'huawei@123';
reset session AUTHORIZATION;
DROP USER user1;
create or replace package commit_rollback_test as
procedure exec_func3(ret_num out int);
procedure exec_func4(add_num in int);

View File

@ -7,92 +7,92 @@ select oid,* from pg_type where typname like 'json%' order by oid;
(2 rows)
select oid,* from pg_proc where proname like '%json%' order by oid;
oid | proname | pronamespace | proowner | prolang | procost | prorows | provariadic | protransform | proisagg | proiswindow | prosecdef | proleakproof | proisstrict | proretset | provolatile | pronargs | pronargdefaults | prorettype | proargtypes | proallargtypes | proargmodes | proargnames | proargdefaults | prosrc | probin | proconfig | proacl | prodefaultargpos | fencedmode | proshippable | propackage | prokind
------+------------------------------+--------------+----------+---------+---------+---------+-------------+--------------+----------+-------------+-----------+--------------+-------------+-----------+-------------+----------+-----------------+------------+-------------------------------------+----------------+-------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+--------+-----------+--------+------------------+------------+--------------+------------+---------
321 | json_in | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 114 | 2275 | | | | | json_in | | | | | f | | f | f
322 | json_out | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 2275 | 114 | | | | | json_out | | | | | f | | f | f
323 | json_recv | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 114 | 2281 | | | | | json_recv | | | | | f | | f | f
324 | json_send | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 17 | 114 | | | | | json_send | | | | | f | | f | f
3079 | json_array_element_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 114 23 | | | | | json_array_element_text | | | | | f | f | f | f
3124 | json_agg | 11 | 10 | 12 | 1 | 0 | 0 | - | t | f | f | f | f | f | i | 1 | 0 | 114 | 2283 | | | | | aggregate_dummy | | | | | f | f | f | f
3125 | json_agg_finalfn | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 1 | 0 | 114 | 2281 | | | | | json_agg_finalfn | | | | | f | f | f | f
3126 | json_agg_transfn | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 2 | 0 | 2281 | 2281 2283 | | | | | json_agg_transfn | | | | | f | f | f | f
3127 | json_array_elements_text | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 25 | 114 | {114,25} | {i,o} | {from_json,value} | | json_array_elements_text | | | | | f | f | f | f
3128 | json_array_length | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 23 | 114 | | | | | json_array_length | | | | | f | f | f | f
3153 | array_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 1 | 0 | 114 | 2277 | | | | | array_to_json | | | | | f | | f | f
3154 | array_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 2 | 0 | 114 | 2277 16 | | | | | array_to_json_pretty | | | | | f | | f | f
3155 | row_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 1 | 0 | 114 | 2249 | | | | | row_to_json | | | | | f | | f | f
3156 | row_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 2 | 0 | 114 | 2249 16 | | | | | row_to_json_pretty | | | | | f | | f | f
3238 | json_build_array | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 0 | 0 | 114 | | | | | | json_build_array_noargs | | | | | f | f | f | f
3239 | json_build_array | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 1 | 0 | 114 | 2276 | {2276} | {v} | | | json_build_array | | | | | f | f | f | f
3258 | json_each | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 2249 | 114 | {114,25,114} | {i,o,o} | {from_json,key,value} | | json_each | | | | | f | f | f | f
3259 | json_each_text | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 2249 | 114 | {114,25,25} | {i,o,o} | {from_json,key,value} | | json_each_text | | | | | f | f | f | f
3260 | json_build_object | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 0 | 0 | 114 | | | | | | json_build_object_noargs | | | | | f | f | f | f
3261 | json_build_object | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 1 | 0 | 114 | 2276 | {2276} | {v} | | | json_build_object | | | | | f | f | f | f
3262 | json_extract_path | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 114 | 114 1009 | {114,1009} | {i,v} | | | json_extract_path | | | | | f | f | f | f
3263 | json_extract_path_op | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 114 | 114 1009 | | | | | json_extract_path | | | | | f | f | f | f
3264 | json_extract_path_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 114 1009 | {114,1009} | {i,v} | | | json_extract_path_text | | | | | f | f | f | f
3270 | json_typeof | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 25 | 114 | | | | | json_typeof | | | | | f | f | f | f
3318 | json_extract_path_text_op | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 114 1009 | | | | | json_extract_path_text | | | | | f | f | f | f
3319 | jsonb_extract_path_op | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 3802 | 3802 1009 | | | | | jsonb_extract_path | | | | | f | f | f | f
3401 | json_object | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 2 | 0 | 114 | 1009 1009 | | | | | json_object_two_arg | | | | | f | f | f | f
3402 | json_object | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 1 | 0 | 114 | 1009 | | | | | json_object | | | | | f | f | f | f
3403 | json_object_agg | 11 | 10 | 12 | 1 | 0 | 0 | - | t | f | f | f | f | f | i | 2 | 0 | 114 | 2276 2276 | | | | | aggregate_dummy | | | | | f | f | f | f
3404 | json_object_agg_finalfn | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 1 | 0 | 114 | 2281 | | | | | json_object_agg_finalfn | | | | | f | f | f | f
3405 | json_object_agg_transfn | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 3 | 0 | 2281 | 2281 2276 2276 | | | | | json_object_agg_transfn | | | | | f | f | f | f
3406 | json_object_field | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 114 | 114 25 | | | | | json_object_field | | | | | f | f | f | f
3407 | json_object_keys | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 25 | 114 | | | | | json_object_keys | | | | | f | f | f | f
3408 | json_populate_record | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | s | 3 | 1 | 2283 | 2283 114 16 | | | | ({CONST :consttype 16 :consttypmod -1 :constcollid 0 :constlen 1 :constbyval true :constisnull false :ismaxvalue false :location 72803 :constvalue 1 [ 0 0 0 0 0 0 0 0 ] :cursor_data :row_count 0 :cur_dno 0 :is_open false :found false :not_found false :null_open false :null_fetch false}) | json_populate_record | | | | 2 | f | f | f | f
3409 | json_populate_recordset | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | f | t | s | 3 | 1 | 2283 | 2283 114 16 | | | | ({CONST :consttype 16 :consttypmod -1 :constcollid 0 :constlen 1 :constbyval true :constisnull false :ismaxvalue false :location 72803 :constvalue 1 [ 0 0 0 0 0 0 0 0 ] :cursor_data :row_count 0 :cur_dno 0 :is_open false :found false :not_found false :null_open false :null_fetch false}) | json_populate_recordset | | | | 2 | f | f | f | f
3410 | json_to_record | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | s | 2 | 0 | 2249 | 114 16 | | | | | json_to_record | | | | | f | f | f | f
3411 | json_to_recordset | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | f | t | s | 2 | 0 | 2249 | 114 16 | | | | | json_to_recordset | | | | | f | f | f | f
3412 | jsonb_array_element | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 3802 | 3802 23 | | | | | jsonb_array_element | | | | | f | f | f | f
3413 | jsonb_array_element_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 3802 23 | | | | | jsonb_array_element_text | | | | | f | f | f | f
3414 | jsonb_array_elements | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 3802 | 3802 | {3802,3802} | {i,o} | {from_json,value} | | jsonb_array_elements | | | | | f | f | f | f
3415 | jsonb_array_elements_text | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 25 | 3802 | {3802,25} | {i,o} | {from_json,value} | | jsonb_array_elements_text | | | | | f | f | f | f
3416 | jsonb_array_length | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 23 | 3802 | | | | | jsonb_array_length | | | | | f | f | f | f
3417 | jsonb_cmp | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 23 | 3802 3802 | | | | | jsonb_cmp | | | | | f | f | f | f
3418 | jsonb_contains | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_contains | | | | | f | f | f | f
3419 | jsonb_each | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 2249 | 3802 | {3802,25,3802} | {i,o,o} | {from_json,key,value} | | jsonb_each | | | | | f | f | f | f
3420 | jsonb_each_text | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 2249 | 3802 | {3802,25,25} | {i,o,o} | {from_json,key,value} | | jsonb_each_text | | | | | f | f | f | f
3421 | jsonb_eq | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_eq | | | | | f | f | f | f
3422 | jsonb_exists | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 25 | | | | | jsonb_exists | | | | | f | f | f | f
3423 | jsonb_exists_all | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 1009 | | | | | jsonb_exists_all | | | | | f | f | f | f
3424 | jsonb_exists_any | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 1009 | | | | | jsonb_exists_any | | | | | f | f | f | f
3425 | jsonb_extract_path | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 3802 | 3802 1009 | {3802,1009} | {i,v} | | | jsonb_extract_path | | | | | f | f | f | f
3426 | jsonb_extract_path_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 3802 1009 | {3802,1009} | {i,v} | | | jsonb_extract_path_text | | | | | f | f | f | f
3427 | jsonb_extract_path_text_op | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 3802 1009 | | | | | jsonb_extract_path_text | | | | | f | f | f | f
3428 | jsonb_ge | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_ge | | | | | f | f | f | f
3429 | jsonb_gt | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_gt | | | | | f | f | f | f
3430 | jsonb_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 23 | 3802 | | | | | jsonb_hash | | | | | f | f | f | f
3431 | jsonb_le | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_le | | | | | f | f | f | f
3432 | jsonb_ne | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_ne | | | | | f | f | f | f
3433 | jsonb_object_field | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 3802 | 3802 25 | | | | | jsonb_object_field | | | | | f | f | f | f
3434 | jsonb_object_field_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 3802 25 | | | | | jsonb_object_field_text | | | | | f | f | f | f
3435 | jsonb_object_keys | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 25 | 3802 | | | | | jsonb_object_keys | | | | | f | f | f | f
3436 | jsonb_out | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 2275 | 3802 | | | | | jsonb_out | | | | | f | f | f | f
3437 | jsonb_populate_record | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | s | 3 | 1 | 2283 | 2283 3802 16 | | | | ({CONST :consttype 16 :consttypmod -1 :constcollid 0 :constlen 1 :constbyval true :constisnull false :ismaxvalue false :location 72803 :constvalue 1 [ 0 0 0 0 0 0 0 0 ] :cursor_data :row_count 0 :cur_dno 0 :is_open false :found false :not_found false :null_open false :null_fetch false}) | jsonb_populate_record | | | | 2 | f | f | f | f
3438 | jsonb_populate_recordset | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | f | t | s | 3 | 1 | 2283 | 2283 3802 16 | | | | ({CONST :consttype 16 :consttypmod -1 :constcollid 0 :constlen 1 :constbyval true :constisnull false :ismaxvalue false :location 72803 :constvalue 1 [ 0 0 0 0 0 0 0 0 ] :cursor_data :row_count 0 :cur_dno 0 :is_open false :found false :not_found false :null_open false :null_fetch false}) | jsonb_populate_recordset | | | | 2 | f | f | f | f
3443 | jsonb_recv | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 3802 | 2281 | | | | | jsonb_recv | | | | | f | f | f | f
3444 | jsonb_send | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 17 | 3802 | | | | | jsonb_send | | | | | f | f | f | f
3445 | jsonb_typeof | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 25 | 3802 | | | | | jsonb_typeof | | | | | f | f | f | f
3446 | to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 1 | 0 | 114 | 2283 | | | | | to_json | | | | | f | f | f | f
3482 | gin_extract_jsonb | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 3 | 0 | 2281 | 2281 2281 2281 | | | | | gin_extract_jsonb | | | | | f | f | f | f
3486 | gin_extract_jsonb_query_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 7 | 0 | 2281 | 2277 2281 21 2281 2281 2281 2281 | | | | | gin_extract_jsonb_query_hash | | | | | f | f | f | f
3487 | gin_consistent_jsonb_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 8 | 0 | 16 | 2281 21 2277 23 2281 2281 2281 2281 | | | | | gin_consistent_jsonb_hash | | | | | f | f | f | f
3492 | gin_extract_jsonb_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 3 | 0 | 2281 | 2281 2281 2281 | | | | | gin_extract_jsonb_hash | | | | | f | f | f | f
3493 | gin_extract_jsonb_query | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 7 | 0 | 2281 | 2277 2281 21 2281 2281 2281 2281 | | | | | gin_extract_jsonb_query | | | | | f | f | f | f
3494 | gin_triconsistent_jsonb | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 7 | 0 | 16 | 2281 21 2277 23 2281 2281 2281 | | | | | gin_triconsistent_jsonb | | | | | f | f | f | f
3495 | gin_triconsistent_jsonb_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 7 | 0 | 16 | 2281 21 2277 23 2281 2281 2281 | | | | | gin_triconsistent_jsonb_hash | | | | | f | f | f | f
3497 | gin_consistent_jsonb | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 8 | 0 | 16 | 2281 21 2277 23 2281 2281 2281 2281 | | | | | gin_consistent_jsonb | | | | | f | f | f | f
3498 | gin_compare_jsonb | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 23 | 25 25 | | | | | gin_compare_jsonb | | | | | f | f | f | f
3549 | json_array_elements | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 114 | 114 | {114,114} | {i,o} | {from_json,value} | | json_array_elements | | | | | f | f | f | f
3806 | jsonb_in | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 3802 | 2275 | | | | | jsonb_in | | | | | f | f | f | f
3948 | json_object_field_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 114 25 | | | | | json_object_field_text | | | | | f | f | f | f
3949 | json_array_element | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 114 | 114 23 | | | | | json_array_element | | | | | f | f | f | f
4039 | jsonb_lt | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_lt | | | | | f | f | f | f
4050 | jsonb_contained | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_contained | | | | | f | f | f | f
5719 | capture_view_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | v | 2 | 0 | 23 | 25 23 | | {i,i} | {view_name,is_all_db} | | capture_view_to_json | | | | | f | f | f | f
oid | proname | pronamespace | proowner | prolang | procost | prorows | provariadic | protransform | proisagg | proiswindow | prosecdef | proleakproof | proisstrict | proretset | provolatile | pronargs | pronargdefaults | prorettype | proargtypes | proallargtypes | proargmodes | proargnames | proargdefaults | prosrc | probin | proconfig | proacl | prodefaultargpos | fencedmode | proshippable | propackage | prokind | proargsrc | propackageid | proisprivate | proargtypesext | prodefaultargposext
------+------------------------------+--------------+----------+---------+---------+---------+-------------+--------------+----------+-------------+-----------+--------------+-------------+-----------+-------------+----------+-----------------+------------+-------------------------------------+----------------+-------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+--------+-----------+--------+------------------+------------+--------------+------------+---------+-----------+--------------+--------------+----------------+---------------------
321 | json_in | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 114 | 2275 | | | | | json_in | | | | | f | | f | f | | 0 | f | |
322 | json_out | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 2275 | 114 | | | | | json_out | | | | | f | | f | f | | 0 | f | |
323 | json_recv | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 114 | 2281 | | | | | json_recv | | | | | f | | f | f | | 0 | f | |
324 | json_send | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 17 | 114 | | | | | json_send | | | | | f | | f | f | | 0 | f | |
3079 | json_array_element_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 114 23 | | | | | json_array_element_text | | | | | f | f | f | f | | 0 | f | |
3124 | json_agg | 11 | 10 | 12 | 1 | 0 | 0 | - | t | f | f | f | f | f | i | 1 | 0 | 114 | 2283 | | | | | aggregate_dummy | | | | | f | f | f | f | | 0 | f | |
3125 | json_agg_finalfn | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 1 | 0 | 114 | 2281 | | | | | json_agg_finalfn | | | | | f | f | f | f | | 0 | f | |
3126 | json_agg_transfn | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 2 | 0 | 2281 | 2281 2283 | | | | | json_agg_transfn | | | | | f | f | f | f | | 0 | f | |
3127 | json_array_elements_text | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 25 | 114 | {114,25} | {i,o} | {from_json,value} | | json_array_elements_text | | | | | f | f | f | f | | 0 | f | |
3128 | json_array_length | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 23 | 114 | | | | | json_array_length | | | | | f | f | f | f | | 0 | f | |
3153 | array_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 1 | 0 | 114 | 2277 | | | | | array_to_json | | | | | f | | f | f | | 0 | f | |
3154 | array_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 2 | 0 | 114 | 2277 16 | | | | | array_to_json_pretty | | | | | f | | f | f | | 0 | f | |
3155 | row_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 1 | 0 | 114 | 2249 | | | | | row_to_json | | | | | f | | f | f | | 0 | f | |
3156 | row_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 2 | 0 | 114 | 2249 16 | | | | | row_to_json_pretty | | | | | f | | f | f | | 0 | f | |
3238 | json_build_array | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 0 | 0 | 114 | | | | | | json_build_array_noargs | | | | | f | f | f | f | | 0 | f | |
3239 | json_build_array | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 1 | 0 | 114 | 2276 | {2276} | {v} | | | json_build_array | | | | | f | f | f | f | | 0 | f | |
3258 | json_each | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 2249 | 114 | {114,25,114} | {i,o,o} | {from_json,key,value} | | json_each | | | | | f | f | f | f | | 0 | f | |
3259 | json_each_text | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 2249 | 114 | {114,25,25} | {i,o,o} | {from_json,key,value} | | json_each_text | | | | | f | f | f | f | | 0 | f | |
3260 | json_build_object | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 0 | 0 | 114 | | | | | | json_build_object_noargs | | | | | f | f | f | f | | 0 | f | |
3261 | json_build_object | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 1 | 0 | 114 | 2276 | {2276} | {v} | | | json_build_object | | | | | f | f | f | f | | 0 | f | |
3262 | json_extract_path | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 114 | 114 1009 | {114,1009} | {i,v} | | | json_extract_path | | | | | f | f | f | f | | 0 | f | |
3263 | json_extract_path_op | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 114 | 114 1009 | | | | | json_extract_path | | | | | f | f | f | f | | 0 | f | |
3264 | json_extract_path_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 114 1009 | {114,1009} | {i,v} | | | json_extract_path_text | | | | | f | f | f | f | | 0 | f | |
3270 | json_typeof | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 25 | 114 | | | | | json_typeof | | | | | f | f | f | f | | 0 | f | |
3318 | json_extract_path_text_op | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 114 1009 | | | | | json_extract_path_text | | | | | f | f | f | f | | 0 | f | |
3319 | jsonb_extract_path_op | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 3802 | 3802 1009 | | | | | jsonb_extract_path | | | | | f | f | f | f | | 0 | f | |
3401 | json_object | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 2 | 0 | 114 | 1009 1009 | | | | | json_object_two_arg | | | | | f | f | f | f | | 0 | f | |
3402 | json_object | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 1 | 0 | 114 | 1009 | | | | | json_object | | | | | f | f | f | f | | 0 | f | |
3403 | json_object_agg | 11 | 10 | 12 | 1 | 0 | 0 | - | t | f | f | f | f | f | i | 2 | 0 | 114 | 2276 2276 | | | | | aggregate_dummy | | | | | f | f | f | f | | 0 | f | |
3404 | json_object_agg_finalfn | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 1 | 0 | 114 | 2281 | | | | | json_object_agg_finalfn | | | | | f | f | f | f | | 0 | f | |
3405 | json_object_agg_transfn | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | i | 3 | 0 | 2281 | 2281 2276 2276 | | | | | json_object_agg_transfn | | | | | f | f | f | f | | 0 | f | |
3406 | json_object_field | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 114 | 114 25 | | | | | json_object_field | | | | | f | f | f | f | | 0 | f | |
3407 | json_object_keys | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 25 | 114 | | | | | json_object_keys | | | | | f | f | f | f | | 0 | f | |
3408 | json_populate_record | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | s | 3 | 1 | 2283 | 2283 114 16 | | | | ({CONST :consttype 16 :consttypmod -1 :constcollid 0 :constlen 1 :constbyval true :constisnull false :ismaxvalue false :location 72803 :constvalue 1 [ 0 0 0 0 0 0 0 0 ] :cursor_data :row_count 0 :cur_dno 0 :is_open false :found false :not_found false :null_open false :null_fetch false}) | json_populate_record | | | | 2 | f | f | f | f | | 0 | f | |
3409 | json_populate_recordset | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | f | t | s | 3 | 1 | 2283 | 2283 114 16 | | | | ({CONST :consttype 16 :consttypmod -1 :constcollid 0 :constlen 1 :constbyval true :constisnull false :ismaxvalue false :location 72803 :constvalue 1 [ 0 0 0 0 0 0 0 0 ] :cursor_data :row_count 0 :cur_dno 0 :is_open false :found false :not_found false :null_open false :null_fetch false}) | json_populate_recordset | | | | 2 | f | f | f | f | | 0 | f | |
3410 | json_to_record | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | s | 2 | 0 | 2249 | 114 16 | | | | | json_to_record | | | | | f | f | f | f | | 0 | f | |
3411 | json_to_recordset | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | f | t | s | 2 | 0 | 2249 | 114 16 | | | | | json_to_recordset | | | | | f | f | f | f | | 0 | f | |
3412 | jsonb_array_element | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 3802 | 3802 23 | | | | | jsonb_array_element | | | | | f | f | f | f | | 0 | f | |
3413 | jsonb_array_element_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 3802 23 | | | | | jsonb_array_element_text | | | | | f | f | f | f | | 0 | f | |
3414 | jsonb_array_elements | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 3802 | 3802 | {3802,3802} | {i,o} | {from_json,value} | | jsonb_array_elements | | | | | f | f | f | f | | 0 | f | |
3415 | jsonb_array_elements_text | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 25 | 3802 | {3802,25} | {i,o} | {from_json,value} | | jsonb_array_elements_text | | | | | f | f | f | f | | 0 | f | |
3416 | jsonb_array_length | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 23 | 3802 | | | | | jsonb_array_length | | | | | f | f | f | f | | 0 | f | |
3417 | jsonb_cmp | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 23 | 3802 3802 | | | | | jsonb_cmp | | | | | f | f | f | f | | 0 | f | |
3418 | jsonb_contains | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_contains | | | | | f | f | f | f | | 0 | f | |
3419 | jsonb_each | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 2249 | 3802 | {3802,25,3802} | {i,o,o} | {from_json,key,value} | | jsonb_each | | | | | f | f | f | f | | 0 | f | |
3420 | jsonb_each_text | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 2249 | 3802 | {3802,25,25} | {i,o,o} | {from_json,key,value} | | jsonb_each_text | | | | | f | f | f | f | | 0 | f | |
3421 | jsonb_eq | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_eq | | | | | f | f | f | f | | 0 | f | |
3422 | jsonb_exists | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 25 | | | | | jsonb_exists | | | | | f | f | f | f | | 0 | f | |
3423 | jsonb_exists_all | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 1009 | | | | | jsonb_exists_all | | | | | f | f | f | f | | 0 | f | |
3424 | jsonb_exists_any | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 1009 | | | | | jsonb_exists_any | | | | | f | f | f | f | | 0 | f | |
3425 | jsonb_extract_path | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 3802 | 3802 1009 | {3802,1009} | {i,v} | | | jsonb_extract_path | | | | | f | f | f | f | | 0 | f | |
3426 | jsonb_extract_path_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 3802 1009 | {3802,1009} | {i,v} | | | jsonb_extract_path_text | | | | | f | f | f | f | | 0 | f | |
3427 | jsonb_extract_path_text_op | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 3802 1009 | | | | | jsonb_extract_path_text | | | | | f | f | f | f | | 0 | f | |
3428 | jsonb_ge | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_ge | | | | | f | f | f | f | | 0 | f | |
3429 | jsonb_gt | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_gt | | | | | f | f | f | f | | 0 | f | |
3430 | jsonb_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 23 | 3802 | | | | | jsonb_hash | | | | | f | f | f | f | | 0 | f | |
3431 | jsonb_le | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_le | | | | | f | f | f | f | | 0 | f | |
3432 | jsonb_ne | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_ne | | | | | f | f | f | f | | 0 | f | |
3433 | jsonb_object_field | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 3802 | 3802 25 | | | | | jsonb_object_field | | | | | f | f | f | f | | 0 | f | |
3434 | jsonb_object_field_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 3802 25 | | | | | jsonb_object_field_text | | | | | f | f | f | f | | 0 | f | |
3435 | jsonb_object_keys | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 25 | 3802 | | | | | jsonb_object_keys | | | | | f | f | f | f | | 0 | f | |
3436 | jsonb_out | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 2275 | 3802 | | | | | jsonb_out | | | | | f | f | f | f | | 0 | f | |
3437 | jsonb_populate_record | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | s | 3 | 1 | 2283 | 2283 3802 16 | | | | ({CONST :consttype 16 :consttypmod -1 :constcollid 0 :constlen 1 :constbyval true :constisnull false :ismaxvalue false :location 72803 :constvalue 1 [ 0 0 0 0 0 0 0 0 ] :cursor_data :row_count 0 :cur_dno 0 :is_open false :found false :not_found false :null_open false :null_fetch false}) | jsonb_populate_record | | | | 2 | f | f | f | f | | 0 | f | |
3438 | jsonb_populate_recordset | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | f | t | s | 3 | 1 | 2283 | 2283 3802 16 | | | | ({CONST :consttype 16 :consttypmod -1 :constcollid 0 :constlen 1 :constbyval true :constisnull false :ismaxvalue false :location 72803 :constvalue 1 [ 0 0 0 0 0 0 0 0 ] :cursor_data :row_count 0 :cur_dno 0 :is_open false :found false :not_found false :null_open false :null_fetch false}) | jsonb_populate_recordset | | | | 2 | f | f | f | f | | 0 | f | |
3443 | jsonb_recv | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 3802 | 2281 | | | | | jsonb_recv | | | | | f | f | f | f | | 0 | f | |
3444 | jsonb_send | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 17 | 3802 | | | | | jsonb_send | | | | | f | f | f | f | | 0 | f | |
3445 | jsonb_typeof | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 25 | 3802 | | | | | jsonb_typeof | | | | | f | f | f | f | | 0 | f | |
3446 | to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | s | 1 | 0 | 114 | 2283 | | | | | to_json | | | | | f | f | f | f | | 0 | f | |
3482 | gin_extract_jsonb | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 3 | 0 | 2281 | 2281 2281 2281 | | | | | gin_extract_jsonb | | | | | f | f | f | f | | 0 | f | |
3486 | gin_extract_jsonb_query_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 7 | 0 | 2281 | 2277 2281 21 2281 2281 2281 2281 | | | | | gin_extract_jsonb_query_hash | | | | | f | f | f | f | | 0 | f | |
3487 | gin_consistent_jsonb_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 8 | 0 | 16 | 2281 21 2277 23 2281 2281 2281 2281 | | | | | gin_consistent_jsonb_hash | | | | | f | f | f | f | | 0 | f | |
3492 | gin_extract_jsonb_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 3 | 0 | 2281 | 2281 2281 2281 | | | | | gin_extract_jsonb_hash | | | | | f | f | f | f | | 0 | f | |
3493 | gin_extract_jsonb_query | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 7 | 0 | 2281 | 2277 2281 21 2281 2281 2281 2281 | | | | | gin_extract_jsonb_query | | | | | f | f | f | f | | 0 | f | |
3494 | gin_triconsistent_jsonb | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 7 | 0 | 16 | 2281 21 2277 23 2281 2281 2281 | | | | | gin_triconsistent_jsonb | | | | | f | f | f | f | | 0 | f | |
3495 | gin_triconsistent_jsonb_hash | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 7 | 0 | 16 | 2281 21 2277 23 2281 2281 2281 | | | | | gin_triconsistent_jsonb_hash | | | | | f | f | f | f | | 0 | f | |
3497 | gin_consistent_jsonb | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 8 | 0 | 16 | 2281 21 2277 23 2281 2281 2281 2281 | | | | | gin_consistent_jsonb | | | | | f | f | f | f | | 0 | f | |
3498 | gin_compare_jsonb | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 23 | 25 25 | | | | | gin_compare_jsonb | | | | | f | f | f | f | | 0 | f | |
3549 | json_array_elements | 11 | 10 | 12 | 1 | 100 | 0 | - | f | f | f | f | t | t | i | 1 | 0 | 114 | 114 | {114,114} | {i,o} | {from_json,value} | | json_array_elements | | | | | f | f | f | f | | 0 | f | |
3806 | jsonb_in | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 1 | 0 | 3802 | 2275 | | | | | jsonb_in | | | | | f | f | f | f | | 0 | f | |
3948 | json_object_field_text | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 25 | 114 25 | | | | | json_object_field_text | | | | | f | f | f | f | | 0 | f | |
3949 | json_array_element | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 114 | 114 23 | | | | | json_array_element | | | | | f | f | f | f | | 0 | f | |
4039 | jsonb_lt | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_lt | | | | | f | f | f | f | | 0 | f | |
4050 | jsonb_contained | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | t | f | i | 2 | 0 | 16 | 3802 3802 | | | | | jsonb_contained | | | | | f | f | f | f | | 0 | f | |
5719 | capture_view_to_json | 11 | 10 | 12 | 1 | 0 | 0 | - | f | f | f | f | f | f | v | 2 | 0 | 23 | 25 23 | | {i,i} | {view_name,is_all_db} | | capture_view_to_json | | | | | f | f | f | f | | 0 | f | |
(84 rows)
select * from pg_aggregate where aggfnoid in (3124, 3403) order by aggfnoid;

View File

@ -21,18 +21,18 @@ prepare p1(int,int) as SELECT * FROM r INNER JOIN h ON r.a=$1 and h.a=$2;
explain execute p1(10,10);
QUERY PLAN
---------------------------------------------------------------------------------
Nested Loop (cost=0.00..66.27 rows=121 width=16)
-> Partition Iterator (cost=0.00..27.86 rows=11 width=8)
Iterations: PART
-> Partitioned Seq Scan on r (cost=0.00..27.86 rows=11 width=8)
Nested Loop (cost=0.00..75.27 rows=121 width=16)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: 4
-> Partitioned Seq Scan on r (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $1)
Selected Partitions: PART
Selected Partitions: 1..4
-> Materialize (cost=0.00..36.92 rows=11 width=8)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on h (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $2)
Selected Partitions: PART
Selected Partitions: 1..2
(12 rows)
execute p1(10,10);
@ -45,27 +45,27 @@ prepare p2(int,int,int,int) as select * from r inner join h on r.a=$1 and h.a=$2
explain execute p2(1,1,1,1);
QUERY PLAN
---------------------------------------------------------------------------------------------
Result (cost=0.00..119.80 rows=1331 width=24)
Result (cost=0.00..128.79 rows=1331 width=24)
One-Time Filter: ($1 = $3)
-> Nested Loop (cost=0.00..119.80 rows=1331 width=24)
-> Nested Loop (cost=0.00..66.27 rows=121 width=16)
-> Partition Iterator (cost=0.00..27.86 rows=11 width=8)
Iterations: PART
-> Partitioned Seq Scan on r (cost=0.00..27.86 rows=11 width=8)
-> Nested Loop (cost=0.00..128.79 rows=1331 width=24)
-> Nested Loop (cost=0.00..75.27 rows=121 width=16)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: 4
-> Partitioned Seq Scan on r (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $3)
Selected Partitions: PART
Selected Partitions: 1..4
-> Materialize (cost=0.00..36.92 rows=11 width=8)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on h (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $2)
Selected Partitions: PART
Selected Partitions: 1..2
-> Materialize (cost=0.00..36.92 rows=11 width=8)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on l (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $4)
Selected Partitions: PART
Selected Partitions: 1..2
(21 rows)
execute p2(1,1,1,1);
@ -78,18 +78,18 @@ prepare p3(int,int) as SELECT * FROM r right JOIN h ON r.a=$1 and h.a=$2;
explain execute p3(10,10);
QUERY PLAN
---------------------------------------------------------------------------------
Nested Loop Left Join (cost=0.00..413.97 rows=2149 width=16)
Nested Loop Left Join (cost=0.00..422.97 rows=2149 width=16)
Join Filter: (h.a = $2)
-> Partition Iterator (cost=0.00..31.49 rows=2149 width=8)
Iterations: 2
-> Partitioned Seq Scan on h (cost=0.00..31.49 rows=2149 width=8)
Selected Partitions: 1..2
-> Materialize (cost=0.00..27.92 rows=11 width=8)
-> Partition Iterator (cost=0.00..27.86 rows=11 width=8)
Iterations: PART
-> Partitioned Seq Scan on r (cost=0.00..27.86 rows=11 width=8)
-> Materialize (cost=0.00..36.92 rows=11 width=8)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: 4
-> Partitioned Seq Scan on r (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $1)
Selected Partitions: PART
Selected Partitions: 1..4
(12 rows)
prepare p4(int,int) as SELECT * FROM r left JOIN h ON r.a=$1 and h.a=$2;
@ -104,10 +104,10 @@ explain execute p4(10,10);
Selected Partitions: 1..4
-> Materialize (cost=0.00..36.92 rows=11 width=8)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on h (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $2)
Selected Partitions: PART
Selected Partitions: 1..2
(12 rows)
prepare p5(int,int) as SELECT * FROM h right JOIN l ON h.a=$1 and l.a=$2;
@ -122,10 +122,10 @@ explain execute p5(10,10);
Selected Partitions: 1..2
-> Materialize (cost=0.00..36.92 rows=11 width=8)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on h (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $1)
Selected Partitions: PART
Selected Partitions: 1..2
(12 rows)
prepare p6(int,int) as SELECT * FROM h left JOIN l ON h.a=$1 and l.a=$2;
@ -140,10 +140,10 @@ explain execute p6(10,10);
Selected Partitions: 1..2
-> Materialize (cost=0.00..36.92 rows=11 width=8)
-> Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on l (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $2)
Selected Partitions: PART
Selected Partitions: 1..2
(12 rows)
prepare p7(int) as SELECT * FROM h where h.a=$1;
@ -151,10 +151,10 @@ explain execute p7(10);
QUERY PLAN
---------------------------------------------------------------------
Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on h (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $1)
Selected Partitions: PART
Selected Partitions: 1..2
(5 rows)
execute p7(10);
@ -170,10 +170,10 @@ explain execute p8(18);
Sort (cost=76.19..77.98 rows=716 width=8)
Sort Key: a
-> Partition Iterator (cost=0.00..42.23 rows=716 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on h (cost=0.00..42.23 rows=716 width=8)
Filter: (a <= ($1 + 10))
Selected Partitions: PART
Selected Partitions: 1..2
(7 rows)
execute p8(18);
@ -214,10 +214,10 @@ explain execute p9(1);
QUERY PLAN
---------------------------------------------------------------------
Partition Iterator (cost=0.00..36.86 rows=11 width=8)
Iterations: PART
Iterations: 2
-> Partitioned Seq Scan on l (cost=0.00..36.86 rows=11 width=8)
Filter: (a = $1)
Selected Partitions: PART
Selected Partitions: 1..2
(5 rows)
execute p9(1);

View File

@ -2895,6 +2895,16 @@ WHERE d.classoid IS NULL AND p1.oid <= 9999 order by 1;
6321 | pg_stat_file_recursive
6322 | gs_decrypt
6323 | gs_encrypt
6555 | array_remove
6556 | array_replace
6558 | first_transition
6559 | last_transition
6560 | first
6561 | last
6666 | network_larger
6667 | network_smaller
6668 | max
6669 | min
7000 | pg_stat_segment_space_info
7001 | pg_stat_segment_extent_usage
7002 | gs_space_shrink
@ -2904,10 +2914,6 @@ WHERE d.classoid IS NULL AND p1.oid <= 9999 order by 1;
7006 | local_space_shrink
7007 | remote_segment_space_info
7008 | global_space_shrink
6666 | network_larger
6667 | network_smaller
6668 | max
6669 | min
7101 | db4ai_predict_by_bool
7102 | db4ai_predict_by_int32
7103 | db4ai_predict_by_int64
@ -2915,12 +2921,6 @@ WHERE d.classoid IS NULL AND p1.oid <= 9999 order by 1;
7106 | db4ai_predict_by_float8
7107 | db4ai_predict_by_numeric
7108 | db4ai_predict_by_text
6555 | array_remove
6556 | array_replace
6558 | first_transition
6559 | last_transition
6560 | first
6561 | last
7777 | sysdate
7800 | init
7801 | analyze_query

View File

@ -26,6 +26,7 @@ GRANT INSERT ON TABLE test_sch.test_table TO test_acl;
REVOKE ALL PRIVILEGES ON PROCEDURE test_sch.test_pro(num1 integer, num2 varchar(20)) FROM test_acl;
\! @abs_bindir@/gsql -r -p @portstring@ -d regression -U test_acl -W 'openGauss@123' -c 'ALTER PROCEDURE test_sch.test_pro(num1 integer, num2 varchar(20)) RENAME TO new_test_pro;'
ERROR: permission denied for function test_sch.test_pro
DETAIL: N/A
ALTER PROCEDURE test_sch.test_pro(num1 integer, num2 varchar(20)) OWNER TO test_owner;
GRANT ALL PRIVILEGES ON PROCEDURE test_sch.test_pro(num1 integer, num2 varchar(20)) TO test_acl;
SELECT p.proname, r.rolname FROM PG_PROC AS p, pg_roles AS r WHERE p.proowner=r.oid AND proname='test_pro';

View File

@ -329,7 +329,7 @@ test: upsert_001 upsert_002 upsert_003 upsert_008 upsert_009 upsert_010
test: upsert_grammer_test_01 upsert_unlog_test upsert_tmp_test
test: upsert_grammer_test_02 upsert_restriction upsert_composite
test: upsert_trigger_test upsert_explain
test: upsert_subquery
#test: upsert_subquery
test: upsert_clean
# all pass
@ -768,7 +768,7 @@ test: autonomous_test
#test jdbc pbe for bypass
test: bypass_pbe
#test: partition for hash list
test: pbe_hash_list_partition
test: pbe_hash_list_partition
test: hw_partition_list_insert
test: hw_partition_list_ddl
test: hw_partition_hash_insert
@ -798,7 +798,7 @@ test: rule_test
#delete limit
test: delete_limit
test: hotpatch
#test: hotpatch
# --------------------------
# DB4AI
@ -831,8 +831,7 @@ test: comment_proc
test: hw_package
test: procedure_privilege_test
test: cast_privileges_test
test: hw_package hw_dbms_sql1
#test: hw_dbms_sql1
test: hw_cipher_sm4
test: hw_cipher_aes128
test: hw_pwd_encryption_sm3
test: sequence_cache_test

View File

@ -11,7 +11,7 @@ DECLARE
res int;
res2 text;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
res2 := 'aa55';
res := 55;
END;
@ -22,7 +22,7 @@ create table t1(a int ,b text);
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
insert into t1 values(1,'you are so cute!');
END;
/
@ -39,7 +39,7 @@ START TRANSACTION;
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
insert into t1 values(1,'you are so cute,will commit!');
END;
/
@ -61,7 +61,7 @@ BEGIN
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
insert into t1 values(1,'can you rollback!');
END;
insert into t1 values(2,'I will rollback!');
@ -81,7 +81,7 @@ DECLARE
res int := 0;
res2 int := 1;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
res2 = res2/res;
END;
/
@ -94,11 +94,11 @@ DECLARE
res int := 0;
res2 int := 1;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
res2 = res2/res;
EXCEPTION
WHEN division_by_zero THEN
dbe_output.print_line('autonomous throw exception.');
raise notice 'autonomous throw exception.';
END;
/
@ -152,13 +152,13 @@ DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert into t2 values(num3, num4);
dbe_output.print_line('just use call.');
raise notice 'just use call.';
END;
/
CREATE OR REPLACE PROCEDURE autonomous_5(a int, b int) AS
DECLARE
BEGIN
dbe_output.print_line('just no use call.');
raise notice 'just no use call.';
insert into t2 values(666, 666);
autonomous_4(a,b);
rollback;
@ -181,14 +181,14 @@ DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert into t2 values(num3, num4);
dbe_output.print_line('just use call.');
raise notice 'just use call.';
rollback;
END;
/
CREATE OR REPLACE PROCEDURE autonomous_7(a int, b int) AS
DECLARE
BEGIN
dbe_output.print_line('just no use call.');
raise notice 'just no use call.';
insert into t2 values(666, 666);
autonomous_6(a,b);
END;
@ -221,7 +221,7 @@ BEGIN
autonomous_8();
EXCEPTION
WHEN division_by_zero THEN
dbe_output.print_line('autonomous throw exception.');
raise notice 'autonomous throw exception.';
END;
/
@ -242,7 +242,7 @@ BEGIN
b := b/a;
EXCEPTION
WHEN division_by_zero THEN
dbe_output.print_line('inner autonomous exception.');
raise notice 'inner autonomous exception.';
END;
/
select autonomous_10();
@ -253,7 +253,7 @@ BEGIN
autonomous_10();
EXCEPTION
WHEN division_by_zero THEN
dbe_output.print_line('autonomous throw exception.');
raise notice 'autonomous throw exception.';
END;
/
@ -322,7 +322,7 @@ DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert into t3 values(a, b, c);
dbe_output.print_line('inner autonomous exception.');
raise notice 'inner autonomous exception.';
autonomous_15(a, b, c);
END;
/
@ -490,7 +490,7 @@ SET SESSION AUTHORIZATION jim PASSWORD 'gauss_123';
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
dbe_output.print_line('just use call.');
raise notice 'just use call.';
insert into t5 values(1,'aaa');
END;
/

View File

@ -1,5 +1,7 @@
create user user1 password '1234567i*';
grant all on schema public to user1;
create schema privilege_test;
grant all on schema privilege_test to user1;
set role user1 password '1234567i*';
CREATE TYPE public.int111 AS (f1 int, f2 int);
@ -9,7 +11,7 @@ create table public.bb_text(bb text111);
insert into public.aa_int values((111,222));
insert into public.bb_text values((111,222));
CREATE OR REPLACE FUNCTION public.text_int(text111)RETURNS int111 AS $$
CREATE OR REPLACE FUNCTION privilege_test.text_int(text111)RETURNS int111 AS $$
declare
res public.int111;
begin
@ -18,7 +20,12 @@ begin
return res;
end;$$ language plpgsql security invoker;
select public.text_int((111,222));
CREATE CAST (text111 AS int111) WITH FUNCTION public.text_int(text111) AS IMPLICIT;
select privilege_test.text_int((111,222));
CREATE CAST (text111 AS int111) WITH FUNCTION privilege_test.text_int(text111) AS IMPLICIT;
reset role;
select aa ,bb from aa_int ,bb_text where aa_int.aa=bb_text.bb::int111;
drop table aa_int;
drop table bb_text;
drop type int111 cascade;
drop type text111 cascade;
drop user user1 cascade;

View File

@ -266,7 +266,7 @@ INSERT INTO gtest23q VALUES (2, 5); -- error
DROP TABLE gtest23q;
-- domains (domain is not yet supported.)
-- domains
CREATE DOMAIN gtestdomain1 AS int CHECK (VALUE < 10);
CREATE TABLE gtest24 (a int PRIMARY KEY, b gtestdomain1 GENERATED ALWAYS AS (a * 2) STORED);
INSERT INTO gtest24 (a) VALUES (4); -- ok

View File

@ -492,6 +492,7 @@ end cnt;
create user user1 password 'huawei@123';
set session AUTHORIZATION user1 PASSWORD 'huawei@123';
reset session AUTHORIZATION;
DROP USER user1;
create or replace package commit_rollback_test as