forked from huawei/openGauss-server
For oracle_fdw.
This commit is contained in:
parent
f9eddc45b8
commit
df66f2fd3d
|
|
@ -34,8 +34,15 @@ else
|
||||||
install_mysql_fdw:
|
install_mysql_fdw:
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(enable_oracle_fdw), yes)
|
||||||
|
install_oracle_fdw:
|
||||||
|
$(MAKE) -C contrib/oracle_fdw install
|
||||||
|
else
|
||||||
|
install_oracle_fdw:
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(enable_multiple_nodes), yes)
|
ifeq ($(enable_multiple_nodes), yes)
|
||||||
install: install_mysql_fdw
|
install: install_mysql_fdw install_oracle_fdw
|
||||||
$(MAKE) -C contrib/hstore $@
|
$(MAKE) -C contrib/hstore $@
|
||||||
$(MAKE) -C src/distribute/kernel/extension/packages $@
|
$(MAKE) -C src/distribute/kernel/extension/packages $@
|
||||||
$(MAKE) -C contrib/pagehack $@
|
$(MAKE) -C contrib/pagehack $@
|
||||||
|
|
@ -45,7 +52,7 @@ install: install_mysql_fdw
|
||||||
$(MAKE) -C src/distribute/kernel/extension/tsdb $@
|
$(MAKE) -C src/distribute/kernel/extension/tsdb $@
|
||||||
+@echo "PostgreSQL installation complete."
|
+@echo "PostgreSQL installation complete."
|
||||||
else
|
else
|
||||||
install: install_mysql_fdw
|
install: install_mysql_fdw install_oracle_fdw
|
||||||
+@echo "openGauss installation complete."
|
+@echo "openGauss installation complete."
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -514,6 +514,7 @@ Compilation log: **make_compile.log**
|
||||||
> 3. On the **ARMv8.1** platform or a later version (for example, Kunpeng 920), **-D__ARM_LSE** needs to be added to **CFLAGS**.
|
> 3. On the **ARMv8.1** platform or a later version (for example, Kunpeng 920), **-D__ARM_LSE** needs to be added to **CFLAGS**.
|
||||||
> 4. If **binarylibs** is moved to **openGauss-server** or a soft link to **binarylibs** is created in **openGauss-server**, you do not need to specify the **--3rd** parameter. However, if you do so, please note that the file is easy to be deleted by the `git clean` command.
|
> 4. If **binarylibs** is moved to **openGauss-server** or a soft link to **binarylibs** is created in **openGauss-server**, you do not need to specify the **--3rd** parameter. However, if you do so, please note that the file is easy to be deleted by the `git clean` command.
|
||||||
> 5. To build with mysql_fdw, add **--enable-mysql-fdw** when configure. Note that before build mysql_fdw, MariaDB's C client library is needed.
|
> 5. To build with mysql_fdw, add **--enable-mysql-fdw** when configure. Note that before build mysql_fdw, MariaDB's C client library is needed.
|
||||||
|
> 6. To build with oracle_fdw, add **--enable-oracle-fdw** when configure. Note that before build oracle_fdw, Oracle's C client library is needed.
|
||||||
|
|
||||||
4. Run the following commands to compile openGauss:
|
4. Run the following commands to compile openGauss:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -744,6 +744,7 @@ enable_jemalloc_debug
|
||||||
enable_multiple_nodes
|
enable_multiple_nodes
|
||||||
enable_memory_check
|
enable_memory_check
|
||||||
enable_mysql_fdw
|
enable_mysql_fdw
|
||||||
|
enable_oracle_fdw
|
||||||
enable_thread_check
|
enable_thread_check
|
||||||
enable_shared
|
enable_shared
|
||||||
default_gs_version
|
default_gs_version
|
||||||
|
|
@ -821,6 +822,7 @@ enable_jemalloc_debug
|
||||||
enable_multiple_nodes
|
enable_multiple_nodes
|
||||||
enable_memory_check
|
enable_memory_check
|
||||||
enable_mysql_fdw
|
enable_mysql_fdw
|
||||||
|
enable_oracle_fdw
|
||||||
enable_thread_check
|
enable_thread_check
|
||||||
enable_spinlocks
|
enable_spinlocks
|
||||||
enable_debug
|
enable_debug
|
||||||
|
|
@ -2869,6 +2871,28 @@ else
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check whether --enable-oracle-fdw was given.
|
||||||
|
if test "${enable_oracle_fdw+set}" = set; then
|
||||||
|
enableval=$enable_oracle_fdw;
|
||||||
|
case $enableval in
|
||||||
|
yes)
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
no)
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
{ { $as_echo "$as_me:$LINENO: error: no argument expected for --enable-oracle-fdw option" >&5
|
||||||
|
$as_echo "$as_me: error: no argument expected for --enable-oracle-fdw option" >&2;}
|
||||||
|
{ (exit 1); exit 1; }; }
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
enable_oracle_fdw=no
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
# Check whether --enable-thread-check was given.
|
# Check whether --enable-thread-check was given.
|
||||||
if test "${enable_thread_check+set}" = set; then
|
if test "${enable_thread_check+set}" = set; then
|
||||||
enableval=$enable_thread_check;
|
enableval=$enable_thread_check;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
|
||||||
|
#
|
||||||
|
# openGauss is licensed under Mulan PSL v2.
|
||||||
|
# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||||
|
# You may obtain a copy of Mulan PSL v2 at:
|
||||||
|
#
|
||||||
|
# http://license.coscl.org.cn/MulanPSL2
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||||
|
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||||
|
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||||
|
# See the Mulan PSL v2 for more details.
|
||||||
|
# ---------------------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Makefile
|
||||||
|
# Makefile for the oracle_fdw
|
||||||
|
#
|
||||||
|
# IDENTIFICATION
|
||||||
|
# contrib/oracle_fdw/Makefile
|
||||||
|
#
|
||||||
|
# ---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
all:oracle_fdw_target
|
||||||
|
install:install-data
|
||||||
|
|
||||||
|
top_builddir ?= ../../
|
||||||
|
ORACLE_FDW_DIR=$(top_builddir)/third_party/dependency/oracle_fdw
|
||||||
|
ORACLE_FDW_PACKAGE=oracle_fdw-ORACLE_FDW_2_2_0
|
||||||
|
ORACLE_FDW_PATCH=huawei_oracle_fdw-2.2.0_patch
|
||||||
|
ORACLE_FDW_MEGRED_SOURCES_DIR=$(ORACLE_FDW_DIR)/code
|
||||||
|
|
||||||
|
.PHONY: oracle_fdw_target
|
||||||
|
oracle_fdw_target:
|
||||||
|
@$(call create_oracle_fdw_sources)
|
||||||
|
@make -C $(ORACLE_FDW_MEGRED_SOURCES_DIR)/$(ORACLE_FDW_PACKAGE) NO_PGXS=1
|
||||||
|
|
||||||
|
.PHONY: install-data
|
||||||
|
install-data: oracle_fdw_target
|
||||||
|
@make -C $(ORACLE_FDW_MEGRED_SOURCES_DIR)/$(ORACLE_FDW_PACKAGE) NO_PGXS=1 install
|
||||||
|
|
||||||
|
uninstall distclean clean:
|
||||||
|
@rm -rf $(ORACLE_FDW_MEGRED_SOURCES_DIR)
|
||||||
|
|
||||||
|
define create_oracle_fdw_sources
|
||||||
|
rm -rf $(ORACLE_FDW_MEGRED_SOURCES_DIR); \
|
||||||
|
mkdir $(ORACLE_FDW_MEGRED_SOURCES_DIR); \
|
||||||
|
tar xfzv $(ORACLE_FDW_DIR)/$(ORACLE_FDW_PACKAGE).tar.gz -C $(ORACLE_FDW_MEGRED_SOURCES_DIR) &> /dev/null; \
|
||||||
|
for ((i=1;i<=99;i++)); \
|
||||||
|
do \
|
||||||
|
file_name="$(ORACLE_FDW_DIR)/$$i-oracle_fdw-2.2.0_patch.patch"; \
|
||||||
|
if [ ! -f "$$file_name" ]; then \
|
||||||
|
exit 0; \
|
||||||
|
fi; \
|
||||||
|
patch -p0 -d $(ORACLE_FDW_MEGRED_SOURCES_DIR)/$(ORACLE_FDW_PACKAGE) < $$file_name &> /dev/null; \
|
||||||
|
done
|
||||||
|
rename ".c" ".cpp" $(ORACLE_FDW_MEGRED_SOURCES_DIR)/$(ORACLE_FDW_PACKAGE)/*.c; \
|
||||||
|
patch -p0 -d $(ORACLE_FDW_MEGRED_SOURCES_DIR)/$(ORACLE_FDW_PACKAGE) < $(ORACLE_FDW_DIR)/$(ORACLE_FDW_PATCH).patch &> /dev/null;
|
||||||
|
endef
|
||||||
|
|
@ -172,6 +172,7 @@ enable_jemalloc = @enable_jemalloc@
|
||||||
enable_jemalloc_debug = @enable_jemalloc_debug@
|
enable_jemalloc_debug = @enable_jemalloc_debug@
|
||||||
enable_multiple_nodes = @enable_multiple_nodes@
|
enable_multiple_nodes = @enable_multiple_nodes@
|
||||||
enable_mysql_fdw = @enable_mysql_fdw@
|
enable_mysql_fdw = @enable_mysql_fdw@
|
||||||
|
enable_oracle_fdw = @enable_oracle_fdw@
|
||||||
enable_memory_check = @enable_memory_check@
|
enable_memory_check = @enable_memory_check@
|
||||||
enable_memory_check_core = @enable_memory_check_core@
|
enable_memory_check_core = @enable_memory_check_core@
|
||||||
enable_thread_check = @enable_thread_check@
|
enable_thread_check = @enable_thread_check@
|
||||||
|
|
|
||||||
|
|
@ -868,8 +868,10 @@ static void CheckUnsupportInsertSelectClause(Query* query)
|
||||||
|
|
||||||
AssertEreport(query->commandType == CMD_INSERT, MOD_OPT, "Only deal with CMD_INSERT commondType here");
|
AssertEreport(query->commandType == CMD_INSERT, MOD_OPT, "Only deal with CMD_INSERT commondType here");
|
||||||
if (result->relkind == RELKIND_FOREIGN_TABLE) {
|
if (result->relkind == RELKIND_FOREIGN_TABLE) {
|
||||||
if (isMOTFromTblOid(result->relid) || isMysqlFDWFromTblOid(result->relid))
|
if (isMOTFromTblOid(result->relid) || isMysqlFDWFromTblOid(result->relid) ||
|
||||||
|
isOracleFDWFromTblOid(result->relid)) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (list_length(query->rtable) == 1)
|
if (list_length(query->rtable) == 1)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,10 @@ ifeq ($(enable_mysql_fdw), yes)
|
||||||
SUBDIRS += $(top_builddir)/contrib/mysql_fdw
|
SUBDIRS += $(top_builddir)/contrib/mysql_fdw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(enable_oracle_fdw), yes)
|
||||||
|
SUBDIRS += $(top_builddir)/contrib/oracle_fdw
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(enable_multiple_nodes), yes)
|
ifeq ($(enable_multiple_nodes), yes)
|
||||||
SUBDIRS += ../distribute/kernel ../distribute/kernel/extension/roach_api ../distribute/kernel/extension/dimsearch/main \
|
SUBDIRS += ../distribute/kernel ../distribute/kernel/extension/roach_api ../distribute/kernel/extension/dimsearch/main \
|
||||||
../distribute/kernel/extension/tsdb
|
../distribute/kernel/extension/tsdb
|
||||||
|
|
|
||||||
|
|
@ -8462,7 +8462,8 @@ ModifyTable* make_modifytable(CmdType operation, bool canSetTag, List* resultRel
|
||||||
Plan* subplan = (Plan*)(linitial(subplans));
|
Plan* subplan = (Plan*)(linitial(subplans));
|
||||||
ForeignScan* fscan = NULL;
|
ForeignScan* fscan = NULL;
|
||||||
if ((fscan = (ForeignScan*)FindForeignScan(subplan)) != NULL) {
|
if ((fscan = (ForeignScan*)FindForeignScan(subplan)) != NULL) {
|
||||||
if (!isMOTFromTblOid(fscan->scan_relid) && !isMysqlFDWFromTblOid(fscan->scan_relid))
|
if (!isMOTFromTblOid(fscan->scan_relid) && !isMysqlFDWFromTblOid(fscan->scan_relid) &&
|
||||||
|
!isOracleFDWFromTblOid(fscan->scan_relid))
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errmodule(MOD_OPT),
|
(errmodule(MOD_OPT),
|
||||||
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||||
|
|
|
||||||
|
|
@ -285,6 +285,9 @@ bool isWriteOnlyFt(Oid relid);
|
||||||
#define isMysqlFDWFromTblOid(relId) \
|
#define isMysqlFDWFromTblOid(relId) \
|
||||||
(IsSpecifiedFDWFromRelid(relId, MYSQL_FDW))
|
(IsSpecifiedFDWFromRelid(relId, MYSQL_FDW))
|
||||||
|
|
||||||
|
#define isOracleFDWFromTblOid(relId) \
|
||||||
|
(IsSpecifiedFDWFromRelid(relId, ORACLE_FDW))
|
||||||
|
|
||||||
#define IS_OBS_CSV_TXT_FOREIGN_TABLE(relId) \
|
#define IS_OBS_CSV_TXT_FOREIGN_TABLE(relId) \
|
||||||
(IsSpecifiedFDWFromRelid(relId, DIST_FDW) && (is_obs_protocol(HdfsGetOptionValue(relId, optLocation))))
|
(IsSpecifiedFDWFromRelid(relId, DIST_FDW) && (is_obs_protocol(HdfsGetOptionValue(relId, optLocation))))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,10 @@
|
||||||
#define MYSQL_FDW "mysql_fdw"
|
#define MYSQL_FDW "mysql_fdw"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef ORACLE_FDW
|
||||||
|
#define ORACLE_FDW "oracle_fdw"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MOT_FDW
|
#ifndef MOT_FDW
|
||||||
#define MOT_FDW "mot_fdw"
|
#define MOT_FDW "mot_fdw"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
Reference in New Issue