aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/jsonpath.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2024-01-03 11:25:33 +0100
committerPeter Eisentraut <peter@eisentraut.org>2024-01-03 11:25:33 +0100
commit283a95da923605c1cc148155db2d865d0801b419 (patch)
treeba18d24db7e71cab5ab8f6ce0224760e77a42fce /src/backend/utils/adt/jsonpath.c
parentc1b9e1e56d8c11a00869766a02de537d349586cd (diff)
downloadpostgresql-283a95da923605c1cc148155db2d865d0801b419.tar.gz
postgresql-283a95da923605c1cc148155db2d865d0801b419.zip
Reorganise jsonpath operators and methods
Various jsonpath operators and methods add various keywords, switch cases, and documentation entries in some order. However, they are not consistent; reorder them for better maintainability or readability. Author: Jeevan Chalke <jeevan.chalke@enterprisedb.com> Discussion: https://www.postgresql.org/message-id/flat/CAM2+6=XjTyqrrqHAOj80r0wVQxJSxc0iyib9bPC55uFO9VKatg@mail.gmail.com
Diffstat (limited to 'src/backend/utils/adt/jsonpath.c')
-rw-r--r--src/backend/utils/adt/jsonpath.c82
1 files changed, 41 insertions, 41 deletions
diff --git a/src/backend/utils/adt/jsonpath.c b/src/backend/utils/adt/jsonpath.c
index c5ba3b7f1d0..8ff9b5646fb 100644
--- a/src/backend/utils/adt/jsonpath.c
+++ b/src/backend/utils/adt/jsonpath.c
@@ -439,10 +439,10 @@ flattenJsonPathParseItem(StringInfo buf, int *result, struct Node *escontext,
break;
case jpiType:
case jpiSize:
+ case jpiDouble:
case jpiAbs:
- case jpiFloor:
case jpiCeiling:
- case jpiDouble:
+ case jpiFloor:
case jpiKeyValue:
break;
default:
@@ -610,18 +610,6 @@ printJsonPathItem(StringInfo buf, JsonPathItem *v, bool inKey,
if (printBracketes)
appendStringInfoChar(buf, ')');
break;
- case jpiPlus:
- case jpiMinus:
- if (printBracketes)
- appendStringInfoChar(buf, '(');
- appendStringInfoChar(buf, v->type == jpiPlus ? '+' : '-');
- jspGetArg(v, &elem);
- printJsonPathItem(buf, &elem, false,
- operationPriority(elem.type) <=
- operationPriority(v->type));
- if (printBracketes)
- appendStringInfoChar(buf, ')');
- break;
case jpiFilter:
appendStringInfoString(buf, "?(");
jspGetArg(v, &elem);
@@ -712,23 +700,35 @@ printJsonPathItem(StringInfo buf, JsonPathItem *v, bool inKey,
v->content.anybounds.first,
v->content.anybounds.last);
break;
+ case jpiPlus:
+ case jpiMinus:
+ if (printBracketes)
+ appendStringInfoChar(buf, '(');
+ appendStringInfoChar(buf, v->type == jpiPlus ? '+' : '-');
+ jspGetArg(v, &elem);
+ printJsonPathItem(buf, &elem, false,
+ operationPriority(elem.type) <=
+ operationPriority(v->type));
+ if (printBracketes)
+ appendStringInfoChar(buf, ')');
+ break;
case jpiType:
appendStringInfoString(buf, ".type()");
break;
case jpiSize:
appendStringInfoString(buf, ".size()");
break;
+ case jpiDouble:
+ appendStringInfoString(buf, ".double()");
+ break;
case jpiAbs:
appendStringInfoString(buf, ".abs()");
break;
- case jpiFloor:
- appendStringInfoString(buf, ".floor()");
- break;
case jpiCeiling:
appendStringInfoString(buf, ".ceiling()");
break;
- case jpiDouble:
- appendStringInfoString(buf, ".double()");
+ case jpiFloor:
+ appendStringInfoString(buf, ".floor()");
break;
case jpiDatetime:
appendStringInfoString(buf, ".datetime(");
@@ -771,11 +771,11 @@ jspOperationName(JsonPathItemType type)
return "<=";
case jpiGreaterOrEqual:
return ">=";
- case jpiPlus:
case jpiAdd:
+ case jpiPlus:
return "+";
- case jpiMinus:
case jpiSub:
+ case jpiMinus:
return "-";
case jpiMul:
return "*";
@@ -783,26 +783,26 @@ jspOperationName(JsonPathItemType type)
return "/";
case jpiMod:
return "%";
- case jpiStartsWith:
- return "starts with";
- case jpiLikeRegex:
- return "like_regex";
case jpiType:
return "type";
case jpiSize:
return "size";
- case jpiKeyValue:
- return "keyvalue";
case jpiDouble:
return "double";
case jpiAbs:
return "abs";
- case jpiFloor:
- return "floor";
case jpiCeiling:
return "ceiling";
+ case jpiFloor:
+ return "floor";
case jpiDatetime:
return "datetime";
+ case jpiKeyValue:
+ return "keyvalue";
+ case jpiStartsWith:
+ return "starts with";
+ case jpiLikeRegex:
+ return "like_regex";
default:
elog(ERROR, "unrecognized jsonpath item type: %d", type);
return NULL;
@@ -893,10 +893,10 @@ jspInitByBuffer(JsonPathItem *v, char *base, int32 pos)
case jpiAnyKey:
case jpiType:
case jpiSize:
+ case jpiDouble:
case jpiAbs:
- case jpiFloor:
case jpiCeiling:
- case jpiDouble:
+ case jpiFloor:
case jpiKeyValue:
case jpiLast:
break;
@@ -935,9 +935,9 @@ jspInitByBuffer(JsonPathItem *v, char *base, int32 pos)
case jpiNot:
case jpiExists:
case jpiIsUnknown:
+ case jpiFilter:
case jpiPlus:
case jpiMinus:
- case jpiFilter:
case jpiDatetime:
read_int32(v->content.arg, base, pos);
break;
@@ -989,13 +989,6 @@ jspGetNext(JsonPathItem *v, JsonPathItem *a)
v->type == jpiRoot ||
v->type == jpiVariable ||
v->type == jpiLast ||
- v->type == jpiAdd ||
- v->type == jpiSub ||
- v->type == jpiMul ||
- v->type == jpiDiv ||
- v->type == jpiMod ||
- v->type == jpiPlus ||
- v->type == jpiMinus ||
v->type == jpiEqual ||
v->type == jpiNotEqual ||
v->type == jpiGreater ||
@@ -1006,12 +999,19 @@ jspGetNext(JsonPathItem *v, JsonPathItem *a)
v->type == jpiOr ||
v->type == jpiNot ||
v->type == jpiIsUnknown ||
+ v->type == jpiAdd ||
+ v->type == jpiPlus ||
+ v->type == jpiSub ||
+ v->type == jpiMinus ||
+ v->type == jpiMul ||
+ v->type == jpiDiv ||
+ v->type == jpiMod ||
v->type == jpiType ||
v->type == jpiSize ||
+ v->type == jpiDouble ||
v->type == jpiAbs ||
- v->type == jpiFloor ||
v->type == jpiCeiling ||
- v->type == jpiDouble ||
+ v->type == jpiFloor ||
v->type == jpiDatetime ||
v->type == jpiKeyValue ||
v->type == jpiStartsWith ||