forked from openGauss-Ecosystem/openGauss-server
Fixed misc bugs
This commit is contained in:
parent
1d540f4462
commit
3fe0cec7ce
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
###################################
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
PRODUCT=openGauss
|
||||
VERSION=2.0.0
|
||||
VERSION=2.1.0
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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}"
|
||||
}
|
||||
|
|
|
@ -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@"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
/
|
||||
|
|
|
@ -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;
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue