nth_value enhancement feature without changing buildin function

This commit is contained in:
zhoujingbnu
2024-11-14 17:13:14 +08:00
parent 4cc77b3d02
commit 6fe721ff5b
22 changed files with 590 additions and 18 deletions

View File

@ -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);

View File

@ -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;
/*

View File

@ -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;
/*

View File

@ -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)

View File

@ -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 */