diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2024-01-03 21:02:49 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2024-01-03 21:02:49 +0100 |
commit | 0958f8f6bf60639a1d22d78d5b49a6092b11833d (patch) | |
tree | c9a83ecaaf3df63bc8a787cf280c9895e12b3776 /src/backend/utils/adt/jsonpath.c | |
parent | 76ba8a8b631454ad06b6d4dd186ef2a739f0f7ce (diff) | |
download | postgresql-0958f8f6bf60639a1d22d78d5b49a6092b11833d.tar.gz postgresql-0958f8f6bf60639a1d22d78d5b49a6092b11833d.zip |
Revert "Reorganise jsonpath operators and methods"
This reverts commit 283a95da923605c1cc148155db2d865d0801b419.
The reordering of JsonPathItemType affects the binary on-disk
compatibility of the jsonpath type, so we must not change it. Revert
for now and consider.
Diffstat (limited to 'src/backend/utils/adt/jsonpath.c')
-rw-r--r-- | src/backend/utils/adt/jsonpath.c | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/src/backend/utils/adt/jsonpath.c b/src/backend/utils/adt/jsonpath.c index 8ff9b5646fb..c5ba3b7f1d0 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 jpiCeiling: case jpiFloor: + case jpiCeiling: + case jpiDouble: case jpiKeyValue: break; default: @@ -610,6 +610,18 @@ 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); @@ -700,35 +712,23 @@ 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 jpiFloor: - appendStringInfoString(buf, ".floor()"); + case jpiDouble: + appendStringInfoString(buf, ".double()"); break; case jpiDatetime: appendStringInfoString(buf, ".datetime("); @@ -771,11 +771,11 @@ jspOperationName(JsonPathItemType type) return "<="; case jpiGreaterOrEqual: return ">="; - case jpiAdd: case jpiPlus: + case jpiAdd: return "+"; - case jpiSub: case jpiMinus: + case jpiSub: 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 jpiCeiling: - return "ceiling"; case jpiFloor: return "floor"; + case jpiCeiling: + return "ceiling"; 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 jpiCeiling: case jpiFloor: + case jpiCeiling: + case jpiDouble: 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,6 +989,13 @@ 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 || @@ -999,19 +1006,12 @@ 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 == jpiCeiling || v->type == jpiFloor || + v->type == jpiCeiling || + v->type == jpiDouble || v->type == jpiDatetime || v->type == jpiKeyValue || v->type == jpiStartsWith || |