nth_value enhancement feature without changing buildin function
This commit is contained in:
@ -162,6 +162,7 @@ extern const uint32 CHARBYTE_SEMANTIC_VERSION_NUMBER;
|
||||
extern const uint32 APPLY_JOIN_VERSION_NUMBER;
|
||||
extern const uint32 PUBLIC_SYNONYM_VERSION_NUMBER;
|
||||
extern const uint32 KEEP_FUNC_VERSION_NUMBER;
|
||||
extern const uint32 IGNORE_NULLS_VERSION_NUMBER;
|
||||
|
||||
extern void register_backend_version(uint32 backend_version);
|
||||
extern bool contain_backend_version(uint32 version_number);
|
||||
|
||||
@ -1742,6 +1742,8 @@ typedef struct FuncCall {
|
||||
struct WindowDef *over; /* OVER clause, if any */
|
||||
int location; /* token location, or -1 if unknown */
|
||||
bool call_func; /* call function, false is select function */
|
||||
bool is_from_last; /* used for window function nth_value */
|
||||
bool is_ignore_nulls; /* used for window function nth_value */
|
||||
} FuncCall;
|
||||
|
||||
/*
|
||||
|
||||
@ -367,6 +367,8 @@ typedef struct WindowFunc {
|
||||
#ifdef USE_SPQ
|
||||
bool windistinct; /* TRUE if it's agg(DISTINCT ...) */
|
||||
#endif
|
||||
bool is_from_last; /* used for window function nth_value */
|
||||
bool is_ignore_nulls; /* used for window function nth_value */
|
||||
} WindowFunc;
|
||||
|
||||
/*
|
||||
|
||||
@ -442,6 +442,7 @@ PG_KEYWORD("notify", NOTIFY, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("notnull", NOTNULL, TYPE_FUNC_NAME_KEYWORD)
|
||||
PG_KEYWORD("novalidate", NOVALIDATE, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("nowait", NOWAIT, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("nth_value", NTH_VALUE_P, COL_NAME_KEYWORD)
|
||||
PG_KEYWORD("null", NULL_P, RESERVED_KEYWORD)
|
||||
PG_KEYWORD("nullcols", NULLCOLS, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("nullif", NULLIF, COL_NAME_KEYWORD)
|
||||
@ -550,6 +551,7 @@ PG_KEYWORD("replica", REPLICA, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("reset", RESET, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("resize", RESIZE, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("resource", RESOURCE, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("respect", RESPECT_P, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("restart", RESTART, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("restrict", RESTRICT, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("result", RESULT, UNRESERVED_KEYWORD)
|
||||
|
||||
@ -57,6 +57,8 @@ typedef struct WindowObjectData {
|
||||
int readptr; /* tuplestore read pointer for this fn */
|
||||
int64 markpos; /* row that markptr is positioned on */
|
||||
int64 seekpos; /* row that readptr is positioned on */
|
||||
bool is_from_last; /* used for nth_value */
|
||||
bool is_ignore_nulls; /* used for nth_value */
|
||||
} WindowObjectData;
|
||||
|
||||
/* this struct is private in nodeWindowAgg.c */
|
||||
|
||||
Reference in New Issue
Block a user