@@ -124,6 +124,15 @@ flattenJsonPathParseItem(StringInfo buf, JsonPathParseItem *item,
124
124
* (int32 * )(buf -> data + offs ) = chld ;
125
125
}
126
126
break ;
127
+ case jpiDatetime :
128
+ if (!item -> value .arg )
129
+ {
130
+ int32 arg = 0 ;
131
+
132
+ appendBinaryStringInfo (buf , (char * ) & arg , sizeof (arg ));
133
+ break ;
134
+ }
135
+ /* fall through */
127
136
case jpiFilter :
128
137
case jpiIsUnknown :
129
138
case jpiNot :
@@ -215,7 +224,6 @@ flattenJsonPathParseItem(StringInfo buf, JsonPathParseItem *item,
215
224
case jpiFloor :
216
225
case jpiCeiling :
217
226
case jpiDouble :
218
- case jpiDatetime :
219
227
case jpiKeyValue :
220
228
break ;
221
229
default :
@@ -540,7 +548,13 @@ printJsonPathItem(StringInfo buf, JsonPathItem *v, bool inKey, bool printBracket
540
548
appendBinaryStringInfo (buf , ".double()" , 9 );
541
549
break ;
542
550
case jpiDatetime :
543
- appendBinaryStringInfo (buf , ".datetime()" , 11 );
551
+ appendBinaryStringInfo (buf , ".datetime(" , 10 );
552
+ if (v -> content .arg )
553
+ {
554
+ jspGetArg (v , & elem );
555
+ printJsonPathItem (buf , & elem , false, false);
556
+ }
557
+ appendStringInfoChar (buf , ')' );
544
558
break ;
545
559
case jpiKeyValue :
546
560
appendBinaryStringInfo (buf , ".keyvalue()" , 11 );
@@ -636,7 +650,6 @@ jspInitByBuffer(JsonPathItem *v, char *base, int32 pos)
636
650
case jpiFloor :
637
651
case jpiCeiling :
638
652
case jpiDouble :
639
- case jpiDatetime :
640
653
case jpiKeyValue :
641
654
case jpiLast :
642
655
break ;
@@ -678,6 +691,7 @@ jspInitByBuffer(JsonPathItem *v, char *base, int32 pos)
678
691
case jpiPlus :
679
692
case jpiMinus :
680
693
case jpiFilter :
694
+ case jpiDatetime :
681
695
read_int32 (v -> content .arg , base , pos );
682
696
break ;
683
697
case jpiIndexArray :
@@ -703,7 +717,8 @@ jspGetArg(JsonPathItem *v, JsonPathItem *a)
703
717
v -> type == jpiIsUnknown ||
704
718
v -> type == jpiExists ||
705
719
v -> type == jpiPlus ||
706
- v -> type == jpiMinus
720
+ v -> type == jpiMinus ||
721
+ v -> type == jpiDatetime
707
722
);
708
723
709
724
jspInitByBuffer (a , v -> base , v -> content .arg );
0 commit comments