Changeset: 6a38d99f6151 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6a38d99f6151
Modified Files:
        monetdb5/modules/atoms/json.c
        monetdb5/modules/atoms/pg_jsonpath/jsonpath.h
        monetdb5/modules/atoms/pg_jsonpath/jsonpath_exec.c
        monetdb5/modules/atoms/pg_jsonpath/jsonpath_gram.y
        monetdb5/modules/atoms/pg_jsonpath/postgres_defines.h
        monetdb5/modules/atoms/pg_jsonpath/postgres_defines_internal.h
Branch: json-extend
Log Message:

get rid of the postgres Datum type


diffs (212 lines):

diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c
--- a/monetdb5/modules/atoms/json.c
+++ b/monetdb5/modules/atoms/json.c
@@ -1693,7 +1693,7 @@ JSONfilter(json *ret, const json *js, co
        bool error;
        List* vars = NULL;
        const char *column_name = NULL;
-       yyjson_val *res = JsonPathQuery((Datum) root, path, JSW_UNCONDITIONAL, 
&empty, &error, vars, column_name, alc, errmsg);
+       yyjson_val *res = JsonPathQuery(root, path, JSW_UNCONDITIONAL, &empty, 
&error, vars, column_name, alc, errmsg);
        if (!res && errmsg[0]) {
                sa_destroy(sa);
                return createException(MAL, SQLSTATE(HY013), "JsonPathQuery 
iternal error: %s", errmsg);
diff --git a/monetdb5/modules/atoms/pg_jsonpath/jsonpath.h 
b/monetdb5/modules/atoms/pg_jsonpath/jsonpath.h
--- a/monetdb5/modules/atoms/pg_jsonpath/jsonpath.h
+++ b/monetdb5/modules/atoms/pg_jsonpath/jsonpath.h
@@ -191,17 +191,17 @@ typedef struct JsonPathVariable
        int                     namelen;                /* strlen(name) as 
cache for GetJsonPathVar() */
        Oid                     typid;
        int32           typmod;
-       Datum           value;
+       void*           value;
        bool            isnull;
 } JsonPathVariable;
 
 
 /* SQL/JSON query functions */
-extern bool JsonPathExists(Datum jb, JsonPath *jp, bool *error, List *vars, 
yyjson_alc* alc, char* errmsg);
-extern JsonbValue *JsonPathQuery(Datum jb, JsonPath *jp, JsonWrapper wrapper,
+extern bool JsonPathExists(JsonbValue* jb, JsonPath *jp, bool *error, List 
*vars, yyjson_alc* alc, char* errmsg);
+extern JsonbValue *JsonPathQuery(JsonbValue* jb, JsonPath *jp, JsonWrapper 
wrapper,
                                                   bool *empty, bool *error, 
List *vars,
                                                   const char *column_name, 
yyjson_alc* alc, char* errmsg);
-extern JsonbValue *JsonPathValue(Datum jb, JsonPath *jp, bool *empty,
+extern JsonbValue *JsonPathValue(JsonbValue* jb, JsonPath *jp, bool *empty,
                                                                 bool *error, 
List *vars,
                                                                 const char 
*column_name, yyjson_alc* alc, char* errmsg);
 
diff --git a/monetdb5/modules/atoms/pg_jsonpath/jsonpath_exec.c 
b/monetdb5/modules/atoms/pg_jsonpath/jsonpath_exec.c
--- a/monetdb5/modules/atoms/pg_jsonpath/jsonpath_exec.c
+++ b/monetdb5/modules/atoms/pg_jsonpath/jsonpath_exec.c
@@ -148,16 +148,7 @@ typedef struct JsonValueListIterator
 
 /* Structures for JSON_TABLE execution  */
 
-/*
- * Struct holding the result of jsonpath evaluation, to be used as source row
- * for JsonTableGetValue() which in turn computes the values of individual
- * JSON_TABLE columns.
- */
-typedef struct JsonTablePlanRowSource
-{
-       Datum           value;
-       bool            isnull;
-} JsonTablePlanRowSource;
+
 
 /* strict/lax flags is decomposed into four [un]wrap/error flags */
 #define jspStrictAbsenceOfErrors(cxt)  (!(cxt)->laxMode)
@@ -234,7 +225,7 @@ static JsonbValue *GetJsonPathVar(void *
                                                                  JsonbValue 
**baseObject, int *baseObjectId);
 static int     CountJsonPathVars(void *cxt);
 static yyjson_mut_val*
-JsonItemFromDatum(Datum val, Oid typid, int32 typmod, yyjson_mut_doc* 
mutable_doc);
+JsonItemFromDatum(void* val, Oid typid, int32 typmod, yyjson_mut_doc* 
mutable_doc);
 static int     JsonbArraySize(JsonbValue *jb);
 static JsonPathBool executeComparison(JsonPathItem *cmp, JsonbValue *lv,
                                                                          
JsonbValue *rv, void *p);
@@ -2030,7 +2021,7 @@ CountJsonPathVars(void *cxt)
  * datum value of the specified type.
  */
 static yyjson_mut_val*
-JsonItemFromDatum(Datum val, Oid typid, int32 typmod, yyjson_mut_doc* 
mutable_doc)
+JsonItemFromDatum(void* val, Oid typid, int32 typmod, yyjson_mut_doc* 
mutable_doc)
 {
        (void) val; (void) typid; (void) typmod; (void) mutable_doc;
        assert(0);
@@ -2209,7 +2200,7 @@ getArrayIndex(JsonPathExecContext *cxt, 
        JsonbValue *jbv;
        JsonValueList found = {0};
        JsonPathExecResult res = executeItem(cxt, jsp, jb, &found);
-       Datum           numeric_index;
+       lng             numeric_index;
        bool            have_error = false;
 
        if (jperIsError(res))
@@ -2221,7 +2212,7 @@ getArrayIndex(JsonPathExecContext *cxt, 
                                                         
(errcode(ERRCODE_INVALID_SQL_JSON_SUBSCRIPT),
                                                          errmsg("jsonpath 
array subscript is not a single numeric value"))));
 
-       numeric_index = (Datum) yyjson_get_int(jbv);
+       numeric_index = yyjson_get_int(jbv);
        *index = (int) numeric_index;
 
        if (have_error)
@@ -2385,7 +2376,7 @@ wrapItemsInArray(yyjson_alc* alc, const 
  * *error to true.
  */
 bool
-JsonPathExists(Datum jb, JsonPath *jp, bool *error, List *vars, yyjson_alc* 
alc, char* errmsg)
+JsonPathExists(JsonbValue*     jb, JsonPath *jp, bool *error, List *vars, 
yyjson_alc* alc, char* errmsg)
 {
        JsonPathExecResult res;
 
@@ -2397,7 +2388,7 @@ JsonPathExists(Datum jb, JsonPath *jp, b
 
        res = executeJsonPath(jp, vars,
                                                  GetJsonPathVar, 
CountJsonPathVars,
-                                                 DatumGetJsonbP(jb), !error, 
NULL, true, cxt);
+                                                 jb, !error, NULL, true, cxt);
        if (!jperIsError(res) || errmsg[0])
                return false; // throw exception
 
@@ -2416,7 +2407,7 @@ JsonPathExists(Datum jb, JsonPath *jp, b
  * *error to true.  *empty is set to true if no match is found.
  */
 JsonbValue *
-JsonPathQuery(Datum jb, JsonPath *jp, JsonWrapper wrapper, bool *empty,
+JsonPathQuery(JsonbValue* jb, JsonPath *jp, JsonWrapper wrapper, bool *empty,
                          bool *error, List *vars,
                          const char *column_name, yyjson_alc* alc, char* 
errmsg)
 {
@@ -2434,7 +2425,7 @@ JsonPathQuery(Datum jb, JsonPath *jp, Js
 
        res = executeJsonPath(jp, vars,
                                                  GetJsonPathVar, 
CountJsonPathVars,
-                                                 DatumGetJsonbP(jb), !error, 
&found, true, cxt);
+                                                 jb, !error, &found, true, 
cxt);
        Assert(error || !jperIsError(res));
        if (error && jperIsError(res))
        {
@@ -2515,7 +2506,7 @@ JsonPathQuery(Datum jb, JsonPath *jp, Js
  * *error to true.  *empty is set to true if no match is found.
  */
 JsonbValue *
-JsonPathValue(Datum jb, JsonPath *jp, bool *empty, bool *error, List *vars,
+JsonPathValue(JsonbValue * jb, JsonPath *jp, bool *empty, bool *error, List 
*vars,
                          const char *column_name, yyjson_alc* alc, char* 
errmsg)
 {
        JsonbValue *res;
@@ -2530,7 +2521,7 @@ JsonPathValue(Datum jb, JsonPath *jp, bo
        JsonPathExecContext* cxt = &_cxt;
 
        jper = executeJsonPath(jp, vars, GetJsonPathVar, CountJsonPathVars,
-                                                  DatumGetJsonbP(jb),
+                                                  jb,
                                                   !error, &found, true, &_cxt);
 
        Assert(error || !jperIsError(jper));
diff --git a/monetdb5/modules/atoms/pg_jsonpath/jsonpath_gram.y 
b/monetdb5/modules/atoms/pg_jsonpath/jsonpath_gram.y
--- a/monetdb5/modules/atoms/pg_jsonpath/jsonpath_gram.y
+++ b/monetdb5/modules/atoms/pg_jsonpath/jsonpath_gram.y
@@ -492,9 +492,7 @@ makeItemUnary(JsonPathItemType type, Jso
        if (type == jpiMinus && a->type == jpiNumeric && !a->next)
        {
                v = makeItemType(jpiNumeric);
-               v->value.numeric =
-                       DatumGetNumeric(DirectFunctionCall1(numeric_uminus,
-                                                                               
                NumericGetDatum(a->value.numeric)));
+               v->value.numeric = numeric_uminus(a->value.numeric);
                return v;
        }
 
diff --git a/monetdb5/modules/atoms/pg_jsonpath/postgres_defines.h 
b/monetdb5/modules/atoms/pg_jsonpath/postgres_defines.h
--- a/monetdb5/modules/atoms/pg_jsonpath/postgres_defines.h
+++ b/monetdb5/modules/atoms/pg_jsonpath/postgres_defines.h
@@ -14,8 +14,6 @@
 typedef uint32_t uint32;
 typedef int int32;
 typedef sht int16;
-typedef uint16_t uint16;
-typedef lng int64;
 
 
 // jsonb.h
@@ -39,9 +37,6 @@ enum jbvType
        jbvDatetime = 0x20,
 };
 
-// postgres.h
-typedef uintptr_t Datum; // TODO: remove this type
-
 // postgres_ext.h
 typedef unsigned int Oid; // TODO: remove this type
 
@@ -65,8 +60,6 @@ typedef enum JsonWrapper
        JSW_UNCONDITIONAL,
 } JsonWrapper;
 
-#define DatumGetJsonbP(jb) ((JsonbValue*) jb)
-
 typedef yyjson_val Jsonb;
 
 typedef struct list List;
diff --git a/monetdb5/modules/atoms/pg_jsonpath/postgres_defines_internal.h 
b/monetdb5/modules/atoms/pg_jsonpath/postgres_defines_internal.h
--- a/monetdb5/modules/atoms/pg_jsonpath/postgres_defines_internal.h
+++ b/monetdb5/modules/atoms/pg_jsonpath/postgres_defines_internal.h
@@ -49,15 +49,6 @@ pg_strtoint32(const char *s)
 #define check_stack_depth(result) if (THRhighwater()) {snprintf(cxt->_errmsg, 
1024, "stack overflow"); return (res = result);}
 #define CHECK_FOR_INTERRUPTS() /* TODO */
 
-#define DatumGetNumeric(X) (X)
-#define numeric_in atoi
-#define DirectFunctionCall3(func, A, B, C)     func(A)
-#define CStringGetDatum(X)     (X)
-#define ObjectIdGetDatum(X)    (X)
-#define Int32GetDatum(X)       (X)
-#define DirectFunctionCall1(func, A)   (func A)
-#define NumericGetDatum(X) (X)
-
 
 #define for_each_from(cell, list, N) \
 cell = list->h; \
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to