* 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.
* ---------------------------------------------------------------------------------------
*
* dist_fdw.h
*
*
*
* IDENTIFICATION
* src/include/bulkload/dist_fdw.h
*
* ---------------------------------------------------------------------------------------
*/
#ifndef __DIST_FDW_H__
#define __DIST_FDW_H__
#include "postgres.h"
#include "knl/knl_variable.h"
#include "fmgr.h"
#include "nodes/nodes.h"
#include "nodes/pg_list.h"
#include "storage/buf/block.h"
#include "storage/smgr/fd.h"
#include "nodes/parsenodes.h"
#include "bulkload/importerror.h"
extern "C" Datum dist_fdw_handler(PG_FUNCTION_ARGS);
extern "C" Datum dist_fdw_validator(PG_FUNCTION_ARGS);
extern "C" Datum file_fdw_handler(PG_FUNCTION_ARGS);
extern "C" Datum file_fdw_validator(PG_FUNCTION_ARGS);
#ifdef ENABLE_MOT
extern "C" Datum mot_fdw_validator(PG_FUNCTION_ARGS);
extern "C" Datum mot_fdw_handler(PG_FUNCTION_ARGS);
#endif
extern void encryptOBSForeignTableOption(List** options);
BlockNumber getPageCountForFt(void *additionalData);
* in shared mode coordinator assign file to data node
*/
typedef struct DistFdwFileSegment {
NodeTag type;
char* filename;
long begin;
long end;
int64 ObjectSize;
} DistFdwFileSegment;
typedef struct DistFdwDataNodeTask {
NodeTag type;
char* dnName;
List* task;
} DistFdwDataNodeTask;
typedef struct {
NodeTag type;
int logger_num;
RangeTblEntry* rte;
char* filename;
ImportErrorLogger** loggers;
} ErrorCacheEntry;
extern const char* optLocation;
extern const char* optFormat;
extern const char* optHeader;
extern const char* optDelimiter;
extern const char* optQutote;
extern const char* optEscape;
extern const char* optNull;
extern const char* optEncoding;
extern const char* optFillMissFields;
extern const char* optRejectLimit;
extern const char* optMode;
extern const char* optForceNotNull;
extern const char* optWriteOnly;
extern const char* optWithoutEscaping;
extern const char* optErrorRel;
extern const char* optFormatter;
extern const char* optFix;
extern const char* optFileHeader;
extern const char* optOutputFilePrefix;
extern const char* optOutputFixAlignment;
extern const char* optLogRemote;
extern const char* optSessionKey;
extern const char* optTaskList;
extern const char* optIgnoreExtraData;
extern const char* optChunkSize;
extern const char* optAsync;
extern const char* optEncrypt;
extern const char* optAccessKey;
extern const char* optSecretAccessKey;
#define DEST_CIPHER_LENGTH 1024
* bulkload compatible illegal chars option
*/
extern const char* optCompatibleIllegalChars;
* bulkload datetime format options
*/
extern const char* optDateFormat;
extern const char* optTimeFormat;
extern const char* optTimestampFormat;
extern const char* optSmalldatetimeFormat;
extern const char* GSFS_PREFIX;
extern const char* GSFSS_PREFIX;
extern const char* LOCAL_PREFIX;
extern const char* ROACH_PREFIX;
extern const char* GSOBS_PREFIX;
extern const int GSFS_PREFIX_LEN;
extern const int GSFSS_PREFIX_LEN;
extern const int LOCAL_PREFIX_LEN;
extern const int ROACH_PREFIX_LEN;
extern const int GSOBS_PREFIX_LEN;
extern bool is_obs_protocol(const char* filename);
#define REJECT_UNLIMITED -1
extern ErrorCacheEntry* GetForeignErrCacheEntry(Oid relid, uint32 distSessionKey);
List* CNSchedulingForDistOBSFt(Oid foreignTableId);
#endif