60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
|
|
/*-------------------------------------------------------------------------
|
||
|
|
*
|
||
|
|
* ruleutils.c
|
||
|
|
* incremental view maintenance extension
|
||
|
|
* Routines for convert stored expressions/querytrees back to
|
||
|
|
* source text
|
||
|
|
*
|
||
|
|
* Portions Copyright (c) 2022, IVM Development Group
|
||
|
|
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
|
||
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||
|
|
*
|
||
|
|
*-------------------------------------------------------------------------
|
||
|
|
*/
|
||
|
|
|
||
|
|
#include "postgres.h"
|
||
|
|
|
||
|
|
#if defined(PG_VERSION_NUM) && (PG_VERSION_NUM >= 150000)
|
||
|
|
#include "utils/ruleutils.h"
|
||
|
|
#elif defined(PG_VERSION_NUM) && (PG_VERSION_NUM >= 140000)
|
||
|
|
#include "ruleutils_14.c"
|
||
|
|
#else
|
||
|
|
#include "ruleutils_13.c"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#include "pg_ivm.h"
|
||
|
|
|
||
|
|
/* Standard conversion of a "bool pretty" option to detailed flags */
|
||
|
|
#define GET_PRETTY_FLAGS(pretty) \
|
||
|
|
((pretty) ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) \
|
||
|
|
: PRETTYFLAG_INDENT)
|
||
|
|
|
||
|
|
/* ----------
|
||
|
|
* pg_get_querydef
|
||
|
|
*
|
||
|
|
* Public entry point to deparse one query parsetree.
|
||
|
|
* The pretty flags are determined by GET_PRETTY_FLAGS(pretty).
|
||
|
|
*
|
||
|
|
* The result is a palloc'd C string.
|
||
|
|
* ----------
|
||
|
|
*/
|
||
|
|
char *
|
||
|
|
pg_ivm_get_querydef(Query *query, bool pretty)
|
||
|
|
{
|
||
|
|
#if defined(PG_VERSION_NUM) && (PG_VERSION_NUM >= 150000)
|
||
|
|
return pg_get_querydef(query, pretty);
|
||
|
|
#else
|
||
|
|
StringInfoData buf;
|
||
|
|
int prettyFlags;
|
||
|
|
|
||
|
|
prettyFlags = GET_PRETTY_FLAGS(pretty);
|
||
|
|
|
||
|
|
initStringInfo(&buf);
|
||
|
|
|
||
|
|
get_query_def(query, &buf, NIL, NULL, true,
|
||
|
|
prettyFlags, WRAP_COLUMN_DEFAULT, 0);
|
||
|
|
|
||
|
|
return buf.data;
|
||
|
|
#endif
|
||
|
|
}
|