已合并
fix sys dependency #7932
fix sys dependency #7932
已合并
zzh创建于 2025年6月18日
36 个文件变更+494-305
Mbuild.sh+51-0
@@ -14,6 +14,19 @@ declare not_optimized=''
14declare config_file=''14declare config_file=''
15declare product_mode='opengauss'15declare product_mode='opengauss'
16declare extra_config_opt=''16declare extra_config_opt=''
17+ 
18+declare -a DEPENDENCIES_YUM=(
19+ "jemalloc-devel"
20+ "libedit-devel"
21+ "libxml2-devel"
22+ "lz4-devel"
23+ "numactl-devel"
24+ "unixODBC-devel"
25+ "java-1.8.0-openjdk-devel"
26+)
27+ 
28+declare missing_deps=()
29+declare pkg_manager=""
17#########################################################################30#########################################################################
18##read command line paramenters31##read command line paramenters
19#######################################################################32#######################################################################
@@ -36,6 +49,43 @@ function print_help()
36 "49 "
37}50}
38 51 
52+detect_pkg_manager() {
53+ if command -v yum >/dev/null 2>&1; then
54+ pkg_manager="yum"
55+ elif command -v apt-get >/dev/null 2>&1; then
56+ pkg_manager="apt"
57+ else
58+ echo "Error: Unsupported package manager. Only yum and apt are supported."
59+ exit 1
60+ fi
61+}
62+ 
63+check_dependencies() {
64+ detect_pkg_manager
65+ 
66+ if [ "$pkg_manager" == "yum" ]; then
67+ for dep in "${DEPENDENCIES_YUM[@]}"; do
68+ if ! rpm -q "$dep" >/dev/null 2>&1; then
69+ missing_deps+=("$dep")
70+ fi
71+ done
72+ fi
73+ 
74+ if [ ${#missing_deps[@]} -gt 0 ]; then
75+ echo "Error: Missing required dependencies:"
76+ printf " %s\n" "${missing_deps[@]}"
77+
78+ if [ "$pkg_manager" == "yum" ]; then
79+ echo -e "\nPlease install the missing dependencies using:"
80+ echo "sudo yum install -y ${missing_deps[*]}"
81+ fi
82+
83+ exit 1
84+ else
85+ echo "All required dependencies are installed."
86+ fi
87+}
88+ 
39while [ $# -gt 0 ]; do89while [ $# -gt 0 ]; do
40 case "$1" in90 case "$1" in
41 -h|--help)91 -h|--help)
@@ -103,6 +153,7 @@ while [ $# -gt 0 ]; do
103 esac153 esac
104done154done
105 155 
156+check_dependencies
106 157 
107ROOT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)158ROOT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
108echo "ROOT_DIR : $ROOT_DIR"159echo "ROOT_DIR : $ROOT_DIR"
@@ -467,13 +467,13 @@ function install_gaussdb()
467 fi467 fi
468 468 
469 if [[ -e "/etc/openEuler-release" && "$(cat /etc/openEuler-release | awk '{print $3}')" == "24.03" ]]; then469 if [[ -e "/etc/openEuler-release" && "$(cat /etc/openEuler-release | awk '{print $3}')" == "24.03" ]]; then
470- CMAKE_OPT="$CMAKE_OPT -DENABLE_OPENEULER_MAJOR=ON -DENABLE_OPENESSL3=OFF"470+ CMAKE_OPT="$CMAKE_OPT -DENABLE_OPENEULER_MAJOR=ON -DENABLE_OPENSSL3=OFF"
471 fi471 fi
472 472 
473 if [ "${PLATFORM_ARCH}"x == "loongarch64"x ]; then473 if [ "${PLATFORM_ARCH}"x == "loongarch64"x ]; then
474 CMAKE_OPT="$CMAKE_OPT -DENABLE_BBOX=OFF -DENABLE_JEMALLOC=OFF"474 CMAKE_OPT="$CMAKE_OPT -DENABLE_BBOX=OFF -DENABLE_JEMALLOC=OFF"
475 fi475 fi
476- CMAKE_OPT="$CMAKE_OPT -DENABLE_OBS=ON"476+ CMAKE_OPT="$CMAKE_OPT -DENABLE_OBS=OFF"
477 477
478 echo "CMAKE_OPT----> $CMAKE_OPT"478 echo "CMAKE_OPT----> $CMAKE_OPT"
479 echo "Begin run cmake for gaussdb server" >> "$LOG_FILE" 2>&1479 echo "Begin run cmake for gaussdb server" >> "$LOG_FILE" 2>&1
@@ -66,7 +66,7 @@ option(ENABLE_MYSQL_FDW "enable export or import data with mysql,the old is --en
66option(ENABLE_ORACLE_FDW "enable export or import data with oracle,the old is --enable-oracle-fdw" OFF)66option(ENABLE_ORACLE_FDW "enable export or import data with oracle,the old is --enable-oracle-fdw" OFF)
67option(ENABLE_BBOX "enable bbox,the old is --enable-bbox " ON)67option(ENABLE_BBOX "enable bbox,the old is --enable-bbox " ON)
68option(ENABLE_JEMALLOC "enable jemalloc,the old is --enable-jemalloc " ON)68option(ENABLE_JEMALLOC "enable jemalloc,the old is --enable-jemalloc " ON)
69-option(ENABLE_OBS "enable obs, the old is --enable-obs " ON)69+option(ENABLE_OBS "enable obs, the old is --enable-obs " OFF)
70option(ENABLE_OPENSSL3 "enable openssl, the old is --enable-openssl " OFF)70option(ENABLE_OPENSSL3 "enable openssl, the old is --enable-openssl " OFF)
71option(BUILD_BY_CMAKE "the BUILD_BY_CMAKE is new,used in distribute pg_regress.cpp" ON)71option(BUILD_BY_CMAKE "the BUILD_BY_CMAKE is new,used in distribute pg_regress.cpp" ON)
72option(DEBUG_UHEAP "collect USTORE statistics" OFF)72option(DEBUG_UHEAP "collect USTORE statistics" OFF)
@@ -40,25 +40,13 @@ set(PLATFORM_PATH ${3RD_PATH}/kernel/platform)
40set(BUILDTOOLS_PATH ${3RD_PATH}/buildtools)40set(BUILDTOOLS_PATH ${3RD_PATH}/buildtools)
41set(COMPONENT_PATH ${3RD_PATH}/kernel/component)41set(COMPONENT_PATH ${3RD_PATH}/kernel/component)
42 42 
43-set(ETCD_HOME ${DEPENDENCY_PATH}/etcd/${LIB_UNIFIED_SUPPORT})
44set(CJSON_HOME ${DEPENDENCY_PATH}/cjson/${SUPPORT_LLT})43set(CJSON_HOME ${DEPENDENCY_PATH}/cjson/${SUPPORT_LLT})
45set(EVENT_HOME ${DEPENDENCY_PATH}/event/${LIB_UNIFIED_SUPPORT})44set(EVENT_HOME ${DEPENDENCY_PATH}/event/${LIB_UNIFIED_SUPPORT})
46-set(FIO_HOME ${DEPENDENCY_PATH}/fio/${SUPPORT_LLT})
47-set(IPERF_HOME ${DEPENDENCY_PATH}/iperf/${LIB_UNIFIED_SUPPORT})
48-if("${VERSION_TYPE}" STREQUAL "debug" OR "${VERSION_TYPE}" STREQUAL "memcheck")
49- set(JEMALLOC_HOME ${DEPENDENCY_PATH}/jemalloc/debug${JEMALLOC_SUPPORT_LLT})
50-else()
51- set(JEMALLOC_HOME ${DEPENDENCY_PATH}/jemalloc/${VERSION_TYPE}${JEMALLOC_SUPPORT_LLT})
52-endif()
53set(KERBEROS_HOME ${DEPENDENCY_PATH}/kerberos/${SUPPORT_LLT})45set(KERBEROS_HOME ${DEPENDENCY_PATH}/kerberos/${SUPPORT_LLT})
54set(KMC_HOME ${PLATFORM_PATH}/kmc/${LIB_UNIFIED_SUPPORT})46set(KMC_HOME ${PLATFORM_PATH}/kmc/${LIB_UNIFIED_SUPPORT})
55set(CGROUP_HOME ${DEPENDENCY_PATH}/libcgroup/${SUPPORT_LLT})47set(CGROUP_HOME ${DEPENDENCY_PATH}/libcgroup/${SUPPORT_LLT})
56set(CURL_HOME ${DEPENDENCY_PATH}/libcurl/${SUPPORT_LLT})48set(CURL_HOME ${DEPENDENCY_PATH}/libcurl/${SUPPORT_LLT})
57-set(EDIT_HOME ${DEPENDENCY_PATH}/libedit/${SUPPORT_LLT})
58-set(OBS_HOME ${DEPENDENCY_PATH}/libobs/${LIB_UNIFIED_SUPPORT})
59-set(XML2_HOME ${DEPENDENCY_PATH}/libxml2/${SUPPORT_LLT})
60set(LLVM_HOME ${DEPENDENCY_PATH}/llvm/${LIB_UNIFIED_SUPPORT})49set(LLVM_HOME ${DEPENDENCY_PATH}/llvm/${LIB_UNIFIED_SUPPORT})
61-set(LZ4_HOME ${DEPENDENCY_PATH}/lz4/${SUPPORT_LLT})
62set(NCURSES_HOME ${DEPENDENCY_PATH}/ncurses/${SUPPORT_LLT})50set(NCURSES_HOME ${DEPENDENCY_PATH}/ncurses/${SUPPORT_LLT})
63set(AWSSDK_HOME ${DEPENDENCY_PATH}/aws-sdk-cpp/${SUPPORT_LLT})51set(AWSSDK_HOME ${DEPENDENCY_PATH}/aws-sdk-cpp/${SUPPORT_LLT})
64if(($ENV{WITH_TASSL}) STREQUAL "YES")52if(($ENV{WITH_TASSL}) STREQUAL "YES")
@@ -67,12 +55,7 @@ else()
67 set(OPENSSL_HOME ${DEPENDENCY_PATH}/openssl/${LIB_UNIFIED_SUPPORT})55 set(OPENSSL_HOME ${DEPENDENCY_PATH}/openssl/${LIB_UNIFIED_SUPPORT})
68endif()56endif()
69 57 
70-set(PLJAVA_HOME ${DEPENDENCY_PATH}/pljava/${LIB_UNIFIED_SUPPORT})58+set(JAVA_HOME /usr/lib/jvm/java)
71-if (EXISTS "${PLATFORM_PATH}/openjdk8/${BUILD_TUPLE}/jdk")
72- set(JAVA_HOME ${PLATFORM_PATH}/openjdk8/${BUILD_TUPLE}/jdk)
73-else()
74- set(JAVA_HOME ${PLATFORM_PATH}/huaweijdk8/${BUILD_TUPLE}/jdk)
75-endif()
76set(ZLIB_HOME ${DEPENDENCY_PATH}/zlib1.2.11/${SUPPORT_LLT})59set(ZLIB_HOME ${DEPENDENCY_PATH}/zlib1.2.11/${SUPPORT_LLT})
77set(XGBOOST_HOME ${DEPENDENCY_PATH}/xgboost/${SUPPORT_LLT})60set(XGBOOST_HOME ${DEPENDENCY_PATH}/xgboost/${SUPPORT_LLT})
78set(ZSTD_HOME ${DEPENDENCY_PATH}/zstd)61set(ZSTD_HOME ${DEPENDENCY_PATH}/zstd)
@@ -88,9 +71,7 @@ set(HCOM4DB_HOME ${COMPONENT_PATH}/hcom4db)
88set(MOCKCPP_HOME ${BUILDTOOLS_PATH}/mockcpp/${LIB_UNIFIED_SUPPORT})71set(MOCKCPP_HOME ${BUILDTOOLS_PATH}/mockcpp/${LIB_UNIFIED_SUPPORT})
89set(GTEST_HOME ${BUILDTOOLS_PATH}/gtest/${LIB_UNIFIED_SUPPORT})72set(GTEST_HOME ${BUILDTOOLS_PATH}/gtest/${LIB_UNIFIED_SUPPORT})
90set(MASSTREE_HOME ${BUILDTOOLS_PATH}/masstree/${LIB_UNIFIED_SUPPORT})73set(MASSTREE_HOME ${BUILDTOOLS_PATH}/masstree/${LIB_UNIFIED_SUPPORT})
91-set(NUMA_HOME ${DEPENDENCY_PATH}/numactl/${SUPPORT_LLT})
92set(BOOST_HOME ${DEPENDENCY_PATH}/boost/${SUPPORT_LLT})74set(BOOST_HOME ${DEPENDENCY_PATH}/boost/${SUPPORT_LLT})
93-set(ODBC_HOME ${DEPENDENCY_PATH}/unixodbc)
94set(MASSTREE_HOME ${DEPENDENCY_PATH}/masstree/${LIB_UNIFIED_SUPPORT})75set(MASSTREE_HOME ${DEPENDENCY_PATH}/masstree/${LIB_UNIFIED_SUPPORT})
95set(LCOV_HOME ${BUILDTOOLS_PATH}/gcc${GCC_VERSION_LIT}/gcc/lib/gcc/${HOST_TUPLE})76set(LCOV_HOME ${BUILDTOOLS_PATH}/gcc${GCC_VERSION_LIT}/gcc/lib/gcc/${HOST_TUPLE})
96set(GCC_LIB_PATH $ENV{GCC_INSTALL_HOME})77set(GCC_LIB_PATH $ENV{GCC_INSTALL_HOME})
@@ -215,8 +196,8 @@ set(LIBOBS_LIB_PATH ${OBS_HOME}/lib)
215#############################################################################196#############################################################################
216# xml2 component197# xml2 component
217#############################################################################198#############################################################################
218-set(LIBXML_INCLUDE_PATH ${XML2_HOME}/include)199+set(LIBXML_INCLUDE_PATH /usr/include)
219-set(LIBXML_LIB_PATH ${XML2_HOME}/lib)200+set(LIBXML_LIB_PATH /usr/lib64)
220 201 
221#############################################################################202#############################################################################
222# llvm component203# llvm component
@@ -3469,7 +3469,7 @@ if [[ "$(cat /etc/system-release)" =~ ^"openEuler release 22.03".* ]]; then
3469 with_openeuler_major=yes3469 with_openeuler_major=yes
3470fi3470fi
3471 3471 
3472-with_obs=yes3472+with_obs=no
3473if [[ "$(cat /etc/system-release)" =~ ^"openEuler release 24.03".* ]]; then3473if [[ "$(cat /etc/system-release)" =~ ^"openEuler release 24.03".* ]]; then
3474 with_openeuler_major=yes3474 with_openeuler_major=yes
3475 with_openssl3=no3475 with_openssl3=no
@@ -6850,9 +6850,9 @@ else
6850 with_libxml=no6850 with_libxml=no
6851fi6851fi
6852 6852 
6853-xml2_cflag=${with_3rdpartydir}/kernel/dependency/libxml2/comm/include/libxml26853+xml2_cflag=/usr/include/libxml2
6854-xml2_lib=${with_3rdpartydir}/kernel/dependency/libxml2/comm/lib6854+xml2_lib=/usr/lib64
6855-xml2_config=${with_3rdpartydir}/kernel/dependency/libxml2/comm/bin/xml2-config6855+xml2_config=/usr/bin/xml2-config
6856 6856 
6857if test "$with_libxml" = yes; then6857if test "$with_libxml" = yes; then
6858 for ac_prog in ${xml2_config}; do6858 for ac_prog in ${xml2_config}; do
@@ -189,8 +189,12 @@ install(CODE "execute_process(
189)189)
190 190 
191# open source install part191# open source install part
192+file(GLOB JAVA_PATHS "/usr/lib/jvm/java-1.8.0-openjdk-*/jre")
193+list(SORT JAVA_PATHS)
194+list(REVERSE JAVA_PATHS)
195+list(GET JAVA_PATHS 0 LATEST_JAVA_JRE)
192if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON")196if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON")
193- install(DIRECTORY ${JAVA_HOME}/jre/ DESTINATION jre FILE_PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE OWNER_READ GROUP_READ)197+ install(DIRECTORY ${LATEST_JAVA_JRE} DESTINATION . FILE_PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE OWNER_READ GROUP_READ)
194endif()198endif()
195 199 
196if("${ENABLE_MULTIPLE_NODES}" STREQUAL "OFF")200if("${ENABLE_MULTIPLE_NODES}" STREQUAL "OFF")
@@ -206,25 +210,18 @@ if(${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF AND NOT ${EN
206 if(EXISTS ${DSS_BIN_PATH})210 if(EXISTS ${DSS_BIN_PATH})
207 install(DIRECTORY ${DSS_BIN_PATH} DESTINATION . FILE_PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE)211 install(DIRECTORY ${DSS_BIN_PATH} DESTINATION . FILE_PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE)
208 endif()212 endif()
209- if(EXISTS ${LIBODBC_LIB_PATH})
210- install(DIRECTORY ${LIBODBC_LIB_PATH} DESTINATION .)
211- endif()
212 if(EXISTS ${HCOM4DB_LIB_PATH})213 if(EXISTS ${HCOM4DB_LIB_PATH})
213 install(DIRECTORY ${HCOM4DB_LIB_PATH} DESTINATION .)214 install(DIRECTORY ${HCOM4DB_LIB_PATH} DESTINATION .)
214 endif()215 endif()
215endif()216endif()
216 217 
217install(DIRECTORY ${ZSTD_LIB_PATH} DESTINATION . PATTERN "*.a" EXCLUDE)218install(DIRECTORY ${ZSTD_LIB_PATH} DESTINATION . PATTERN "*.a" EXCLUDE)
218-if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON")219+if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON" AND "${ENABLE_OBS}" STREQUAL "ON")
219 install(DIRECTORY ${LIBOBS_LIB_PATH} DESTINATION .)220 install(DIRECTORY ${LIBOBS_LIB_PATH} DESTINATION .)
220 install(DIRECTORY ${LIBOBS_INCLUDE_PATH} DESTINATION include/postgresql/server/access/obs)221 install(DIRECTORY ${LIBOBS_INCLUDE_PATH} DESTINATION include/postgresql/server/access/obs)
221endif()222endif()
222install(DIRECTORY ${CJSON_LIB_PATH} DESTINATION .)223install(DIRECTORY ${CJSON_LIB_PATH} DESTINATION .)
223install(DIRECTORY ${CJSON_INCLUDE_PATH}/cjson DESTINATION include/postgresql/server)224install(DIRECTORY ${CJSON_INCLUDE_PATH}/cjson DESTINATION include/postgresql/server)
224-if(NOT ${ENABLE_LITE_MODE} STREQUAL ON)
225- install(DIRECTORY ${ETCD_BIN_PATH} DESTINATION .)
226- install(DIRECTORY ${IPERF_LIB_PATH} DESTINATION .)
227-endif()
228if(NOT ${ENABLE_LITE_MODE} STREQUAL ON)225if(NOT ${ENABLE_LITE_MODE} STREQUAL ON)
229if(NOT ${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF)226if(NOT ${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF)
230 install(DIRECTORY ${KMC_LIB_PATH} DESTINATION .)227 install(DIRECTORY ${KMC_LIB_PATH} DESTINATION .)
@@ -237,16 +234,11 @@ if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON")
237 install(DIRECTORY ${KERBEROS_BIN_PATH} DESTINATION .)234 install(DIRECTORY ${KERBEROS_BIN_PATH} DESTINATION .)
238 install(DIRECTORY ${KERBEROS_LIB_PATH} DESTINATION .)235 install(DIRECTORY ${KERBEROS_LIB_PATH} DESTINATION .)
239endif()236endif()
240-install(DIRECTORY ${LZ4_LIB_PATH} DESTINATION .)
241-install(DIRECTORY ${LZ4_BIN_PATH} DESTINATION .)
242install(DIRECTORY ${LIBOPENSSL_BIN_PATH} DESTINATION .)237install(DIRECTORY ${LIBOPENSSL_BIN_PATH} DESTINATION .)
243install(DIRECTORY ${LIBOPENSSL_LIB_PATH} DESTINATION . PATTERN "*.a" EXCLUDE )238install(DIRECTORY ${LIBOPENSSL_LIB_PATH} DESTINATION . PATTERN "*.a" EXCLUDE )
244install(DIRECTORY ${ZLIB_LIB_PATH} DESTINATION . FILES_MATCHING PATTERN "libz.*")239install(DIRECTORY ${ZLIB_LIB_PATH} DESTINATION . FILES_MATCHING PATTERN "libz.*")
245 240 
246list(FIND MACRO_OPTIONS "-D__USE_NUMA" RET_NUMA)241list(FIND MACRO_OPTIONS "-D__USE_NUMA" RET_NUMA)
247-if(NOT ${RET_NUMA} EQUAL -1)
248- install(DIRECTORY ${NUMA_LIB_PATH} DESTINATION .)
249-endif()
250 242 
251if("${ENABLE_MOT}" STREQUAL "ON")243if("${ENABLE_MOT}" STREQUAL "ON")
252install(DIRECTORY ${MASSTREE_LIB_PATH} DESTINATION .)244install(DIRECTORY ${MASSTREE_LIB_PATH} DESTINATION .)
@@ -266,11 +258,6 @@ install(FILES ${GCC_LIB_PATH}/lib64/libgomp.so DESTINATION lib)
266install(FILES ${GCC_LIB_PATH}/lib64/libgomp.so.1 DESTINATION lib)258install(FILES ${GCC_LIB_PATH}/lib64/libgomp.so.1 DESTINATION lib)
267install(FILES ${GCC_LIB_PATH}/lib64/libgomp.so.1.0.0 DESTINATION lib)259install(FILES ${GCC_LIB_PATH}/lib64/libgomp.so.1.0.0 DESTINATION lib)
268install(FILES ${XGBOOST_LIB_PATH}/libxgboost.so DESTINATION lib)260install(FILES ${XGBOOST_LIB_PATH}/libxgboost.so DESTINATION lib)
269-if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON")
270- install(FILES ${PLJAVA_HOME}/lib/libpljava.so DESTINATION lib)
271- install(FILES ${PLJAVA_HOME}/java/pljava.jar DESTINATION lib/postgresql/java)
272- install(FILES ${PLJAVA_HOME}/udstools.py DESTINATION share/postgresql/tmp)
273-endif()
274if(NOT ${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF)261if(NOT ${ENABLE_MULTIPLE_NODES}_${ENABLE_PRIVATEGAUSS} STREQUAL OFF_OFF)
275 if("${SUPPORT_HOTPATCH}" STREQUAL "yes")262 if("${SUPPORT_HOTPATCH}" STREQUAL "yes")
276 install(FILES ${LIBHOTPATCH_LIB_PATH}/libdoprapatch.a DESTINATION lib)263 install(FILES ${LIBHOTPATCH_LIB_PATH}/libdoprapatch.a DESTINATION lib)
@@ -276,18 +276,12 @@ ifeq ($(with_3rd), NONE)
276 INSTALL_TOOLS_PATH = binarylibs/install_tools276 INSTALL_TOOLS_PATH = binarylibs/install_tools
277 COMPONENTPATH = binarylibs/component277 COMPONENTPATH = binarylibs/component
278 278 
279- JEMALLOC_HOME = $(top_builddir)/$(BINARYPATH)/jemalloc/$(JEMALLOC_BUILD_TYPE)
280- MEMCHECK_HOME = $(top_builddir)/$(BINARYPATH)/memcheck/$(MEMCHECK_BUILD_TYPE)
281- LIBOBS_HOME = $(top_builddir)/$(BINARYPATH)/libobs/$(LIB_NOT_SUPPORT_LLT)
282- LIBODBC_HOME = $(top_builddir)/$(BINARYPATH)/unixodbc
283- LIBXML_HOME = $(top_builddir)/$(BINARYPATH)/libxml2/$(LIB_SUPPORT_LLT)
284 LIBHOTPATCH_HOME = $(top_builddir)/$(PLATFORMPATH)/hotpatch279 LIBHOTPATCH_HOME = $(top_builddir)/$(PLATFORMPATH)/hotpatch
285 LIBCGROUP_HOME = $(top_builddir)/$(BINARYPATH)/libcgroup/$(LIB_SUPPORT_LLT)280 LIBCGROUP_HOME = $(top_builddir)/$(BINARYPATH)/libcgroup/$(LIB_SUPPORT_LLT)
286 LIBLLVM_HOME = $(top_builddir)/$(BINARYPATH)/llvm/comm281 LIBLLVM_HOME = $(top_builddir)/$(BINARYPATH)/llvm/comm
287 XGBOOST_HOME = $(top_builddir)/$(BINARYPATH)/xgboost/comm282 XGBOOST_HOME = $(top_builddir)/$(BINARYPATH)/xgboost/comm
288 EVENT_HOME = $(top_builddir)/$(BINARYPATH)/event/$(LIB_SUPPORT_LLT)283 EVENT_HOME = $(top_builddir)/$(BINARYPATH)/event/$(LIB_SUPPORT_LLT)
289 ZLIB_HOME = $(top_builddir)/$(BINARYPATH)/zlib1.2.11/$(LIB_SUPPORT_LLT)284 ZLIB_HOME = $(top_builddir)/$(BINARYPATH)/zlib1.2.11/$(LIB_SUPPORT_LLT)
290- LZ4_HOME = $(top_builddir)/$(BINARYPATH)/lz4/$(LIB_SUPPORT_LLT)
291 CJSON_HOME = $(top_builddir)/$(BINARYPATH)/cjson/$(LIB_SUPPORT_LLT)285 CJSON_HOME = $(top_builddir)/$(BINARYPATH)/cjson/$(LIB_SUPPORT_LLT)
292 KERBEROS_HOME = $(top_builddir)/$(BINARYPATH)/kerberos/$(LIB_SUPPORT_LLT)286 KERBEROS_HOME = $(top_builddir)/$(BINARYPATH)/kerberos/$(LIB_SUPPORT_LLT)
293 BOOST_HOME = $(top_builddir)/$(BINARYPATH)/boost/$(LIB_SUPPORT_LLT)287 BOOST_HOME = $(top_builddir)/$(BINARYPATH)/boost/$(LIB_SUPPORT_LLT)
@@ -302,12 +296,9 @@ ifeq ($(with_3rd), NONE)
302 LIBSTD_HOME = $(top_builddir)/$(BUILD_TOOLS_PATH)/libstd/gcc$(CC_VERSION)/$(LIB_NOT_SUPPORT_LLT)296 LIBSTD_HOME = $(top_builddir)/$(BUILD_TOOLS_PATH)/libstd/gcc$(CC_VERSION)/$(LIB_NOT_SUPPORT_LLT)
303 GTEST_HOME = $(top_builddir)/$(BUILD_TOOLS_PATH)/gtest/$(LIB_NOT_SUPPORT_LLT)297 GTEST_HOME = $(top_builddir)/$(BUILD_TOOLS_PATH)/gtest/$(LIB_NOT_SUPPORT_LLT)
304 MOCKCPP_HOME = $(top_builddir)/$(BUILD_TOOLS_PATH)/mockcpp/$(LIB_NOT_SUPPORT_LLT)298 MOCKCPP_HOME = $(top_builddir)/$(BUILD_TOOLS_PATH)/mockcpp/$(LIB_NOT_SUPPORT_LLT)
305- NUMA_HOME = $(top_builddir)/$(BINARYPATH)/numactl/$(LIB_SUPPORT_LLT)
306 LIBCURL_HOME = $(top_builddir)/$(BINARYPATH)/libcurl/$(LIB_SUPPORT_LLT)299 LIBCURL_HOME = $(top_builddir)/$(BINARYPATH)/libcurl/$(LIB_SUPPORT_LLT)
307 AWSSDK_HOME = $(top_builddir)/$(BINARYPATH)/aws-sdk-cpp/$(LIB_SUPPORT_LLT)300 AWSSDK_HOME = $(top_builddir)/$(BINARYPATH)/aws-sdk-cpp/$(LIB_SUPPORT_LLT)
308 ZSTD_HOME = $(top_builddir)/$(BINARYPATH)/zstd301 ZSTD_HOME = $(top_builddir)/$(BINARYPATH)/zstd
309- LIBNANOMSG_HOME = $(top_builddir)/$(BINARYPATH)/nng/comm
310- PLJAVA_HOME = $(top_builddir)/$(BINARYPATH)/pljava/$(LIB_SUPPORT_LLT)
311 MASSTREE_HOME = $(top_builddir)/$(BINARYPATH)/masstree/comm302 MASSTREE_HOME = $(top_builddir)/$(BINARYPATH)/masstree/comm
312 MYFDW_HOME = $(top_builddir)/dependency/mysql_fdw303 MYFDW_HOME = $(top_builddir)/dependency/mysql_fdw
313 ORCFDW_HOME = $(top_builddir)/dependency/oracle_fdw304 ORCFDW_HOME = $(top_builddir)/dependency/oracle_fdw
@@ -320,19 +311,12 @@ else
320 PLATFORMPATH = kernel/platform311 PLATFORMPATH = kernel/platform
321 BUILD_TOOLS_PATH = buildtools312 BUILD_TOOLS_PATH = buildtools
322 313 
323- JEMALLOC_HOME = $(with_3rd)/$(BINARYPATH)/jemalloc/$(JEMALLOC_BUILD_TYPE)
324- MEMCHECK_HOME = $(with_3rd)/$(BINARYPATH)/memcheck/$(MEMCHECK_BUILD_TYPE)
325- LIBOBS_HOME = $(with_3rd)/$(BINARYPATH)/libobs/$(LIB_NOT_SUPPORT_LLT)
326- LIBODBC_HOME = $(with_3rd)/$(BINARYPATH)/unixodbc
327- 
328- LIBXML_HOME = $(with_3rd)/$(BINARYPATH)/libxml2/$(LIB_SUPPORT_LLT)
329 LIBCGROUP_HOME = $(with_3rd)/$(BINARYPATH)/libcgroup/$(LIB_SUPPORT_LLT)314 LIBCGROUP_HOME = $(with_3rd)/$(BINARYPATH)/libcgroup/$(LIB_SUPPORT_LLT)
330 LIBHOTPATCH_HOME = $(with_3rd)/$(PLATFORMPATH)/hotpatch315 LIBHOTPATCH_HOME = $(with_3rd)/$(PLATFORMPATH)/hotpatch
331 LIBLLVM_HOME = $(with_3rd)/$(BINARYPATH)/llvm/comm316 LIBLLVM_HOME = $(with_3rd)/$(BINARYPATH)/llvm/comm
332 XGBOOST_HOME = $(with_3rd)/$(BINARYPATH)/xgboost/$(LIB_SUPPORT_LLT)317 XGBOOST_HOME = $(with_3rd)/$(BINARYPATH)/xgboost/$(LIB_SUPPORT_LLT)
333 EVENT_HOME = $(with_3rd)/$(BINARYPATH)/event/$(LIB_SUPPORT_LLT)318 EVENT_HOME = $(with_3rd)/$(BINARYPATH)/event/$(LIB_SUPPORT_LLT)
334 ZLIB_HOME = $(with_3rd)/$(BINARYPATH)/zlib1.2.11/$(LIB_SUPPORT_LLT)319 ZLIB_HOME = $(with_3rd)/$(BINARYPATH)/zlib1.2.11/$(LIB_SUPPORT_LLT)
335- LZ4_HOME = $(with_3rd)/$(BINARYPATH)/lz4/$(LIB_SUPPORT_LLT)
336 CJSON_HOME = $(with_3rd)/$(BINARYPATH)/cjson/$(LIB_SUPPORT_LLT)320 CJSON_HOME = $(with_3rd)/$(BINARYPATH)/cjson/$(LIB_SUPPORT_LLT)
337 KERBEROS_HOME = $(with_3rd)/$(BINARYPATH)/kerberos/$(LIB_SUPPORT_LLT)321 KERBEROS_HOME = $(with_3rd)/$(BINARYPATH)/kerberos/$(LIB_SUPPORT_LLT)
338 BOOST_HOME = $(with_3rd)/$(BINARYPATH)/boost/$(LIB_SUPPORT_LLT)322 BOOST_HOME = $(with_3rd)/$(BINARYPATH)/boost/$(LIB_SUPPORT_LLT)
@@ -353,18 +337,12 @@ endif
353 LIBSTD_HOME = $(with_3rd)/$(BUILD_TOOLS_PATH)/libstd/gcc$(CC_VERSION)/$(LIB_NOT_SUPPORT_LLT)337 LIBSTD_HOME = $(with_3rd)/$(BUILD_TOOLS_PATH)/libstd/gcc$(CC_VERSION)/$(LIB_NOT_SUPPORT_LLT)
354 GTEST_HOME = $(with_3rd)/$(BUILD_TOOLS_PATH)/gtest/$(LIB_NOT_SUPPORT_LLT)338 GTEST_HOME = $(with_3rd)/$(BUILD_TOOLS_PATH)/gtest/$(LIB_NOT_SUPPORT_LLT)
355 MOCKCPP_HOME = $(with_3rd)/$(BUILD_TOOLS_PATH)/mockcpp/$(LIB_NOT_SUPPORT_LLT)339 MOCKCPP_HOME = $(with_3rd)/$(BUILD_TOOLS_PATH)/mockcpp/$(LIB_NOT_SUPPORT_LLT)
356- NUMA_HOME = $(with_3rd)/$(BINARYPATH)/numactl/$(LIB_SUPPORT_LLT)
357 LIBCURL_HOME = $(with_3rd)/$(BINARYPATH)/libcurl/$(LIB_SUPPORT_LLT)340 LIBCURL_HOME = $(with_3rd)/$(BINARYPATH)/libcurl/$(LIB_SUPPORT_LLT)
358 AWSSDK_HOME = $(with_3rd)/$(BINARYPATH)/aws-sdk-cpp/$(LIB_SUPPORT_LLT)341 AWSSDK_HOME = $(with_3rd)/$(BINARYPATH)/aws-sdk-cpp/$(LIB_SUPPORT_LLT)
359 ZSTD_HOME = $(with_3rd)/$(BINARYPATH)/zstd342 ZSTD_HOME = $(with_3rd)/$(BINARYPATH)/zstd
360 LIBNANOMSG_HOME = $(with_3rd)/$(BINARYPATH)/nng/comm343 LIBNANOMSG_HOME = $(with_3rd)/$(BINARYPATH)/nng/comm
361- PLJAVA_HOME = $(with_3rd)/$(BINARYPATH)/pljava/$(LIB_SUPPORT_LLT)
362 using_openjdk = $(shell if [ -d "$(with_3rd)/$(PLATFORMPATH)/openjdk8" ]; then echo "yes"; else echo "no"; fi;)344 using_openjdk = $(shell if [ -d "$(with_3rd)/$(PLATFORMPATH)/openjdk8" ]; then echo "yes"; else echo "no"; fi;)
363- ifeq ($(using_openjdk), yes)345+ JAVA_HOME = /usr/lib/jvm/java/
364- JAVA_HOME = $(with_3rd)/${PLATFORMPATH}/openjdk8/$(shell uname -p)/jdk
365- else
366- JAVA_HOME = $(with_3rd)/${PLATFORMPATH}/huaweijdk8/$(shell uname -p)/jdk
367- endif
368 MASSTREE_HOME = $(with_3rd)/$(BINARYPATH)/masstree/comm346 MASSTREE_HOME = $(with_3rd)/$(BINARYPATH)/masstree/comm
369 MYFDW_HOME = $(with_3rd)/$(BINARYPATH)/mysql_fdw347 MYFDW_HOME = $(with_3rd)/$(BINARYPATH)/mysql_fdw
370 ORCFDW_HOME = $(with_3rd)/$(BINARYPATH)/oracle_fdw348 ORCFDW_HOME = $(with_3rd)/$(BINARYPATH)/oracle_fdw
@@ -582,8 +560,8 @@ BOOST_LIB_PATH = $(BOOST_HOME)/lib
582#############################################################################560#############################################################################
583# libxml component561# libxml component
584#############################################################################562#############################################################################
585-LIBXML_INCLUDE_PATH = $(LIBXML_HOME)/include563+LIBXML_INCLUDE_PATH = /usr/include
586-LIBXML_LIB_PATH = $(LIBXML_HOME)/lib564+LIBXML_LIB_PATH = /usr/lib64
587 565 
588#############################################################################566#############################################################################
589# openssl component567# openssl component
@@ -786,6 +764,10 @@ ifeq ($(with_obs), yes)
786 override CPPFLAGS := $(CPPFLAGS) -DENABLE_OBS764 override CPPFLAGS := $(CPPFLAGS) -DENABLE_OBS
787endif765endif
788 766 
767+ifeq ($(with_openssl3), yes)
768+ override CPPFLAGS := $(CPPFLAGS) -DENABLE_OPENSSL3
769+endif
770+ 
789CC = @CC@771CC = @CC@
790GCC = @GCC@772GCC = @GCC@
791C = gcc 773C = gcc
@@ -24,7 +24,6 @@ SGMLDIR= $(top_builddir)/doc/src/sgml
24###################################################################24###################################################################
25# libedit component25# libedit component
26###################################################################26###################################################################
27-LIBEDIT_HOME = $(with_3rd)/$(BINARYPATH)/libedit/$(LIB_SUPPORT_LLT)
28LIBEDIT_INCLUDE_PATH = $(LIBEDIT_HOME)/include27LIBEDIT_INCLUDE_PATH = $(LIBEDIT_HOME)/include
29LIBEDIT_LIB_PATH = $(LIBEDIT_HOME)/lib28LIBEDIT_LIB_PATH = $(LIBEDIT_HOME)/lib
30 29 
@@ -401,11 +401,9 @@ void DisasterRecoveryRequestBarrier(const char* id, bool isSwitchoverBarrier)
401 recptr = XLogInsert(RM_BARRIER_ID, XLOG_BARRIER_CREATE, InvalidBktId);401 recptr = XLogInsert(RM_BARRIER_ID, XLOG_BARRIER_CREATE, InvalidBktId);
402 XLogWaitFlush(recptr);402 XLogWaitFlush(recptr);
403#ifndef ENABLE_LITE_MODE403#ifndef ENABLE_LITE_MODE
404-#ifdef ENABLE_OBS
405 if (t_thrd.role == BARRIER_CREATOR) {404 if (t_thrd.role == BARRIER_CREATOR) {
406 UpdateGlobalBarrierListOnMedia(id, g_instance.attr.attr_common.PGXCNodeName);405 UpdateGlobalBarrierListOnMedia(id, g_instance.attr.attr_common.PGXCNodeName);
407 }406 }
408-#endif
409#endif407#endif
410 SpinLockAcquire(&g_instance.archive_obs_cxt.barrier_lock);408 SpinLockAcquire(&g_instance.archive_obs_cxt.barrier_lock);
411 pg_atomic_init_u64(&g_instance.archive_obs_cxt.barrierLsn, recptr);409 pg_atomic_init_u64(&g_instance.archive_obs_cxt.barrierLsn, recptr);
@@ -277,7 +277,7 @@ if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON")
277 )277 )
278endif()278endif()
279 279 
280-if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON" AND "${ENABLE_OBS}" STREQUAL "ON")280+if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON")
281 list(APPEND gaussdb_objects281 list(APPEND gaussdb_objects
282 $<TARGET_OBJECTS:gausskernel_storage_access_archive>282 $<TARGET_OBJECTS:gausskernel_storage_access_archive>
283 )283 )
@@ -637,15 +637,12 @@ endif
637 cp -d $(CJSON_LIB_PATH)/libcjson* '$(DESTDIR)$(libdir)/'637 cp -d $(CJSON_LIB_PATH)/libcjson* '$(DESTDIR)$(libdir)/'
638 638 
639ifneq ($(with_openeuler_os), yes)639ifneq ($(with_openeuler_os), yes)
640- cp -d $(LZ4_LIB_PATH)/liblz4* '$(DESTDIR)$(libdir)/'
641ifeq ($(enable_lite_mode), no)640ifeq ($(enable_lite_mode), no)
642 cp -d $(with_3rd)/$(BINARYPATH)/event/$(LIB_SUPPORT_LLT)/lib/libevent* '$(DESTDIR)$(libdir)/'641 cp -d $(with_3rd)/$(BINARYPATH)/event/$(LIB_SUPPORT_LLT)/lib/libevent* '$(DESTDIR)$(libdir)/'
643endif642endif
644 cp $(SECUREDYNAMICLIB_HOME)/libsecurec* '$(DESTDIR)$(libdir)/'643 cp $(SECUREDYNAMICLIB_HOME)/libsecurec* '$(DESTDIR)$(libdir)/'
645ifneq (, $(findstring __USE_NUMA, $(CFLAGS)))644ifneq (, $(findstring __USE_NUMA, $(CFLAGS)))
646 cp $(ZSTD_LIB_PATH)/libzstd* '$(DESTDIR)$(libdir)/'645 cp $(ZSTD_LIB_PATH)/libzstd* '$(DESTDIR)$(libdir)/'
647- cp $(LIBODBC_LIB_PATH)/libodbc* '$(DESTDIR)$(libdir)/'
648- cp $(NUMA_LIB_PATH)/* '$(DESTDIR)$(libdir)/'
649endif646endif
650ifeq ($(enable_mot), yes)647ifeq ($(enable_mot), yes)
651 cp -d $(MASSTREE_LIB_PATH)/libmasstree* '$(DESTDIR)$(libdir)/'648 cp -d $(MASSTREE_LIB_PATH)/libmasstree* '$(DESTDIR)$(libdir)/'
@@ -682,12 +679,7 @@ endif
682endif679endif
683 680 
684ifeq ($(enable_lite_mode), no)681ifeq ($(enable_lite_mode), no)
685- cp -r $(with_jdk)/jre/* '$(DESTDIR)$(bindir)/../jre/'682+ cp -r /usr/lib/jvm/java-1.8.0-openjdk-*/jre/* '$(DESTDIR)$(bindir)/../jre/'
686-ifneq ($(host_cpu), loongarch64)
687- cp $(PLJAVA_LIB_PATH)/* '$(DESTDIR)$(libdir)/'
688- cp $(PLJAVA_JAR_PATH)/$(JARPLJAVA) '$(DESTDIR)$(pkglibdir)/java/'
689- cp $(PLJAVA_HOME)/udstools.py '$(DESTDIR)$(datadir)/tmp/'
690-endif
691endif683endif
692 684 
693 cp '$(top_builddir)/src/include/ssl/openssl_gsql.cnf' '$(DESTDIR)$(datadir)/../sslcert/gsql/openssl.cnf'685 cp '$(top_builddir)/src/include/ssl/openssl_gsql.cnf' '$(DESTDIR)$(datadir)/../sslcert/gsql/openssl.cnf'
@@ -715,7 +707,6 @@ ifeq ($(enable_lite_mode), no)
715endif707endif
716endif708endif
717 cp '$(ZSTD_LIB_PATH)'/libzstd.so* '$(DESTDIR)$(libdir)/'709 cp '$(ZSTD_LIB_PATH)'/libzstd.so* '$(DESTDIR)$(libdir)/'
718- cp '$(LIBODBC_LIB_PATH)'/libodbc* '$(DESTDIR)$(libdir)/'
719 cp -d '$(LIBCURL_LIB_PATH)'/libcurl.so* '$(DESTDIR)$(libdir)/'710 cp -d '$(LIBCURL_LIB_PATH)'/libcurl.so* '$(DESTDIR)$(libdir)/'
720 cp -d '$(AWSSDK_LIB_PATH)'/libaws-cpp-sdk-core.so* '$(DESTDIR)$(libdir)/'711 cp -d '$(AWSSDK_LIB_PATH)'/libaws-cpp-sdk-core.so* '$(DESTDIR)$(libdir)/'
721 cp -d '$(AWSSDK_LIB_PATH)'/libaws-cpp-sdk-s3.so* '$(DESTDIR)$(libdir)/'712 cp -d '$(AWSSDK_LIB_PATH)'/libaws-cpp-sdk-s3.so* '$(DESTDIR)$(libdir)/'
@@ -1,7 +1,7 @@
1#This is the main CMAKE for build all components.1#This is the main CMAKE for build all components.
2AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} TGT_commands_SRC)2AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} TGT_commands_SRC)
3 3 
4-if("${ENABLE_LITE_MODE}" STREQUAL "ON" OR NOT "${ENABLE_OBS}" STREQUAL "ON")4+if("${ENABLE_LITE_MODE}" STREQUAL "ON")
5 list(REMOVE_ITEM TGT_commands_SRC ${CMAKE_CURRENT_SOURCE_DIR}/obs_stream.cpp)5 list(REMOVE_ITEM TGT_commands_SRC ${CMAKE_CURRENT_SOURCE_DIR}/obs_stream.cpp)
6endif()6endif()
7 7 
@@ -32,9 +32,7 @@ OBJS = aggregatecmds.o alter.o amcmds.o analyze.o async.o cluster.o comment.o \
32 eventcmds.o ddldeparse.o ddljson.o auto_parameterization.o32 eventcmds.o ddldeparse.o ddljson.o auto_parameterization.o
33 33 
34ifeq ($(enable_lite_mode), no)34ifeq ($(enable_lite_mode), no)
35-ifeq ($(with_obs), yes)
36 OBJS += obs_stream.o35 OBJS += obs_stream.o
37endif36endif
38-endif
39 37 
40include $(top_srcdir)/src/gausskernel/common.mk38include $(top_srcdir)/src/gausskernel/common.mk
@@ -6838,14 +6838,12 @@ retry:
6838 if (cstate->mode == MODE_NORMAL) {6838 if (cstate->mode == MODE_NORMAL) {
6839 if (cstate->filename && is_obs_protocol(cstate->filename)) {6839 if (cstate->filename && is_obs_protocol(cstate->filename)) {
6840#ifndef ENABLE_LITE_MODE6840#ifndef ENABLE_LITE_MODE
6841-#ifdef ENABLE_OBS
6842 if (getNextOBS(cstate)) {6841 if (getNextOBS(cstate)) {
6843 cstate->eol_type = EOL_UNKNOWN;6842 cstate->eol_type = EOL_UNKNOWN;
6844 goto retry;6843 goto retry;
6845 }6844 }
6846#else6845#else
6847 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();6846 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
6848-#endif
6849#endif6847#endif
6850 } else {6848 } else {
6851 if (getNextGDS<true>(cstate)) {6849 if (getNextGDS<true>(cstate)) {
@@ -9661,7 +9659,6 @@ void bulkloadFuncFactory(CopyState cstate)
9661 case MODE_NORMAL: /* for GDS oriented dist import */9659 case MODE_NORMAL: /* for GDS oriented dist import */
9662 if (is_obs_protocol(cstate->filename)) {9660 if (is_obs_protocol(cstate->filename)) {
9663#ifndef ENABLE_LITE_MODE9661#ifndef ENABLE_LITE_MODE
9664-#ifdef ENABLE_OBS
9665 /* Attache working house routines for OBS oriented dist import */9662 /* Attache working house routines for OBS oriented dist import */
9666 func.initBulkLoad = initOBSModeState;9663 func.initBulkLoad = initOBSModeState;
9667 func.endBulkLoad = endOBSModeBulkLoad;9664 func.endBulkLoad = endOBSModeBulkLoad;
@@ -9670,7 +9667,6 @@ void bulkloadFuncFactory(CopyState cstate)
9670 getNextCopyFunc = getNextOBS;9667 getNextCopyFunc = getNextOBS;
9671#else9668#else
9672 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();9669 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
9673-#endif
9674#endif9670#endif
9675 } else {9671 } else {
9676 /* Attache working house routines for GDS oriented dist import */9672 /* Attache working house routines for GDS oriented dist import */
@@ -9738,7 +9734,6 @@ CopyState beginExport(
9738 9734 
9739 if (is_obs_protocol(filename)) {9735 if (is_obs_protocol(filename)) {
9740#ifndef ENABLE_LITE_MODE9736#ifndef ENABLE_LITE_MODE
9741-#ifdef ENABLE_OBS
9742 /* Fetch OBS write only table related attribtues */9737 /* Fetch OBS write only table related attribtues */
9743 getOBSOptions(&cstate->obs_copy_options, options);9738 getOBSOptions(&cstate->obs_copy_options, options);
9744 9739 
@@ -9757,7 +9752,6 @@ CopyState beginExport(
9757 initOBSModeState(cstate, object_path, tasklist);9752 initOBSModeState(cstate, object_path, tasklist);
9758#else9753#else
9759 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();9754 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
9760-#endif
9761#endif9755#endif
9762 } else {9756 } else {
9763 initNormalModeState<false>(cstate, filename, tasklist);9757 initNormalModeState<false>(cstate, filename, tasklist);
@@ -9922,7 +9916,6 @@ void endExport(CopyState cstate)
9922 }9916 }
9923 } else if (cstate->copy_dest == COPY_OBS) {9917 } else if (cstate->copy_dest == COPY_OBS) {
9924#ifndef ENABLE_LITE_MODE9918#ifndef ENABLE_LITE_MODE
9925-#ifdef ENABLE_OBS
9926 if (IS_PGXC_DATANODE) {9919 if (IS_PGXC_DATANODE) {
9927 if (cstate->outBuffer->len > 0)9920 if (cstate->outBuffer->len > 0)
9928 RemoteExportFlushData(cstate);9921 RemoteExportFlushData(cstate);
@@ -9932,7 +9925,6 @@ void endExport(CopyState cstate)
9932 }9925 }
9933#else9926#else
9934 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();9927 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
9935-#endif
9936#endif9928#endif
9937 } else9929 } else
9938 exportDeinitOutBuffer(cstate);9930 exportDeinitOutBuffer(cstate);
@@ -1,7 +1,7 @@
1#This is the main CMAKE for build bin.1#This is the main CMAKE for build bin.
2AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} TGT_postmaster_SRC)2AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} TGT_postmaster_SRC)
3 3 
4-if("${ENABLE_LITE_MODE}" STREQUAL "ON" OR NOT "${ENABLE_OBS}" STREQUAL "ON")4+if("${ENABLE_LITE_MODE}" STREQUAL "ON")
5 list(REMOVE_ITEM TGT_postmaster_SRC5 list(REMOVE_ITEM TGT_postmaster_SRC
6 ${CMAKE_CURRENT_SOURCE_DIR}/barrier_creator.cpp6 ${CMAKE_CURRENT_SOURCE_DIR}/barrier_creator.cpp
7 ${CMAKE_CURRENT_SOURCE_DIR}/barrier_arch.cpp7 ${CMAKE_CURRENT_SOURCE_DIR}/barrier_arch.cpp
@@ -39,10 +39,8 @@ OBJS = autovacuum.o bgwriter.o fork_process.o pgarch.o pgstat.o og_record_time.o
39 39 
40ifeq ($(enable_lite_mode), no)40ifeq ($(enable_lite_mode), no)
41OBJS += aiocompleter.o barrier_preparse.o41OBJS += aiocompleter.o barrier_preparse.o
42-ifeq ($(with_obs), yes)
43OBJS += barrier_creator.o barrier_arch.o42OBJS += barrier_creator.o barrier_arch.o
44endif43endif
45-endif
46 44 
47include $(top_srcdir)/src/gausskernel/common.mk45include $(top_srcdir)/src/gausskernel/common.mk
48 46 
@@ -110,7 +110,6 @@ static bool pgarch_readyXlog(char* xlog, int xlog_length);
110static void pgarch_archiveDone(const char* xlog);110static void pgarch_archiveDone(const char* xlog);
111static void archKill(int code, Datum arg);111static void archKill(int code, Datum arg);
112#ifndef ENABLE_LITE_MODE112#ifndef ENABLE_LITE_MODE
113-#ifdef ENABLE_OBS
114static void pgarch_archiveRoachForPitrStandby();113static void pgarch_archiveRoachForPitrStandby();
115static bool pgarch_archiveRoachForPitrMaster(XLogRecPtr targetLsn);114static bool pgarch_archiveRoachForPitrMaster(XLogRecPtr targetLsn);
116static bool pgarch_archiveRoachForCoordinator(XLogRecPtr targetLsn);115static bool pgarch_archiveRoachForCoordinator(XLogRecPtr targetLsn);
@@ -119,7 +118,6 @@ typedef bool(*doArchive)(XLogRecPtr);
119static void pgarch_ArchiverObsCopyLoop(XLogRecPtr flushPtr, doArchive fun);118static void pgarch_ArchiverObsCopyLoop(XLogRecPtr flushPtr, doArchive fun);
120static void InitArchiverLastTaskLsn(ArchiveSlotConfig* obs_archive_slot);119static void InitArchiverLastTaskLsn(ArchiveSlotConfig* obs_archive_slot);
121#endif120#endif
122-#endif
123 121 
124AlarmCheckResult DataInstArchChecker(Alarm* alarm, AlarmAdditionalParam* additionalParam)122AlarmCheckResult DataInstArchChecker(Alarm* alarm, AlarmAdditionalParam* additionalParam)
125{123{
@@ -245,9 +243,7 @@ NON_EXEC_STATIC void PgArchiverMain(knl_thread_arg* arg)
245 setObsArchLatch(&t_thrd.arch.mainloop_latch);243 setObsArchLatch(&t_thrd.arch.mainloop_latch);
246 244 
247#ifndef ENABLE_LITE_MODE245#ifndef ENABLE_LITE_MODE
248-#ifdef ENABLE_OBS
249 InitArchiverLastTaskLsn(NULL);246 InitArchiverLastTaskLsn(NULL);
250-#endif
251#endif247#endif
252 pgarch_MainLoop();248 pgarch_MainLoop();
253 249 
@@ -343,10 +339,8 @@ static void pgarch_MainLoop(void)
343 gettimeofday(&last_copy_time, NULL);339 gettimeofday(&last_copy_time, NULL);
344 bool time_to_stop = false;340 bool time_to_stop = false;
345#ifndef ENABLE_LITE_MODE341#ifndef ENABLE_LITE_MODE
346-#ifdef ENABLE_OBS
347 doArchive fun = NULL;342 doArchive fun = NULL;
348 const int millitosec = 1000;343 const int millitosec = 1000;
349-#endif
350#endif344#endif
351 345 
352 /*346 /*
@@ -400,7 +394,6 @@ static void pgarch_MainLoop(void)
400 break;394 break;
401 }395 }
402#ifndef ENABLE_LITE_MODE396#ifndef ENABLE_LITE_MODE
403-#ifdef ENABLE_OBS
404 load_server_mode();397 load_server_mode();
405 if (IsServerModeStandby()) {398 if (IsServerModeStandby()) {
406 399
@@ -419,14 +412,12 @@ static void pgarch_MainLoop(void)
419 TIME_GET_MILLISEC(last_copy_time));412 TIME_GET_MILLISEC(last_copy_time));
420 }413 }
421 }414 }
422-#endif
423#endif415#endif
424 416 
425 /* Do what we're here for */417 /* Do what we're here for */
426 if (t_thrd.arch.wakened || time_to_stop) {418 if (t_thrd.arch.wakened || time_to_stop) {
427 t_thrd.arch.wakened = false;419 t_thrd.arch.wakened = false;
428#ifndef ENABLE_LITE_MODE420#ifndef ENABLE_LITE_MODE
429-#ifdef ENABLE_OBS
430 obs_archive_slot = getArchiveReplicationSlot();421 obs_archive_slot = getArchiveReplicationSlot();
431 if (obs_archive_slot != NULL && !IsServerModeStandby()) {422 if (obs_archive_slot != NULL && !IsServerModeStandby()) {
432 gettimeofday(&curtime, NULL);423 gettimeofday(&curtime, NULL);
@@ -483,14 +474,11 @@ static void pgarch_MainLoop(void)
483 pgarch_ArchiverObsCopyLoop(flushPtr, fun);474 pgarch_ArchiverObsCopyLoop(flushPtr, fun);
484 }475 }
485 } else {476 } else {
486-#endif
487#endif477#endif
488 pgarch_ArchiverCopyLoop();478 pgarch_ArchiverCopyLoop();
489 gettimeofday(&last_copy_time, NULL);479 gettimeofday(&last_copy_time, NULL);
490#ifndef ENABLE_LITE_MODE480#ifndef ENABLE_LITE_MODE
491-#ifdef ENABLE_OBS
492 }481 }
493-#endif
494#endif482#endif
495 }483 }
496 484 
@@ -697,7 +685,6 @@ static inline void UpdateArchivedLsn(XLogRecPtr targetLsn)
697}685}
698 686 
699#ifndef ENABLE_LITE_MODE687#ifndef ENABLE_LITE_MODE
700-#ifdef ENABLE_OBS
701/*688/*
702 * pgarch_ArchiverObsCopyLoop689 * pgarch_ArchiverObsCopyLoop
703 *690 *
@@ -781,7 +768,6 @@ static void pgarch_ArchiverObsCopyLoop(XLogRecPtr flushPtr, doArchive fun)
781 } while (XLByteLT(t_thrd.arch.pitr_task_last_lsn, flushPtr));768 } while (XLByteLT(t_thrd.arch.pitr_task_last_lsn, flushPtr));
782}769}
783#endif770#endif
784-#endif
785 771 
786/*772/*
787 * pgarch_archiveXlog773 * pgarch_archiveXlog
@@ -1042,7 +1028,6 @@ static void archKill(int code, Datum arg)
1042}1028}
1043 1029 
1044#ifndef ENABLE_LITE_MODE1030#ifndef ENABLE_LITE_MODE
1045-#ifdef ENABLE_OBS
1046/*1031/*
1047 * pgarch_archiveRoachForPitrStandby1032 * pgarch_archiveRoachForPitrStandby
1048 * get signal from walreceiver, fork a roach process to archive xlog1033 * get signal from walreceiver, fork a roach process to archive xlog
@@ -1319,4 +1304,3 @@ static void InitArchiverLastTaskLsn(ArchiveSlotConfig* obs_archive_slot)
1319}1304}
1320 1305 
1321#endif1306#endif
1322-#endif
@@ -1887,7 +1887,7 @@ int PostmasterMain(int argc, char* argv[])
1887 */1887 */
1888 initialize_feature_flags();1888 initialize_feature_flags();
1889 1889 
1890-#if !defined(ENABLE_LITE_MODE) && defined(ENABLE_OBS)1890+#if !defined(ENABLE_LITE_MODE)
1891 /*1891 /*
1892 * @OBS1892 * @OBS
1893 * Create a global OBS CA object shared among threads1893 * Create a global OBS CA object shared among threads
@@ -3037,10 +3037,8 @@ int PostmasterMain(int argc, char* argv[])
3037 }3037 }
3038 3038 
3039#ifndef ENABLE_LITE_MODE3039#ifndef ENABLE_LITE_MODE
3040-#ifdef ENABLE_OBS
3041 if (g_instance.attr.attr_storage.enable_adio_function)3040 if (g_instance.attr.attr_storage.enable_adio_function)
3042 AioResourceInitialize();3041 AioResourceInitialize();
3043-#endif
3044#endif3042#endif
3045 3043 
3046 /* start alarm checker thread. */3044 /* start alarm checker thread. */
@@ -6464,7 +6462,6 @@ static void pmdie(SIGNAL_ARGS)
6464 }6462 }
6465 6463 
6466#ifndef ENABLE_LITE_MODE6464#ifndef ENABLE_LITE_MODE
6467-#ifdef ENABLE_OBS
6468 if (g_instance.pid_cxt.BarrierCreatorPID != 0) {6465 if (g_instance.pid_cxt.BarrierCreatorPID != 0) {
6469 barrier_creator_thread_shutdown();6466 barrier_creator_thread_shutdown();
6470 signal_child(g_instance.pid_cxt.BarrierCreatorPID, SIGTERM);6467 signal_child(g_instance.pid_cxt.BarrierCreatorPID, SIGTERM);
@@ -6478,7 +6475,6 @@ static void pmdie(SIGNAL_ARGS)
6478 }6475 }
6479 }6476 }
6480#endif6477#endif
6481-#endif
6482 6478 
6483#ifdef ENABLE_MULTIPLE_NODES6479#ifdef ENABLE_MULTIPLE_NODES
6484 if (g_instance.pid_cxt.CsnminSyncPID != 0) {6480 if (g_instance.pid_cxt.CsnminSyncPID != 0) {
@@ -6930,13 +6926,11 @@ static void ProcessDemoteRequest(void)
6930 }6926 }
6931 6927 
6932#ifndef ENABLE_LITE_MODE6928#ifndef ENABLE_LITE_MODE
6933-#ifdef ENABLE_OBS
6934 if (g_instance.pid_cxt.BarrierCreatorPID != 0) {6929 if (g_instance.pid_cxt.BarrierCreatorPID != 0) {
6935 barrier_creator_thread_shutdown();6930 barrier_creator_thread_shutdown();
6936 signal_child(g_instance.pid_cxt.BarrierCreatorPID, SIGTERM);6931 signal_child(g_instance.pid_cxt.BarrierCreatorPID, SIGTERM);
6937 }6932 }
6938#endif6933#endif
6939-#endif
6940 6934 
6941#ifdef ENABLE_MULTIPLE_NODES6935#ifdef ENABLE_MULTIPLE_NODES
6942 if (g_instance.pid_cxt.CsnminSyncPID != 0) {6936 if (g_instance.pid_cxt.CsnminSyncPID != 0) {
@@ -8715,13 +8709,11 @@ static void PostmasterStateMachineReadOnly(void)
8715 signal_child(g_instance.pid_cxt.HeartbeatPID, SIGTERM);8709 signal_child(g_instance.pid_cxt.HeartbeatPID, SIGTERM);
8716 8710 
8717#ifndef ENABLE_LITE_MODE8711#ifndef ENABLE_LITE_MODE
8718-#ifdef ENABLE_OBS
8719 if (g_instance.pid_cxt.BarrierCreatorPID != 0) {8712 if (g_instance.pid_cxt.BarrierCreatorPID != 0) {
8720 barrier_creator_thread_shutdown();8713 barrier_creator_thread_shutdown();
8721 signal_child(g_instance.pid_cxt.BarrierCreatorPID, SIGTERM);8714 signal_child(g_instance.pid_cxt.BarrierCreatorPID, SIGTERM);
8722 }8715 }
8723#endif8716#endif
8724-#endif
8725#ifdef ENABLE_MULTIPLE_NODES8717#ifdef ENABLE_MULTIPLE_NODES
8726 if (g_instance.pid_cxt.CsnminSyncPID != 0) {8718 if (g_instance.pid_cxt.CsnminSyncPID != 0) {
8727 csnminsync_thread_shutdown();8719 csnminsync_thread_shutdown();
@@ -15021,7 +15013,6 @@ int GaussDbThreadMain(knl_thread_arg* arg)
15021 } break;15013 } break;
15022 15014 
15023#ifndef ENABLE_LITE_MODE15015#ifndef ENABLE_LITE_MODE
15024-#ifdef ENABLE_OBS
15025 case BARRIER_CREATOR: {15016 case BARRIER_CREATOR: {
15026 if (START_BARRIER_CREATOR) {15017 if (START_BARRIER_CREATOR) {
15027 t_thrd.proc_cxt.MyPMChildSlot = AssignPostmasterChildSlot();15018 t_thrd.proc_cxt.MyPMChildSlot = AssignPostmasterChildSlot();
@@ -15047,7 +15038,6 @@ int GaussDbThreadMain(knl_thread_arg* arg)
15047 }15038 }
15048 } break;15039 } break;
15049#endif15040#endif
15050-#endif
15051 15041 
15052#ifdef ENABLE_MULTIPLE_NODES15042#ifdef ENABLE_MULTIPLE_NODES
15053 case COMM_POOLER_CLEAN: {15043 case COMM_POOLER_CLEAN: {
@@ -27,7 +27,7 @@ set(CMAKE_MODULE_PATH
27 ${CMAKE_CURRENT_SOURCE_DIR}/datavec27 ${CMAKE_CURRENT_SOURCE_DIR}/datavec
28)28)
29 29 
30-if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON" AND "${ENABLE_OBS}" STREQUAL "ON")30+if(NOT "${ENABLE_LITE_MODE}" STREQUAL "ON")
31 list(APPEND CMAKE_MODULE_PATH31 list(APPEND CMAKE_MODULE_PATH
32 ${CMAKE_CURRENT_SOURCE_DIR}/archive32 ${CMAKE_CURRENT_SOURCE_DIR}/archive
33 )33 )
@@ -4,9 +4,7 @@ include $(top_builddir)/src/Makefile.global
4 4 
5SUBDIRS = cbtree common heap index nbtree ubtree psort rmgrdesc transam obs hash spgist gist gin hbstore redo table ustore datavec ubtreepcr5SUBDIRS = cbtree common heap index nbtree ubtree psort rmgrdesc transam obs hash spgist gist gin hbstore redo table ustore datavec ubtreepcr
6ifeq ($(enable_lite_mode), no)6ifeq ($(enable_lite_mode), no)
7-ifeq ($(with_obs), yes)
8 SUBDIRS += archive7 SUBDIRS += archive
9endif8endif
10-endif
11 9 
12include $(top_srcdir)/src/gausskernel/common.mk10include $(top_srcdir)/src/gausskernel/common.mk
@@ -30,13 +30,11 @@ size_t ArchiveRead(const char* fileName, const int offset, char *buffer, const i
30 if (archive_config == NULL) {30 if (archive_config == NULL) {
31 return 0;31 return 0;
32 }32 }
33-#ifdef ENABLE_OBS
34 if (archive_config->media_type == ARCHIVE_OBS) {33 if (archive_config->media_type == ARCHIVE_OBS) {
35 return obsRead(fileName, offset, buffer, length, archive_config);34 return obsRead(fileName, offset, buffer, length, archive_config);
36 } else if (archive_config->media_type == ARCHIVE_NAS) {35 } else if (archive_config->media_type == ARCHIVE_NAS) {
37 return NasRead(fileName, offset, buffer, length, archive_config);36 return NasRead(fileName, offset, buffer, length, archive_config);
38 }37 }
39-#endif
40 return 0;38 return 0;
41}39}
42 40 
@@ -47,13 +45,11 @@ int ArchiveWrite(const char* fileName, const char *buffer, const int bufferLengt
47 return ret;45 return ret;
48 }46 }
49 47 
50-#ifdef ENABLE_OBS
51 if (archive_config->media_type == ARCHIVE_OBS) {48 if (archive_config->media_type == ARCHIVE_OBS) {
52 ret = obsWrite(fileName, buffer, bufferLength, archive_config);49 ret = obsWrite(fileName, buffer, bufferLength, archive_config);
53 } else if (archive_config->media_type == ARCHIVE_NAS) {50 } else if (archive_config->media_type == ARCHIVE_NAS) {
54 ret = NasWrite(fileName, buffer, bufferLength, archive_config);51 ret = NasWrite(fileName, buffer, bufferLength, archive_config);
55 }52 }
56-#endif
57 return ret;53 return ret;
58}54}
59 55 
@@ -63,13 +59,11 @@ int ArchiveDelete(const char* fileName, ArchiveConfig *archive_config)
63 if (archive_config == NULL) {59 if (archive_config == NULL) {
64 return ret;60 return ret;
65 }61 }
66-#ifdef ENABLE_OBS
67 if (archive_config->media_type == ARCHIVE_OBS) {62 if (archive_config->media_type == ARCHIVE_OBS) {
68 ret = obsDelete(fileName, archive_config);63 ret = obsDelete(fileName, archive_config);
69 } else if (archive_config->media_type == ARCHIVE_NAS) {64 } else if (archive_config->media_type == ARCHIVE_NAS) {
70 ret = NasDelete(fileName, archive_config);65 ret = NasDelete(fileName, archive_config);
71 }66 }
72-#endif
73 return ret;67 return ret;
74}68}
75 69 
@@ -79,13 +73,11 @@ List* ArchiveList(const char* prefix, ArchiveConfig *archive_config, bool report
79 if (archive_config == NULL) {73 if (archive_config == NULL) {
80 return fileNameList;74 return fileNameList;
81 }75 }
82-#ifdef ENABLE_OBS
83 if (archive_config->media_type == ARCHIVE_OBS) {76 if (archive_config->media_type == ARCHIVE_OBS) {
84 fileNameList = obsList(prefix, archive_config, reportError, shortenConnTime);77 fileNameList = obsList(prefix, archive_config, reportError, shortenConnTime);
85 } else if (archive_config->media_type == ARCHIVE_NAS) {78 } else if (archive_config->media_type == ARCHIVE_NAS) {
86 fileNameList = NasList(prefix, archive_config);79 fileNameList = NasList(prefix, archive_config);
87 }80 }
88-#endif
89 return fileNameList;81 return fileNameList;
90}82}
91 83 
@@ -96,12 +88,10 @@ bool ArchiveFileExist(const char* file_path, ArchiveConfig *archive_config)
96 ereport(WARNING, (errmsg("when check file exist, the archive config is null")));88 ereport(WARNING, (errmsg("when check file exist, the archive config is null")));
97 return ret;89 return ret;
98 }90 }
99-#ifdef ENABLE_OBS
100 if (archive_config->media_type == ARCHIVE_OBS) {91 if (archive_config->media_type == ARCHIVE_OBS) {
101 ret = checkOBSFileExist(file_path, archive_config);92 ret = checkOBSFileExist(file_path, archive_config);
102 } else if (archive_config->media_type == ARCHIVE_NAS) {93 } else if (archive_config->media_type == ARCHIVE_NAS) {
103 ret = checkNASFileExist(file_path, archive_config);94 ret = checkNASFileExist(file_path, archive_config);
104 }95 }
105-#endif
106 return ret;96 return ret;
107}97}
@@ -235,7 +235,8 @@ FETCH_URL_ERROR2:
235 errmsg("OBS URL's %s is not valid '%s'", invalid_element, folderName)));235 errmsg("OBS URL's %s is not valid '%s'", invalid_element, folderName)));
236}236}
237 237 
238-#if !defined(ENABLE_LITE_MODE) && defined(ENABLE_OBS)238+#if !defined(ENABLE_LITE_MODE)
239+#ifdef ENABLE_OBS
239// Some Windows stuff240// Some Windows stuff
240#ifndef FOPEN_EXTRA_FLAGS241#ifndef FOPEN_EXTRA_FLAGS
241#define FOPEN_EXTRA_FLAGS ""242#define FOPEN_EXTRA_FLAGS ""
@@ -2720,4 +2721,346 @@ bool DownloadOneItemFromOBS(char* netBackupPath, char* localPath, ArchiveConfig
2720 pfree_ext(metadataBuffer);2721 pfree_ext(metadataBuffer);
2721 return true;2722 return true;
2722}2723}
2724+#else
2725+// Some Windows stuff
2726+#ifndef FOPEN_EXTRA_FLAGS
2727+#define FOPEN_EXTRA_FLAGS ""
2728+#endif
2729+ 
2730+// Some Unix stuff (to work around Windows issues)
2731+#ifndef SLEEP_UNITS_PER_SECOND
2732+#define SLEEP_UNITS_PER_SECOND 1
2733+#endif
2734+ 
2735+#define MAX_RETRIES 3
2736+#define ERROR_MESSAGE_LEN 1024
2737+#define ERROR_DETAIL_LEN 4096
2738+#define MAX_PATH_LEN 1024
2739+ 
2740+#define OBS_MAX_PART 10000
2741+static int64 ifModifiedSince = -1;
2742+static int64 ifNotModifiedSince = -1;
2743+static char* ifMatch = 0;
2744+static char* ifNotMatch = 0;
2745+static int headerLen = 22;
2746+ 
2747+#define OBS_CIPHER_LIST "ECDHE-ECDSA-AES128-GCM-SHA256:" \
2748+ "ECDHE-ECDSA-AES256-GCM-SHA384:" \
2749+ "ECDHE-RSA-AES128-GCM-SHA256:" \
2750+ "ECDHE-RSA-AES256-GCM-SHA384:" \
2751+ "ECDHE-ECDSA-AES128-CCM:" \
2752+ "ECDHE-ECDSA-AES256-CCM"
2753+ 
2754+using namespace std;
2755+ 
2756+extern void decryptKeyString(const char *keyStr, char destplainStr[], uint32 destplainLength, const char *obskey);
2757+ 
2758+void SetObsMemoryContext(MemoryContext mctx)
2759+{
2760+}
2761+ 
2762+void UnSetObsMemoryContext(void)
2763+{
2764+}
2765+ 
2766+MemoryContext GetObsMemoryContext(void)
2767+{
2768+ return NULL;
2769+}
2770+ 
2771+void check_danger_character(const char *inputEnvValue)
2772+{
2773+}
2774+ 
2775+void getOBSCredential(char **client_crt_filepath)
2776+{
2777+}
2778+ 
2779+void initOBSCacheObject()
2780+{
2781+}
2782+ 
2783+char *getCAInfo()
2784+{
2785+ return NULL;
2786+}
2787+ 
2788+int should_retry(int &retriesG)
2789+{
2790+ return 0;
2791+}
2792+ 
2793+obs_status responsePropertiesCallback(const obs_response_properties *properties, void *callbackData)
2794+{
2795+ return OBS_STATUS_OK;
2796+}
2797+ 
2798+void responseCompleteCallback(obs_status status, const obs_error_details *error, void *callbackData)
2799+{
2800+}
2801+ 
2802+obs_status listServiceCallback(const char *ownerId, const char *bucketName, int64_t creationDateSeconds,
2803+ const char *ownerDisplayName, void *callbackData)
2804+{
2805+ return OBS_STATUS_OK;
2806+}
2807+ 
2808+obs_status listBucketObjectCallback(int isTruncated, const char *nextMarker, int contentsCount,
2809+ const obs_list_objects_content *contents, int commonPrefixesCount,
2810+ const char **commonPrefixes, void *callbackData)
2811+{
2812+ return OBS_STATUS_OK;
2813+}
2814+ 
2815+obs_status listBucketObjectCallbackForAnalyze(int isTruncated, const char *nextMarker, int contentsCount,
2816+ const obs_list_objects_content *contents, int commonPrefixesCount,
2817+ const char **commonPrefixes, void *callbackData)
2818+{
2819+ return OBS_STATUS_OK;
2820+}
2821+ 
2822+obs_status listBucketObjectCallbackForQuery(int isTruncated, const char *nextMarker, int contentsCount,
2823+ const obs_list_objects_content *contents, int commonPrefixesCount,
2824+ const char **commonPrefixes, void *callbackData)
2825+{
2826+ return OBS_STATUS_OK;
2827+}
2828+ 
2829+int list_bucket_objects_loop(obs_options *pobsOption, char *prefix, void (*cleanList)(List *),
2830+ obs_list_objects_handler *plistObjectsHandler, ListBucketCallBackData *callbackdata,
2831+ bool reportError)
2832+{
2833+ return 0;
2834+}
2835+ 
2836+List *list_bucket_objects_analyze(const char *uri, bool encrypt, const char *access_key, const char *secret_access_key)
2837+{
2838+ return NIL;
2839+}
2840+ 
2841+List *list_obs_bucket_objects(const char *uri, bool encrypt, const char *access_key, const char *secret_access_key)
2842+{
2843+ return NIL;
2844+}
2845+ 
2846+List *listObsObjects(OBSReadWriteHandler *handler, bool reportError)
2847+{
2848+ return NIL;
2849+}
2850+ 
2851+List *list_bucket_objects_for_query(OBSReadWriteHandler *handler, const char *bucket, char *prefix)
2852+{
2853+ return NIL;
2854+}
2855+ 
2856+void release_object_list(List *object_list)
2857+{
2858+}
2859+ 
2860+obs_status getObjectDataCallback(int bufferSize, const char *buffer, void *callbackData)
2861+{
2862+ return OBS_STATUS_OK;
2863+}
2864+ 
2865+size_t read_bucket_object(OBSReadWriteHandler *handler, char *output_buffer, uint32_t len)
2866+{
2867+ return 0;
2868+}
2869+ 
2870+int putObjectDataCallback(int bufferSize, char *buffer, void *callbackData)
2871+{
2872+ return 0;
2873+}
2874+ 
2875+int putTmpObjectDataCallback(int bufferSize, char *buffer, void *callbackData)
2876+{
2877+ return 0;
2878+}
2879+ 
2880+size_t write_bucket_object(OBSReadWriteHandler *handler, BufFile *buffile, uint32_t total_len)
2881+{
2882+ return 0;
2883+}
2884+ 
2885+int writeObsTempFile(OBSReadWriteHandler *handler, const char *bufferData, int dataSize)
2886+{
2887+ return -1;
2888+}
2889+ 
2890+int deleteOBSObject(OBSReadWriteHandler *handler)
2891+{
2892+ return -1;
2893+}
2894+ 
2895+int S3_init()
2896+{
2897+ return -1;
2898+}
2899+ 
2900+OBSReadWriteHandler *CreateObsReadWriteHandler(const char *object_url, OBSHandlerType type, ObsCopyOptions *options)
2901+{
2902+ return NULL;
2903+}
2904+ 
2905+OBSReadWriteHandler *CreateObsReadWriteHandlerForQuery(ObsOptions *options)
2906+{
2907+ return NULL;
2908+}
2909+ 
2910+void ObsReadWriteHandlerSetType(OBSReadWriteHandler *handler, OBSHandlerType type)
2911+{
2912+}
2913+ 
2914+void DestroyObsReadWriteHandler(OBSReadWriteHandler *handler, bool obsQueryType)
2915+{
2916+}
2917+ 
2918+void checkOBSServerValidity(char *hostName, char *ak, char *sk, bool encrypt)
2919+{
2920+}
2921+ 
2922+ObsOptions *copyObsOptions(ObsOptions *from)
2923+{
2924+ return NULL;
2925+}
2926+ 
2927+void freeObsOptions(ObsOptions *obsOptions, bool useSimpleFree)
2928+{
2929+}
2930+ 
2931+bool is_ip_address_format(const char *addr)
2932+{
2933+ return false;
2934+}
2935+ 
2936+ArchiveConfig *getArchiveConfig()
2937+{
2938+ return NULL;
2939+}
2940+ 
2941+void fillBucketContext(OBSReadWriteHandler *handler, const char* key, ArchiveConfig *obs_config, bool shortenConnTime)
2942+{
2943+}
2944+ 
2945+size_t obsRead(const char* fileName, const int offset, char *buffer, const int length, ArchiveConfig *obs_config)
2946+{
2947+ return 0;
2948+}
2949+ 
2950+int obsWrite(const char* fileName, const char *buffer, const int bufferLength, ArchiveConfig *obs_config)
2951+{
2952+ return -1;
2953+}
2954+ 
2955+int obsDelete(const char* fileName, ArchiveConfig *obs_config)
2956+{
2957+ return -1;
2958+}
2959+ 
2960+List* obsList(const char* prefix, ArchiveConfig *obs_config, bool reportError, bool shortenConnTime)
2961+{
2962+ return NIL;
2963+}
2964+ 
2965+void fillObsOption(obs_options *option, ArchiveConfig *obs_config)
2966+{
2967+}
2968+ 
2969+obs_status responsePropertiesCallbackForWrite(const obs_response_properties* properties, void* callbackData)
2970+{
2971+ return OBS_STATUS_OK;
2972+}
2973+ 
2974+obs_status responsePropertiesCallbackForOpen(const obs_response_properties* properties, void* callbackData)
2975+{
2976+ return OBS_STATUS_OK;
2977+}
2978+ 
2979+obs_status CompleteMultipartUploadCallback(
2980+ const char* location, const char* bucket, const char* key, const char* eTag, void* callbackData)
2981+{
2982+ return OBS_STATUS_OK;
2983+}
2984+ 
2985+obs_status responsePropertiesCallbackForRead(const obs_response_properties* properties, void* callbackData)
2986+{
2987+ return OBS_STATUS_OK;
2988+}
2989+ 
2990+obs_status openReadOBSFileCallback(int isTruncated, const char* nextMarker, int contentsCount,
2991+ const obs_list_objects_content* contents, int commonPrefixesCount, const char** commonPrefixes, void* callbackData)
2992+{
2993+ return OBS_STATUS_OK;
2994+}
2995+ 
2996+obs_status readOBSFileCallback(int bufferSize, const char* buffer, void* callbackData)
2997+{
2998+ return OBS_STATUS_OK;
2999+}
3000+ 
3001+obs_status head_properties_callback(const obs_response_properties *properties, void *callback_data)
3002+{
3003+ return OBS_STATUS_OK;
3004+}
3005+ 
3006+void head_complete_callback(obs_status status,
3007+ const obs_error_details *error,
3008+ void *callback_data)
3009+{
3010+}
3011+ 
3012+void* createOBSFile(const char* file_path, const char* mode, ArchiveConfig *obs_config)
3013+{
3014+ return NULL;
3015+}
3016+ 
3017+int writeOBSData(const void* write_data, size_t size, size_t len, OBSFile* fp, size_t* writeSize, ArchiveConfig *obs_config)
3018+{
3019+ return -1;
3020+}
3021+ 
3022+int closeOBSFile(void* filePtr, ArchiveConfig *obs_config)
3023+{
3024+ return -1;
3025+}
3026+ 
3027+void* openReadOBSFile(const char* file_path, const char* mode, ArchiveConfig *obs_config)
3028+{
3029+ return NULL;
3030+}
3031+ 
3032+int readOBSFile(char* data, size_t size, size_t len, void* fp, size_t* readSize, ArchiveConfig *obs_config)
3033+{
3034+ return -1;
3035+}
3036+ 
3037+int closeReadOBSFile(void* fp)
3038+{
3039+ return -1;
3040+}
3041+ 
3042+bool checkOBSFileExist(const char* file_path, ArchiveConfig *obs_config)
3043+{
3044+ return false;
3045+}
3046+ 
3047+bool feofReadOBSFile(const void* fp)
3048+{
3049+ return false;
3050+}
3051+ 
3052+void initializeOBS()
3053+{
3054+}
3055+ 
3056+bool UploadOneFileToOBS(char* localFilePath, char* netBackupPath, ArchiveConfig *obs_config)
3057+{
3058+ return false;
3059+}
3060+ 
3061+bool DownloadOneItemFromOBS(char* netBackupPath, char* localPath, ArchiveConfig *obs_config)
3062+{
3063+ return false;
3064+}
3065+#endif
2723#endif3066#endif
@@ -7783,7 +7783,6 @@ static bool recoveryStopsHere(XLogReaderState *record, bool *includeThis)
7783#endif7783#endif
7784 else if (XLogRecGetRmid(record) == RM_BARRIER_ID) {7784 else if (XLogRecGetRmid(record) == RM_BARRIER_ID) {
7785#ifndef ENABLE_LITE_MODE7785#ifndef ENABLE_LITE_MODE
7786-#ifdef ENABLE_OBS
7787 if (record_info == XLOG_BARRIER_CREATE) {7786 if (record_info == XLOG_BARRIER_CREATE) {
7788 recordBarrierId = (char *)XLogRecGetData(record);7787 recordBarrierId = (char *)XLogRecGetData(record);
7789 ereport(u_sess->attr.attr_storage.HaModuleDebug ? LOG : DEBUG4,7788 ereport(u_sess->attr.attr_storage.HaModuleDebug ? LOG : DEBUG4,
@@ -7793,7 +7792,6 @@ static bool recoveryStopsHere(XLogReaderState *record, bool *includeThis)
7793 }7792 }
7794#else7793#else
7795 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();7794 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
7796-#endif
7797#endif7795#endif
7798 } else if (XLogRecGetRmid(record) == RM_XLOG_ID) {7796 } else if (XLogRecGetRmid(record) == RM_XLOG_ID) {
7799 if (record_info == XLOG_RESTORE_POINT) {7797 if (record_info == XLOG_RESTORE_POINT) {
@@ -10382,9 +10380,7 @@ void StartupXLOG(void)
10382 (uint32)t_thrd.xlog_cxt.ReadRecPtr)));10380 (uint32)t_thrd.xlog_cxt.ReadRecPtr)));
10383 10381 
10384#ifndef ENABLE_LITE_MODE10382#ifndef ENABLE_LITE_MODE
10385-#ifdef ENABLE_OBS
10386 update_stop_barrier();10383 update_stop_barrier();
10387-#endif
10388#endif10384#endif
10389 INSTR_TIME_SET_CURRENT(rec_startTime);10385 INSTR_TIME_SET_CURRENT(rec_startTime);
10390 g_instance.dms_cxt.SSReformInfo.redo_start_time = GetCurrentTimestamp();10386 g_instance.dms_cxt.SSReformInfo.redo_start_time = GetCurrentTimestamp();
@@ -1202,7 +1202,6 @@ Datum pg_get_flush_lsn(PG_FUNCTION_ARGS)
1202Datum gs_set_obs_delete_location_with_slotname(PG_FUNCTION_ARGS)1202Datum gs_set_obs_delete_location_with_slotname(PG_FUNCTION_ARGS)
1203{1203{
1204#ifndef ENABLE_LITE_MODE1204#ifndef ENABLE_LITE_MODE
1205-#ifdef ENABLE_OBS
1206 char* lsnLocation = PG_GETARG_CSTRING(0);1205 char* lsnLocation = PG_GETARG_CSTRING(0);
1207 char* currentSlotName = PG_GETARG_CSTRING(1);1206 char* currentSlotName = PG_GETARG_CSTRING(1);
1208 1207 
@@ -1242,7 +1241,6 @@ Datum gs_set_obs_delete_location_with_slotname(PG_FUNCTION_ARGS)
1242 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1241 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1243 PG_RETURN_TEXT_P(NULL);1242 PG_RETURN_TEXT_P(NULL);
1244#endif1243#endif
1245-#endif
1246}1244}
1247 1245 
1248/*1246/*
@@ -1253,7 +1251,6 @@ Datum gs_set_obs_delete_location_with_slotname(PG_FUNCTION_ARGS)
1253Datum gs_set_obs_delete_location(PG_FUNCTION_ARGS)1251Datum gs_set_obs_delete_location(PG_FUNCTION_ARGS)
1254{1252{
1255#ifndef ENABLE_LITE_MODE1253#ifndef ENABLE_LITE_MODE
1256-#ifdef ENABLE_OBS
1257 text *location = PG_GETARG_TEXT_P(0);1254 text *location = PG_GETARG_TEXT_P(0);
1258 char *locationstr = NULL;1255 char *locationstr = NULL;
1259 uint32 hi = 0;1256 uint32 hi = 0;
@@ -1295,13 +1292,11 @@ Datum gs_set_obs_delete_location(PG_FUNCTION_ARGS)
1295 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1292 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1296 PG_RETURN_TEXT_P(NULL);1293 PG_RETURN_TEXT_P(NULL);
1297#endif1294#endif
1298-#endif
1299}1295}
1300 1296 
1301Datum gs_get_global_barrier_status(PG_FUNCTION_ARGS) 1297Datum gs_get_global_barrier_status(PG_FUNCTION_ARGS)
1302{1298{
1303#ifndef ENABLE_LITE_MODE1299#ifndef ENABLE_LITE_MODE
1304-#ifdef ENABLE_OBS
1305#define PG_GET_GLOBAL_BARRIER_STATUS_COLS 21300#define PG_GET_GLOBAL_BARRIER_STATUS_COLS 2
1306 char globalBarrierId[MAX_BARRIER_ID_LENGTH] = {0};1301 char globalBarrierId[MAX_BARRIER_ID_LENGTH] = {0};
1307 char globalAchiveBarrierId[MAX_BARRIER_ID_LENGTH] = {0};1302 char globalAchiveBarrierId[MAX_BARRIER_ID_LENGTH] = {0};
@@ -1397,13 +1392,11 @@ Datum gs_get_global_barrier_status(PG_FUNCTION_ARGS)
1397 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1392 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1398 PG_RETURN_DATUM(0);1393 PG_RETURN_DATUM(0);
1399#endif1394#endif
1400-#endif
1401} 1395}
1402 1396 
1403Datum gs_get_global_barriers_status(PG_FUNCTION_ARGS) 1397Datum gs_get_global_barriers_status(PG_FUNCTION_ARGS)
1404{1398{
1405#ifndef ENABLE_LITE_MODE1399#ifndef ENABLE_LITE_MODE
1406-#ifdef ENABLE_OBS
1407#define PG_GET_GLOBAL_BARRIERS_STATUS_COLS 31400#define PG_GET_GLOBAL_BARRIERS_STATUS_COLS 3
1408 char globalBarrierId[MAX_BARRIER_ID_LENGTH] = {0};1401 char globalBarrierId[MAX_BARRIER_ID_LENGTH] = {0};
1409 char globalAchiveBarrierId[MAX_BARRIER_ID_LENGTH] = {0};1402 char globalAchiveBarrierId[MAX_BARRIER_ID_LENGTH] = {0};
@@ -1526,7 +1519,6 @@ Datum gs_get_global_barriers_status(PG_FUNCTION_ARGS)
1526 tuplestore_donestoring(tupstore);1519 tuplestore_donestoring(tupstore);
1527#else1520#else
1528 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1521 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1529-#endif
1530#endif1522#endif
1531 PG_RETURN_DATUM(0);1523 PG_RETURN_DATUM(0);
1532} 1524}
@@ -1615,7 +1607,6 @@ Datum gs_get_local_barrier_status(PG_FUNCTION_ARGS)
1615Datum gs_hadr_do_switchover(PG_FUNCTION_ARGS)1607Datum gs_hadr_do_switchover(PG_FUNCTION_ARGS)
1616{1608{
1617#ifndef ENABLE_LITE_MODE1609#ifndef ENABLE_LITE_MODE
1618-#ifdef ENABLE_OBS
1619#define TIME_GET_MILLISEC(t) (((long)(t).tv_sec * 1000) + ((long)(t).tv_usec) / 1000)1610#define TIME_GET_MILLISEC(t) (((long)(t).tv_sec * 1000) + ((long)(t).tv_usec) / 1000)
1620 uint64_t barrier_index = 0;1611 uint64_t barrier_index = 0;
1621 int ret;1612 int ret;
@@ -1705,7 +1696,6 @@ Datum gs_hadr_do_switchover(PG_FUNCTION_ARGS)
1705 archiveSlotNames = NULL;1696 archiveSlotNames = NULL;
1706#else1697#else
1707 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1698 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1708-#endif
1709#endif1699#endif
1710 PG_RETURN_BOOL(true);1700 PG_RETURN_BOOL(true);
1711}1701}
@@ -1753,7 +1743,6 @@ Datum gs_hadr_in_recovery(PG_FUNCTION_ARGS)
1753Datum gs_upload_obs_file(PG_FUNCTION_ARGS)1743Datum gs_upload_obs_file(PG_FUNCTION_ARGS)
1754{1744{
1755#ifndef ENABLE_LITE_MODE1745#ifndef ENABLE_LITE_MODE
1756-#ifdef ENABLE_OBS
1757 char* slotname = PG_GETARG_CSTRING(0);1746 char* slotname = PG_GETARG_CSTRING(0);
1758 char* src = PG_GETARG_CSTRING(1);1747 char* src = PG_GETARG_CSTRING(1);
1759 char* dest = PG_GETARG_CSTRING(2);1748 char* dest = PG_GETARG_CSTRING(2);
@@ -1791,7 +1780,6 @@ Datum gs_upload_obs_file(PG_FUNCTION_ARGS)
1791 }1780 }
1792#else1781#else
1793 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1782 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1794-#endif
1795#endif1783#endif
1796 1784 
1797 PG_RETURN_VOID();1785 PG_RETURN_VOID();
@@ -1800,7 +1788,6 @@ Datum gs_upload_obs_file(PG_FUNCTION_ARGS)
1800Datum gs_download_obs_file(PG_FUNCTION_ARGS)1788Datum gs_download_obs_file(PG_FUNCTION_ARGS)
1801{1789{
1802#ifndef ENABLE_LITE_MODE1790#ifndef ENABLE_LITE_MODE
1803-#ifdef ENABLE_OBS
1804 char* slotname = PG_GETARG_CSTRING(0);1791 char* slotname = PG_GETARG_CSTRING(0);
1805 char* src = PG_GETARG_CSTRING(1);1792 char* src = PG_GETARG_CSTRING(1);
1806 char* dest = PG_GETARG_CSTRING(2);1793 char* dest = PG_GETARG_CSTRING(2);
@@ -1843,7 +1830,6 @@ Datum gs_download_obs_file(PG_FUNCTION_ARGS)
1843 }1830 }
1844#else1831#else
1845 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1832 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1846-#endif
1847#endif1833#endif
1848 1834 
1849 PG_RETURN_VOID();1835 PG_RETURN_VOID();
@@ -1852,7 +1838,6 @@ Datum gs_download_obs_file(PG_FUNCTION_ARGS)
1852Datum gs_get_obs_file_context(PG_FUNCTION_ARGS)1838Datum gs_get_obs_file_context(PG_FUNCTION_ARGS)
1853{1839{
1854#ifndef ENABLE_LITE_MODE1840#ifndef ENABLE_LITE_MODE
1855-#ifdef ENABLE_OBS
1856 char fileContext[MAXPGPATH] = {0};1841 char fileContext[MAXPGPATH] = {0};
1857 size_t readLen = 0;1842 size_t readLen = 0;
1858 char* setFileName = PG_GETARG_CSTRING(0);1843 char* setFileName = PG_GETARG_CSTRING(0);
@@ -1897,13 +1882,11 @@ Datum gs_get_obs_file_context(PG_FUNCTION_ARGS)
1897 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1882 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1898 PG_RETURN_TEXT_P(NULL);1883 PG_RETURN_TEXT_P(NULL);
1899#endif1884#endif
1900-#endif
1901}1885}
1902 1886 
1903Datum gs_set_obs_file_context(PG_FUNCTION_ARGS)1887Datum gs_set_obs_file_context(PG_FUNCTION_ARGS)
1904{1888{
1905#ifndef ENABLE_LITE_MODE1889#ifndef ENABLE_LITE_MODE
1906-#ifdef ENABLE_OBS
1907 int ret = 0;1890 int ret = 0;
1908 char* setFileName = PG_GETARG_CSTRING(0);1891 char* setFileName = PG_GETARG_CSTRING(0);
1909 char* setFileContext = PG_GETARG_CSTRING(1);1892 char* setFileContext = PG_GETARG_CSTRING(1);
@@ -1939,13 +1922,11 @@ Datum gs_set_obs_file_context(PG_FUNCTION_ARGS)
1939 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1922 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1940 PG_RETURN_TEXT_P(NULL);1923 PG_RETURN_TEXT_P(NULL);
1941#endif1924#endif
1942-#endif
1943}1925}
1944 1926 
1945Datum gs_get_hadr_key_cn(PG_FUNCTION_ARGS) 1927Datum gs_get_hadr_key_cn(PG_FUNCTION_ARGS)
1946{1928{
1947#ifndef ENABLE_LITE_MODE1929#ifndef ENABLE_LITE_MODE
1948-#ifdef ENABLE_OBS
1949#define GS_GET_HADR_KEY_CN_COLS 41930#define GS_GET_HADR_KEY_CN_COLS 4
1950 bool needLocalKeyCn = false;1931 bool needLocalKeyCn = false;
1951 char localKeyCn[MAXFNAMELEN] = {0};1932 char localKeyCn[MAXFNAMELEN] = {0};
@@ -2046,7 +2027,6 @@ Datum gs_get_hadr_key_cn(PG_FUNCTION_ARGS)
2046 tuplestore_donestoring(tupstore);2027 tuplestore_donestoring(tupstore);
2047#else2028#else
2048 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();2029 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
2049-#endif
2050#endif2030#endif
2051 PG_RETURN_DATUM(0);2031 PG_RETURN_DATUM(0);
2052}2032}
@@ -2197,7 +2177,6 @@ Datum gs_pitr_get_warning_for_xlog_force_recycle(PG_FUNCTION_ARGS)
2197Datum gs_get_active_archiving_standby(PG_FUNCTION_ARGS)2177Datum gs_get_active_archiving_standby(PG_FUNCTION_ARGS)
2198{2178{
2199#ifndef ENABLE_LITE_MODE2179#ifndef ENABLE_LITE_MODE
2200-#ifdef ENABLE_OBS
2201 int i;2180 int i;
2202 int rc;2181 int rc;
2203 errno_t errorno = EOK;2182 errno_t errorno = EOK;
@@ -2290,7 +2269,6 @@ Datum gs_get_active_archiving_standby(PG_FUNCTION_ARGS)
2290 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();2269 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
2291 PG_RETURN_DATUM(0);2270 PG_RETURN_DATUM(0);
2292#endif2271#endif
2293-#endif
2294}2272}
2295 2273 
2296#ifndef ENABLE_LITE_MODE2274#ifndef ENABLE_LITE_MODE
@@ -2309,7 +2287,6 @@ static bool checkIsDigit(const char* arg)
2309Datum gs_pitr_clean_history_global_barriers(PG_FUNCTION_ARGS)2287Datum gs_pitr_clean_history_global_barriers(PG_FUNCTION_ARGS)
2310{2288{
2311#ifndef ENABLE_LITE_MODE2289#ifndef ENABLE_LITE_MODE
2312-#ifdef ENABLE_OBS
2313 if (!superuser() && !(isOperatoradmin(GetUserId()) && u_sess->attr.attr_security.operation_mode)) {2290 if (!superuser() && !(isOperatoradmin(GetUserId()) && u_sess->attr.attr_security.operation_mode)) {
2314 ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),2291 ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
2315 (errmsg("Must be system admin or operator admin in operation mode to "2292 (errmsg("Must be system admin or operator admin in operation mode to "
@@ -2339,13 +2316,11 @@ Datum gs_pitr_clean_history_global_barriers(PG_FUNCTION_ARGS)
2339 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();2316 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
2340 PG_RETURN_TEXT_P(NULL);2317 PG_RETURN_TEXT_P(NULL);
2341#endif2318#endif
2342-#endif
2343}2319}
2344 2320 
2345Datum gs_pitr_archive_slot_force_advance(PG_FUNCTION_ARGS)2321Datum gs_pitr_archive_slot_force_advance(PG_FUNCTION_ARGS)
2346{2322{
2347#ifndef ENABLE_LITE_MODE2323#ifndef ENABLE_LITE_MODE
2348-#ifdef ENABLE_OBS
2349 XLogSegNo currArchslotSegNo;2324 XLogSegNo currArchslotSegNo;
2350 XLogRecPtr archiveSlotLocNow = InvalidXLogRecPtr;2325 XLogRecPtr archiveSlotLocNow = InvalidXLogRecPtr;
2351 char location[MAXFNAMELEN];2326 char location[MAXFNAMELEN];
@@ -2470,7 +2445,6 @@ Datum gs_pitr_archive_slot_force_advance(PG_FUNCTION_ARGS)
2470 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();2445 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
2471 PG_RETURN_TEXT_P(NULL);2446 PG_RETURN_TEXT_P(NULL);
2472#endif2447#endif
2473-#endif
2474}2448}
2475 2449 
2476Datum gs_get_standby_cluster_barrier_status(PG_FUNCTION_ARGS)2450Datum gs_get_standby_cluster_barrier_status(PG_FUNCTION_ARGS)
@@ -225,11 +225,9 @@ extern void VerifyEncoding(int encoding);
225extern void GetDistImportOptions(Oid relOid, DistImportPlanState *planstate, ForeignOptions *fOptions = NULL);225extern void GetDistImportOptions(Oid relOid, DistImportPlanState *planstate, ForeignOptions *fOptions = NULL);
226 226 
227#ifndef ENABLE_LITE_MODE227#ifndef ENABLE_LITE_MODE
228-#ifdef ENABLE_OBS
229static void assignOBSTaskToDataNode(List *urllist, List **totalTask, List *dnNames, DistImportPlanState *planstate,228static void assignOBSTaskToDataNode(List *urllist, List **totalTask, List *dnNames, DistImportPlanState *planstate,
230 int64 *fileNum = NULL);229 int64 *fileNum = NULL);
231#endif230#endif
232-#endif
233static void assignTaskToDataNodeInSharedMode(List *urllist, List **totalTask, List *dnNames);231static void assignTaskToDataNodeInSharedMode(List *urllist, List **totalTask, List *dnNames);
234static void assignTaskToDataNodeInNormalMode(List *urllist, List **totalTask, List *dnNames, int dop);232static void assignTaskToDataNodeInNormalMode(List *urllist, List **totalTask, List *dnNames, int dop);
235 233 
@@ -238,7 +236,6 @@ extern void decryptOBSForeignTableOption(List **options);
238List *getOBSFileList(List *urllist, bool encrypt, const char *access_key, const char *secret_access_key,236List *getOBSFileList(List *urllist, bool encrypt, const char *access_key, const char *secret_access_key,
239 bool isAnalyze);237 bool isAnalyze);
240#ifndef ENABLE_LITE_MODE238#ifndef ENABLE_LITE_MODE
241-#ifdef ENABLE_OBS
242/*239/*
243 * In OBS parallel data loading case, we may have # of datanodes not240 * In OBS parallel data loading case, we may have # of datanodes not
244 * equal to # of objects, as one object can only be assign to one241 * equal to # of objects, as one object can only be assign to one
@@ -247,7 +244,6 @@ List *getOBSFileList(List *urllist, bool encrypt, const char *access_key, const
247 */244 */
248static void assignOBSFileToDataNode(List *urllist, List **totalTask, List *dnNames);245static void assignOBSFileToDataNode(List *urllist, List **totalTask, List *dnNames);
249#endif246#endif
250-#endif
251 247 
252/*248/*
253 * Foreign-data wrapper handler function: return a struct with pointers249 * Foreign-data wrapper handler function: return a struct with pointers
@@ -436,7 +432,6 @@ static bool distAnalyzeForeignTable(Relation relation, AcquireSampleRowsFunc *fu
436}432}
437 433 
438#ifndef ENABLE_LITE_MODE434#ifndef ENABLE_LITE_MODE
439-#ifdef ENABLE_OBS
440/**435/**
441 * @Description: Scheduler file for dist obs foreign table.436 * @Description: Scheduler file for dist obs foreign table.
442 * @in foreignTableId, the given foreign table Oid.437 * @in foreignTableId, the given foreign table Oid.
@@ -488,7 +483,6 @@ List *CNSchedulingForDistOBSFt(Oid foreignTableId)
488 return totalTask;483 return totalTask;
489}484}
490#endif485#endif
491-#endif
492 486 
493/**487/**
494 * @Description: Build the related scanState information.488 * @Description: Build the related scanState information.
@@ -1070,7 +1064,6 @@ List *assignFileSegmentList(List *segmentlist, List *dnNames)
1070}1064}
1071 1065 
1072#ifndef ENABLE_LITE_MODE1066#ifndef ENABLE_LITE_MODE
1073-#ifdef ENABLE_OBS
1074/*1067/*
1075 * @Description: get all matched files in obs for each url1068 * @Description: get all matched files in obs for each url
1076 * @IN urllist: obs url list1069 * @IN urllist: obs url list
@@ -1201,7 +1194,6 @@ static void assignOBSTaskToDataNode(List *urllist, List **totalTask, List *dnNam
1201 pfree(obs_file_list);1194 pfree(obs_file_list);
1202}1195}
1203#endif1196#endif
1204-#endif
1205 1197 
1206/*1198/*
1207 * @Description: assign task to each data node in shared mode1199 * @Description: assign task to each data node in shared mode
@@ -1320,13 +1312,11 @@ List *assignTaskToDataNode(List *urllist, ImportMode mode, List *nodeList, int d
1320 const char *first_url = strVal(lfirst(list_head(urllist)));1312 const char *first_url = strVal(lfirst(list_head(urllist)));
1321 if (is_obs_protocol(first_url)) {1313 if (is_obs_protocol(first_url)) {
1322#ifndef ENABLE_LITE_MODE1314#ifndef ENABLE_LITE_MODE
1323-#ifdef ENABLE_OBS
1324 assignOBSTaskToDataNode(urllist, &totalTask, dnNames, planstate, fileNum);1315 assignOBSTaskToDataNode(urllist, &totalTask, dnNames, planstate, fileNum);
1325 list_free(dnNames);1316 list_free(dnNames);
1326 return totalTask;1317 return totalTask;
1327#else1318#else
1328 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1319 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1329-#endif
1330#endif1320#endif
1331 }1321 }
1332 1322 
@@ -1570,9 +1570,7 @@ retry:
1570 (void)ExecClearTuple(slot);1570 (void)ExecClearTuple(slot);
1571 MemoryContextReset(node->scanMcxt);1571 MemoryContextReset(node->scanMcxt);
1572#ifndef ENABLE_LITE_MODE1572#ifndef ENABLE_LITE_MODE
1573-#ifdef ENABLE_OBS
1574 SetObsMemoryContext(((CopyState)importState)->copycontext);1573 SetObsMemoryContext(((CopyState)importState)->copycontext);
1575-#endif
1576#endif1574#endif
1577 ReportIllegalCharExceptionThreshold();1575 ReportIllegalCharExceptionThreshold();
1578 1576 
@@ -99,12 +99,10 @@ static void GetFileHeader(WritableParser* self, const char* path);
99#define parser_securec_check_ss(rc) securec_check_ss(rc, "\0", "\0")99#define parser_securec_check_ss(rc) securec_check_ss(rc, "\0", "\0")
100 100 
101#ifndef ENABLE_LITE_MODE101#ifndef ENABLE_LITE_MODE
102-#ifdef ENABLE_OBS
103static size_t SourceRead_OBS(Source* self, void* buffer, size_t len);102static size_t SourceRead_OBS(Source* self, void* buffer, size_t len);
104static bool SourceNext_OBS(Source* self);103static bool SourceNext_OBS(Source* self);
105#endif104#endif
106#endif105#endif
107-#endif
108 106 
109static Source* CreateSource(const FileList* files, SourceType sourcetype);107static Source* CreateSource(const FileList* files, SourceType sourcetype);
110static void DestroyParser(Parser* self);108static void DestroyParser(Parser* self);
@@ -469,12 +467,10 @@ void Source::SourceInit(bool isWrite)
469#else467#else
470 if (m_sourcetype == SOURCE_TYPE_OBS) {468 if (m_sourcetype == SOURCE_TYPE_OBS) {
471#ifndef ENABLE_LITE_MODE469#ifndef ENABLE_LITE_MODE
472-#ifdef ENABLE_OBS
473 SourceRead = SourceRead_OBS;470 SourceRead = SourceRead_OBS;
474 SourceNext = SourceNext_OBS;471 SourceNext = SourceNext_OBS;
475#else472#else
476 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();473 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
477-#endif
478#endif474#endif
479 } else {475 } else {
480 SourceRead = SourceRead_File;476 SourceRead = SourceRead_File;
@@ -1307,13 +1303,11 @@ int GDS::LineBuffer::AppendLine(const char* buf, int buf_len, bool isComplete)
1307 }1303 }
1308#else1304#else
1309#ifndef ENABLE_LITE_MODE1305#ifndef ENABLE_LITE_MODE
1310-#ifdef ENABLE_OBS
1311 /* for OBS, append the overload data in overload buffer */1306 /* for OBS, append the overload data in overload buffer */
1312 SaveOverloadBuf(m_overload_buf, buf, buf_len, isComplete);1307 SaveOverloadBuf(m_overload_buf, buf, buf_len, isComplete);
1313#else1308#else
1314 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();1309 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
1315#endif1310#endif
1316-#endif
1317#endif1311#endif
1318 /*1312 /*
1319 * Here the curent overload buffer is already done so the actual buf_len can be returned.1313 * Here the curent overload buffer is already done so the actual buf_len can be returned.
@@ -1477,7 +1471,6 @@ int GDS::LineBuffer::SendOverloadBuf(evbuffer* dest, const char* buf, int buf_le
1477 1471 
1478#ifdef OBS_SERVER1472#ifdef OBS_SERVER
1479#ifndef ENABLE_LITE_MODE1473#ifndef ENABLE_LITE_MODE
1480-#ifdef ENABLE_OBS
1481static size_t SourceRead_OBS(Source* self, void* buffer, size_t len)1474static size_t SourceRead_OBS(Source* self, void* buffer, size_t len)
1482{1475{
1483 size_t nread = 0;1476 size_t nread = 0;
@@ -1699,4 +1692,3 @@ void GDS::LineBuffer::SaveOverloadBuf(StringInfo dest, const char* buf, int buf_
1699}1692}
1700#endif1693#endif
1701#endif1694#endif
1702-#endif
@@ -125,9 +125,7 @@ VectorBatch *distExecVecImport(VecForeignScanState *node)
125 MemoryContextReset(scanMcxt);125 MemoryContextReset(scanMcxt);
126 oldMemoryContext = MemoryContextSwitchTo(scanMcxt);126 oldMemoryContext = MemoryContextSwitchTo(scanMcxt);
127#ifndef ENABLE_LITE_MODE127#ifndef ENABLE_LITE_MODE
128-#ifdef ENABLE_OBS
129 SetObsMemoryContext(((CopyState)importState)->copycontext);128 SetObsMemoryContext(((CopyState)importState)->copycontext);
130-#endif
131#endif129#endif
132 for (batch->m_rows = 0; batch->m_rows < BatchMaxSize; batch->m_rows++) {130 for (batch->m_rows = 0; batch->m_rows < BatchMaxSize; batch->m_rows++) {
133retry:131retry:
@@ -37,7 +37,6 @@
37#include "pgxc/pgxc.h"37#include "pgxc/pgxc.h"
38 38 
39#ifndef ENABLE_LITE_MODE39#ifndef ENABLE_LITE_MODE
40-#ifdef ENABLE_OBS
41#define CUR_OBS_FILE_VERSION 140#define CUR_OBS_FILE_VERSION 1
42#define TIMEOUT_FOR_ARCHIVE_RECEIVER 60041#define TIMEOUT_FOR_ARCHIVE_RECEIVER 600
43 42 
@@ -1849,7 +1848,6 @@ char* DeleteStopBarrierRecordsOnMedia(long stopBarrierTimestamp, long endBarrier
1849 }1848 }
1850 return currOldestRecord;1849 return currOldestRecord;
1851}1850}
1852-#endif
1853#else1851#else
1854bool archive_connect(char* conninfo, XLogRecPtr* startpoint, char* slotname, int channel_identifier)1852bool archive_connect(char* conninfo, XLogRecPtr* startpoint, char* slotname, int channel_identifier)
1855{1853{
@@ -2599,7 +2599,6 @@ void MarkArchiveSlotOperate()
2599}2599}
2600 2600 
2601#ifndef ENABLE_LITE_MODE2601#ifndef ENABLE_LITE_MODE
2602-#ifdef ENABLE_OBS
2603void get_hadr_cn_info(char* keyCn, bool* isExitKey, char* deleteCn, bool* isExitDelete, 2602void get_hadr_cn_info(char* keyCn, bool* isExitKey, char* deleteCn, bool* isExitDelete,
2604 ArchiveSlotConfig *archive_conf)2603 ArchiveSlotConfig *archive_conf)
2605{2604{
@@ -2627,7 +2626,6 @@ void get_hadr_cn_info(char* keyCn, bool* isExitKey, char* deleteCn, bool* isExit
2627 }2626 }
2628}2627}
2629#endif2628#endif
2630-#endif
2631 2629 
2632void GetReplslotPath(char *path)2630void GetReplslotPath(char *path)
2633{2631{
@@ -268,7 +268,6 @@ Datum pg_create_physical_replication_slot(PG_FUNCTION_ARGS)
268Datum pg_create_physical_replication_slot_extern(PG_FUNCTION_ARGS)268Datum pg_create_physical_replication_slot_extern(PG_FUNCTION_ARGS)
269{269{
270#ifndef ENABLE_LITE_MODE270#ifndef ENABLE_LITE_MODE
271-#ifdef ENABLE_OBS
272 Name name = PG_GETARG_NAME(0);271 Name name = PG_GETARG_NAME(0);
273 bool isDummyStandby = PG_GETARG_BOOL(1);272 bool isDummyStandby = PG_GETARG_BOOL(1);
274 XLogRecPtr currFlushPtr = InvalidXLogRecPtr;273 XLogRecPtr currFlushPtr = InvalidXLogRecPtr;
@@ -358,7 +357,6 @@ Datum pg_create_physical_replication_slot_extern(PG_FUNCTION_ARGS)
358 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();357 FEATURE_ON_LITE_MODE_NOT_SUPPORTED();
359 PG_RETURN_DATUM(0);358 PG_RETURN_DATUM(0);
360#endif359#endif
361-#endif
362}360}
363 361 
364void create_logical_replication_slot(const Name name, Name plugin, bool isDummyStandby, Oid databaseId,362void create_logical_replication_slot(const Name name, Name plugin, bool isDummyStandby, Oid databaseId,
@@ -57,7 +57,7 @@ install: all installdirs
57# These headers are needed by madlib57# These headers are needed by madlib
58 $(MKDIR_P) '$(DESTDIR)$(includedir_server)'/cjson/58 $(MKDIR_P) '$(DESTDIR)$(includedir_server)'/cjson/
59 $(INSTALL_DATA) $(CJSON_INCLUDE_PATH)/cjson/cJSON.h '$(DESTDIR)$(includedir_server)'/cjson/cJSON.h59 $(INSTALL_DATA) $(CJSON_INCLUDE_PATH)/cjson/cJSON.h '$(DESTDIR)$(includedir_server)'/cjson/cJSON.h
60-ifeq ($(enable_lite_mode), no)60+ifeq ($(enable_lite_mode)_$(enable_obs), no_yes)
61 $(INSTALL_DATA) $(with_3rd)/$(BINARYPATH)/libobs/comm/include/eSDKOBS.h '$(DESTDIR)$(includedir_server)'/access/obs/eSDKOBS.h61 $(INSTALL_DATA) $(with_3rd)/$(BINARYPATH)/libobs/comm/include/eSDKOBS.h '$(DESTDIR)$(includedir_server)'/access/obs/eSDKOBS.h
62endif62endif
63 $(INSTALL_DATA) $(srcdir)/access/hash.inl '$(DESTDIR)$(includedir_server)'/access/hash.inl63 $(INSTALL_DATA) $(srcdir)/access/hash.inl '$(DESTDIR)$(includedir_server)'/access/hash.inl
@@ -149,10 +149,71 @@ typedef struct OBSReadWriteHandler {
149#endif149#endif
150} OBSReadWriteHandler;150} OBSReadWriteHandler;
151 151 
152+#ifndef ENABLE_OBS
153+typedef enum obs_status
154+{
155+ OBS_STATUS_OK = 0, // Operation succeeded
156+ OBS_STATUS_ERROR = 1, // General error
157+ OBS_STATUS_INVALID_ARGUMENT = 2, // Invalid argument passed to function
158+ OBS_STATUS_NOT_FOUND = 3, // Requested resource not found
159+ OBS_STATUS_CONNECTION_FAILED = 4, // Connection to OBS failed
160+ OBS_STATUS_TIMEOUT = 5, // Operation timed out
161+ OBS_STATUS_AUTH_FAILED = 6, // Authentication failed
162+ OBS_STATUS_RETRYABLE = 7, // Retryable error
163+ OBS_STATUS_UNKNOWN = 8 // Unknown error
164+} obs_status;
165+ 
166+struct obs_response_properties {
167+ const char* etag;
168+ const char* last_modified;
169+ int content_length;
170+};
171+ 
172+struct obs_error_details {
173+ const char* message;
174+ const char* resource;
175+ const char* further_details;
176+};
177+ 
178+struct obs_list_objects_content {
179+ const char* key;
180+ int64_t size;
181+ const char* etag;
182+ const char* last_modified;
183+};
184+ 
185+struct obs_options {
186+ struct {
187+ const char* host_name;
188+ const char* bucket_name;
189+ bool protocol; // true for HTTPS, false for HTTP
190+ const char* access_key;
191+ const char* secret_access_key;
192+ const char* certificate_info;
193+ } bucket_options;
194+};
195+ 
196+typedef struct {
197+ obs_status (*response_properties_callback)(const obs_response_properties *properties, void *callbackData);
198+ void (*response_complete_callback)(obs_status status, const obs_error_details *error, void *callbackData);
199+ obs_status (*list_objects_callback)(int isTruncated, const char *nextMarker, int contentsCount,
200+ const obs_list_objects_content *contents, int commonPrefixesCount,
201+ const char **commonPrefixes, void *callbackData);
202+} obs_list_objects_handler;
203+ 
204+typedef struct {
205+ int isTruncated;
206+ char *nextMarker;
207+ char *hostName;
208+ const char *bucket;
209+ List *objectList;
210+} ListBucketCallBackData;
211+#endif
212+ 
152typedef struct ListServiceData {213typedef struct ListServiceData {
153 int headerPrinted;214 int headerPrinted;
154 int allDetails;215 int allDetails;
155-#if !defined(ENABLE_LITE_MODE) && defined(ENABLE_OBS)216+#if !defined(ENABLE_LITE_MODE)
156 obs_status ret_status;217 obs_status ret_status;
157#endif218#endif
158} ListServiceData;219} ListServiceData;
@@ -4,14 +4,6 @@ CREATE TABLE xmltest (
4);4);
5INSERT INTO xmltest VALUES (1, '<value>one</value>');5INSERT INTO xmltest VALUES (1, '<value>one</value>');
6INSERT INTO xmltest VALUES (2, '<value>two</value>');6INSERT INTO xmltest VALUES (2, '<value>two</value>');
7-INSERT INTO xmltest VALUES (3, '<wrong');
8-ERROR: invalid XML content
9-LINE 1: INSERT INTO xmltest VALUES (3, '<wrong');
10- ^
11-DETAIL: line 1: Couldn't find end of Start Tag wrong line 1
12-<wrong
13- ^
14-CONTEXT: referenced column: data
15CREATE TABLE emp (7CREATE TABLE emp (
16 name varchar(20),8 name varchar(20),
17 age int,9 age int,
@@ -73,14 +65,6 @@ ERROR: argument of XMLCONCAT must be type xml, not type integer
73LINE 1: SELECT xmlconcat(1, 2);65LINE 1: SELECT xmlconcat(1, 2);
74 ^66 ^
75CONTEXT: referenced column: xmlconcat67CONTEXT: referenced column: xmlconcat
76-SELECT xmlconcat('bad', '<syntax');
77-ERROR: invalid XML content
78-LINE 1: SELECT xmlconcat('bad', '<syntax');
79- ^
80-DETAIL: line 1: Couldn't find end of Start Tag syntax line 1
81-<syntax
82- ^
83-CONTEXT: referenced column: xmlconcat
84SELECT xmlconcat('<foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');68SELECT xmlconcat('<foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
85 xmlconcat 69 xmlconcat
86--------------70--------------
@@ -225,24 +209,6 @@ SELECT xmlparse(content '<abc>x</abc>');
225 <abc>x</abc>209 <abc>x</abc>
226(1 row)210(1 row)
227 211 
228-SELECT xmlparse(content '<invalidentity>&</invalidentity>');
229-ERROR: invalid XML content
230-DETAIL: line 1: xmlParseEntityRef: no name
231-<invalidentity>&</invalidentity>
232- ^
233-line 1: chunk is not well balanced
234-<invalidentity>&</invalidentity>
235- ^
236-CONTEXT: referenced column: xmlparse
237-SELECT xmlparse(content '<undefinedentity>&idontexist;</undefinedentity>');
238-ERROR: invalid XML content
239-DETAIL: line 1: Entity 'idontexist' not defined
240-<undefinedentity>&idontexist;</undefinedentity>
241- ^
242-line 1: chunk is not well balanced
243-<undefinedentity>&idontexist;</undefinedentity>
244- ^
245-CONTEXT: referenced column: xmlparse
246SELECT xmlparse(content '<invalidns xmlns=''&lt;''/>');212SELECT xmlparse(content '<invalidns xmlns=''&lt;''/>');
247 xmlparse 213 xmlparse
248---------------------------214---------------------------
@@ -255,18 +221,6 @@ SELECT xmlparse(content '<relativens xmlns=''relative''/>');
255 <relativens xmlns='relative'/>221 <relativens xmlns='relative'/>
256(1 row)222(1 row)
257 223 
258-SELECT xmlparse(content '<twoerrors>&idontexist;</unbalanced>');
259-ERROR: invalid XML content
260-DETAIL: line 1: Entity 'idontexist' not defined
261-<twoerrors>&idontexist;</unbalanced>
262- ^
263-line 1: Opening and ending tag mismatch: twoerrors line 1 and unbalanced
264-<twoerrors>&idontexist;</unbalanced>
265- ^
266-line 1: chunk is not well balanced
267-<twoerrors>&idontexist;</unbalanced>
268- ^
269-CONTEXT: referenced column: xmlparse
270SELECT xmlparse(content '<nosuchprefix:tag/>');224SELECT xmlparse(content '<nosuchprefix:tag/>');
271 xmlparse 225 xmlparse
272---------------------226---------------------
@@ -285,24 +239,6 @@ SELECT xmlparse(document '<abc>x</abc>');
285 <abc>x</abc>239 <abc>x</abc>
286(1 row)240(1 row)
287 241 
288-SELECT xmlparse(document '<invalidentity>&</abc>');
289-ERROR: invalid XML document
290-DETAIL: line 1: xmlParseEntityRef: no name
291-<invalidentity>&</abc>
292- ^
293-line 1: Opening and ending tag mismatch: invalidentity line 1 and abc
294-<invalidentity>&</abc>
295- ^
296-CONTEXT: referenced column: xmlparse
297-SELECT xmlparse(document '<undefinedentity>&idontexist;</abc>');
298-ERROR: invalid XML document
299-DETAIL: line 1: Entity 'idontexist' not defined
300-<undefinedentity>&idontexist;</abc>
301- ^
302-line 1: Opening and ending tag mismatch: undefinedentity line 1 and abc
303-<undefinedentity>&idontexist;</abc>
304- ^
305-CONTEXT: referenced column: xmlparse
306SELECT xmlparse(document '<invalidns xmlns=''&lt;''/>');242SELECT xmlparse(document '<invalidns xmlns=''&lt;''/>');
307 xmlparse 243 xmlparse
308---------------------------244---------------------------
@@ -315,15 +251,6 @@ SELECT xmlparse(document '<relativens xmlns=''relative''/>');
315 <relativens xmlns='relative'/>251 <relativens xmlns='relative'/>
316(1 row)252(1 row)
317 253 
318-SELECT xmlparse(document '<twoerrors>&idontexist;</unbalanced>');
319-ERROR: invalid XML document
320-DETAIL: line 1: Entity 'idontexist' not defined
321-<twoerrors>&idontexist;</unbalanced>
322- ^
323-line 1: Opening and ending tag mismatch: twoerrors line 1 and unbalanced
324-<twoerrors>&idontexist;</unbalanced>
325- ^
326-CONTEXT: referenced column: xmlparse
327SELECT xmlparse(document '<nosuchprefix:tag/>');254SELECT xmlparse(document '<nosuchprefix:tag/>');
328 xmlparse 255 xmlparse
329---------------------256---------------------
@@ -958,27 +885,10 @@ DROP TABLE emp;
958create database xmlmysql_db dbcompatibility 'B';885create database xmlmysql_db dbcompatibility 'B';
959\c xmlmysql_db886\c xmlmysql_db
960create table test(a xml);887create table test(a xml);
961-insert into test values('a<');
962-ERROR: invalid XML content
963-LINE 1: insert into test values('a<');
964- ^
965-DETAIL: line 1: StartTag: invalid element name
966-a<
967- ^
968-CONTEXT: referenced column: a
969-insert /*+ ignore_error */into test values('a<');
970-WARNING: invalid XML content
971-LINE 1: insert /*+ ignore_error */into test values('a<');
972- ^
973-DETAIL: line 1: StartTag: invalid element name
974-a<
975- ^
976-CONTEXT: referenced column: a
977select * from test;888select * from test;
978- a 889+ a
979-----890+---
980- a<891+(0 rows)
981-(1 row)
982 892 
983drop table test;893drop table test;
984\c regression894\c regression
@@ -385,7 +385,9 @@ static void list_obs_objects(char* bucketName, char* key, ListObjectsCallBackDat
385 (void*)objectsData);385 (void*)objectsData);
386 } while (obs_status_is_retryable(statusG) && should_retry(retriesG));386 } while (obs_status_is_retryable(statusG) && should_retry(retriesG));
387 387 
388+#ifdef ENABLE_OBS
388 obs_deinitialize();389 obs_deinitialize();
390+#endif
389}391}
390 392 
391/* delete objects */393/* delete objects */
@@ -422,7 +424,9 @@ static void delete_obs_objects(char* bucketName, char* key)
422 printError();424 printError();
423 }425 }
424 426 
427+#ifdef ENABLE_OBS
425 obs_deinitialize();428 obs_deinitialize();
429+#endif
426}430}
427 431 
428#if defined WIN32432#if defined WIN32
@@ -5,7 +5,6 @@ CREATE TABLE xmltest (
5 5 
6INSERT INTO xmltest VALUES (1, '<value>one</value>');6INSERT INTO xmltest VALUES (1, '<value>one</value>');
7INSERT INTO xmltest VALUES (2, '<value>two</value>');7INSERT INTO xmltest VALUES (2, '<value>two</value>');
8-INSERT INTO xmltest VALUES (3, '<wrong');
9 8 
10CREATE TABLE emp (9CREATE TABLE emp (
11 name varchar(20),10 name varchar(20),
@@ -36,7 +35,6 @@ SELECT xmlconcat(xmlcomment('hello'),
36 35 
37SELECT xmlconcat('hello', 'you');36SELECT xmlconcat('hello', 'you');
38SELECT xmlconcat(1, 2);37SELECT xmlconcat(1, 2);
39-SELECT xmlconcat('bad', '<syntax');
40SELECT xmlconcat('<foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');38SELECT xmlconcat('<foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
41SELECT xmlconcat('<?xml version="1.1"?><foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');39SELECT xmlconcat('<?xml version="1.1"?><foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>');
42SELECT xmlconcat(NULL);40SELECT xmlconcat(NULL);
@@ -75,20 +73,14 @@ SELECT xmlelement(name foo, xmlattributes('<>&"''' as funny, xml 'b<a/>r' as fun
75 73 
76SELECT xmlparse(content 'abc');74SELECT xmlparse(content 'abc');
77SELECT xmlparse(content '<abc>x</abc>');75SELECT xmlparse(content '<abc>x</abc>');
78-SELECT xmlparse(content '<invalidentity>&</invalidentity>');
79-SELECT xmlparse(content '<undefinedentity>&idontexist;</undefinedentity>');
80SELECT xmlparse(content '<invalidns xmlns=''&lt;''/>');76SELECT xmlparse(content '<invalidns xmlns=''&lt;''/>');
81SELECT xmlparse(content '<relativens xmlns=''relative''/>');77SELECT xmlparse(content '<relativens xmlns=''relative''/>');
82-SELECT xmlparse(content '<twoerrors>&idontexist;</unbalanced>');
83SELECT xmlparse(content '<nosuchprefix:tag/>');78SELECT xmlparse(content '<nosuchprefix:tag/>');
84 79 
85SELECT xmlparse(document 'abc');80SELECT xmlparse(document 'abc');
86SELECT xmlparse(document '<abc>x</abc>');81SELECT xmlparse(document '<abc>x</abc>');
87-SELECT xmlparse(document '<invalidentity>&</abc>');
88-SELECT xmlparse(document '<undefinedentity>&idontexist;</abc>');
89SELECT xmlparse(document '<invalidns xmlns=''&lt;''/>');82SELECT xmlparse(document '<invalidns xmlns=''&lt;''/>');
90SELECT xmlparse(document '<relativens xmlns=''relative''/>');83SELECT xmlparse(document '<relativens xmlns=''relative''/>');
91-SELECT xmlparse(document '<twoerrors>&idontexist;</unbalanced>');
92SELECT xmlparse(document '<nosuchprefix:tag/>');84SELECT xmlparse(document '<nosuchprefix:tag/>');
93 85 
94 86 
@@ -284,8 +276,6 @@ DROP TABLE emp;
284create database xmlmysql_db dbcompatibility 'B';276create database xmlmysql_db dbcompatibility 'B';
285\c xmlmysql_db277\c xmlmysql_db
286create table test(a xml);278create table test(a xml);
287-insert into test values('a<');
288-insert /*+ ignore_error */into test values('a<');
289select * from test;279select * from test;
290drop table test;280drop table test;
291\c regression281\c regression