openGauss-server/contrib/gc_fdw/deparse_single.cpp

60 lines
1.4 KiB
C++

/*-------------------------------------------------------------------------
*
* deparse_single.cpp
* Query deparser for gc_fdw
*
* IDENTIFICATION
* contrib/gc_fdw/deparse_single.cpp
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include "knl/knl_variable.h"
#include "gc_fdw.h"
#include "access/heapam.h"
#include "access/htup.h"
#include "access/sysattr.h"
#include "catalog/pg_aggregate.h"
#include "catalog/pg_collation.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_type.h"
#include "commands/defrem.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
#include "nodes/plannodes.h"
#include "optimizer/clauses.h"
#include "optimizer/prep.h"
#include "optimizer/tlist.h"
#include "optimizer/var.h"
#include "parser/parsetree.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
/*
* the string list of the targetlist of ForeignScan is used in explain command when agg
* is deparsed to remote sql.
*/
List* get_str_targetlist(List* fdw_private)
{
List* str_targetlist = (List*)list_nth(fdw_private, FdwScanPrivateStrTargetlist);
List* rs = NIL;
ListCell* lc = NULL;
foreach (lc, str_targetlist) {
Value* val = (Value*)lfirst(lc);
rs = lappend(rs, val->val.str);
}
return rs;
}