[CP] sync bugfix.fix sanity json pl type coredump, fix treat expr in pl coredump

This commit is contained in:
obdev
2024-02-09 15:38:24 +00:00
committed by ob-robot
parent 772d84b21e
commit f14101149a
14 changed files with 160 additions and 73 deletions

View File

@ -1,19 +1,21 @@
CREATE OR REPLACE TYPE JSON_ARRAY_T OID '300025' AS OPAQUE
CREATE OR REPLACE TYPE JSON_ARRAY_T FORCE OID '300025' AS OPAQUE
(
STATIC FUNCTION parse(jsn VARCHAR2) return JSON_ARRAY_T,
STATIC FUNCTION parse(jsn CLOB) return JSON_ARRAY_T,
STATIC FUNCTION parse(jsn BLOB) return JSON_ARRAY_T,
CONSTRUCTOR FUNCTION JSON_ARRAY_T RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_ARRAY_T(o JSON_ELEMENT_T) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_ARRAY_T(o JSON_ARRAY_T) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn VARCHAR2) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn CLOB) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn BLOB) RETURN SELF AS RESULT,
MEMBER PROCEDURE on_Error(val NUMBER),
MEMBER FUNCTION get(pos NUMBER) return JSON_ELEMENT_T,
MEMBER PROCEDURE on_Error(SELF IN OUT NOCOPY JSON_ARRAY_T, val NUMBER),
MEMBER FUNCTION get(SELF IN OUT NOCOPY JSON_ARRAY_T, pos NUMBER) return JSON_ELEMENT_T,
MEMBER FUNCTION get_Type(pos NUMBER) return VARCHAR2,
MEMBER FUNCTION get_Size RETURN NUMBER,
MEMBER FUNCTION to_String RETURN VARCHAR2,
MEMBER FUNCTION clone RETURN JSON_ARRAY_T
MEMBER FUNCTION clone(SELF IN OUT NOCOPY JSON_ARRAY_T) RETURN JSON_ARRAY_T
);
//

View File

@ -0,0 +1,46 @@
CREATE OR REPLACE TYPE BODY JSON_ARRAY_T AS
STATIC function parse(jsn VARCHAR2) return JSON_ARRAY_T;
PRAGMA INTERFACE(c, JSON_ARRAY_PARSE);
STATIC FUNCTION parse(jsn CLOB) return JSON_ARRAY_T;
PRAGMA INTERFACE(c, JSON_ARRAY_PARSE);
STATIC FUNCTION parse(jsn BLOB) return JSON_ARRAY_T;
PRAGMA INTERFACE(c, JSON_ARRAY_PARSE);
CONSTRUCTOR FUNCTION JSON_ARRAY_T RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_ARRAY_CONSTRUCTOR);
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn VARCHAR2) RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_ARRAY_CONSTRUCTOR);
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn CLOB) RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_ARRAY_CONSTRUCTOR);
CONSTRUCTOR FUNCTION JSON_ARRAY_T(jsn BLOB) RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_ARRAY_CONSTRUCTOR);
CONSTRUCTOR FUNCTION JSON_ARRAY_T(o JSON_ELEMENT_T) RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_ARRAY_CONSTRUCTOR);
CONSTRUCTOR FUNCTION JSON_ARRAY_T(o JSON_ARRAY_T) RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_ARRAY_CONSTRUCTOR);
MEMBER FUNCTION get(SELF IN OUT NOCOPY JSON_ARRAY_T, pos IN NUMBER) return JSON_ELEMENT_T;
PRAGMA INTERFACE(c, JSON_ARRAY_GET);
MEMBER PROCEDURE on_Error(SELF IN OUT NOCOPY JSON_ARRAY_T, val IN NUMBER);
PRAGMA INTERFACE(c, JSON_ARRAY_ON_ERROR);
MEMBER FUNCTION get_Type(pos IN NUMBER) return VARCHAR2;
PRAGMA INTERFACE(c, JSON_ARRAY_GET_TYPE);
MEMBER FUNCTION to_String RETURN VARCHAR2;
PRAGMA INTERFACE(c, JSON_TO_STRING);
MEMBER FUNCTION get_Size RETURN NUMBER;
PRAGMA INTERFACE(c, JSON_GET_SIZE);
MEMBER FUNCTION clone(SELF IN OUT NOCOPY JSON_ARRAY_T) RETURN JSON_ARRAY_T;
PRAGMA INTERFACE(c, JSON_ARRAY_CLONE);
END;
//

View File

@ -5,8 +5,8 @@ CREATE OR REPLACE TYPE JSON_OBJECT_T OID '300024' AS OPAQUE
STATIC FUNCTION parse(jsn BLOB) return JSON_OBJECT_T,
CONSTRUCTOR FUNCTION JSON_OBJECT_T RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_OBJECT_T(o JSON_ELEMENT_T) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_OBJECT_T(o JSON_OBJECT_T) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_OBJECT_T(jsn JSON_ELEMENT_T) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_OBJECT_T(jsn JSON_OBJECT_T) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_OBJECT_T(jsn VARCHAR2) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_OBJECT_T(jsn CLOB) RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION JSON_OBJECT_T(jsn BLOB) RETURN SELF AS RESULT,
@ -35,36 +35,37 @@ CREATE OR REPLACE TYPE JSON_OBJECT_T OID '300024' AS OPAQUE
MEMBER PROCEDURE to_Clob(c IN OUT CLOB),
MEMBER PROCEDURE to_Blob(c IN OUT BLOB),
MEMBER FUNCTION get_String(key VARCHAR2) return VARCHAR2,
MEMBER FUNCTION get_Number(key VARCHAR2) return NUMBER,
MEMBER FUNCTION get_Date(key VARCHAR2) return DATE,
MEMBER FUNCTION get_Timestamp(key VARCHAR2) return TIMESTAMP,
MEMBER FUNCTION get_Boolean(key VARCHAR2) return BOOLEAN,
MEMBER FUNCTION get_Clob(key VARCHAR2) return CLOB,
MEMBER FUNCTION get_Blob(key VARCHAR2) return BLOB,
MEMBER FUNCTION get_Object(key VARCHAR2) return JSON_OBJECT_T,
MEMBER FUNCTION get(key VARCHAR2) return JSON_ELEMENT_T,
MEMBER FUNCTION get_String(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return VARCHAR2,
MEMBER FUNCTION get_Number(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return NUMBER,
MEMBER FUNCTION get_Date(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return DATE,
MEMBER FUNCTION get_Timestamp(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return TIMESTAMP,
MEMBER FUNCTION get_Boolean(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return BOOLEAN,
MEMBER FUNCTION get_Clob(self IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return CLOB,
MEMBER FUNCTION get_Blob(self IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return BLOB,
MEMBER FUNCTION get_Object(self IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return JSON_OBJECT_T,
MEMBER FUNCTION get(self IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return JSON_ELEMENT_T,
MEMBER PROCEDURE get_Clob(key VARCHAR2, c IN OUT CLOB),
MEMBER PROCEDURE get_Blob(key VARCHAR2, c IN OUT BLOB),
MEMBER PROCEDURE put(key VARCHAR2, value BOOLEAN),
MEMBER PROCEDURE put(key VARCHAR2, value JSON_OBJECT_T),
MEMBER PROCEDURE put(key VARCHAR2, value JSON_ELEMENT_T),
MEMBER PROCEDURE put(key VARCHAR2, value VARCHAR2),
MEMBER PROCEDURE put(key VARCHAR2, value NUMBER),
MEMBER PROCEDURE put(key VARCHAR2, value DATE),
MEMBER PROCEDURE put(key VARCHAR2, value TIMESTAMP),
MEMBER PROCEDURE put(key VARCHAR2, value BLOB),
MEMBER PROCEDURE put(key VARCHAR2, value CLOB),
MEMBER PROCEDURE put(key VARCHAR2, value JSON),
MEMBER PROCEDURE put_Null(key VARCHAR2),
MEMBER PROCEDURE remove(key VARCHAR2),
MEMBER PROCEDURE rename_Key(keyOld VARCHAR2, keyNew VARCHAR2),
MEMBER PROCEDURE on_Error(val NUMBER),
MEMBER PROCEDURE get_Clob(self IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, c IN OUT CLOB),
MEMBER PROCEDURE get_Blob(self IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, c IN OUT BLOB),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value BOOLEAN),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value JSON_OBJECT_T),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value JSON_ELEMENT_T),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value VARCHAR2),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value NUMBER),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value DATE),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value TIMESTAMP),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value BLOB),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value CLOB),
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value JSON),
MEMBER PROCEDURE put_Null(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2),
MEMBER PROCEDURE remove(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2),
MEMBER PROCEDURE rename_Key(SELF IN OUT NOCOPY JSON_OBJECT_T, keyOld VARCHAR2, keyNew VARCHAR2),
MEMBER PROCEDURE on_Error(SELF IN OUT NOCOPY JSON_OBJECT_T, val NUMBER),
MEMBER FUNCTION has(key VARCHAR2) return BOOLEAN,
MEMBER FUNCTION get_Type(key VARCHAR2) return VARCHAR2,
MEMBER FUNCTION clone RETURN JSON_OBJECT_T
MEMBER FUNCTION clone(self IN OUT NOCOPY JSON_OBJECT_T) RETURN JSON_OBJECT_T
);
//

View File

@ -20,10 +20,10 @@ CREATE OR REPLACE TYPE BODY JSON_OBJECT_T AS
CONSTRUCTOR FUNCTION JSON_OBJECT_T(jsn BLOB) RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_OBJECT_CONSTRUCTOR);
CONSTRUCTOR FUNCTION JSON_OBJECT_T(o JSON_ELEMENT_T) RETURN SELF AS RESULT;
CONSTRUCTOR FUNCTION JSON_OBJECT_T(jsn JSON_ELEMENT_T) RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_OBJECT_CONSTRUCTOR);
CONSTRUCTOR FUNCTION JSON_OBJECT_T(o JSON_OBJECT_T) RETURN SELF AS RESULT;
CONSTRUCTOR FUNCTION JSON_OBJECT_T(jsn JSON_OBJECT_T) RETURN SELF AS RESULT;
PRAGMA INTERFACE(c, JSON_OBJECT_CONSTRUCTOR);
MEMBER FUNCTION is_Object RETURN BOOLEAN;
@ -89,79 +89,79 @@ CREATE OR REPLACE TYPE BODY JSON_OBJECT_T AS
MEMBER FUNCTION get_Size RETURN NUMBER;
PRAGMA INTERFACE(c, JSON_GET_SIZE);
MEMBER FUNCTION get_String(key VARCHAR2) return VARCHAR2;
MEMBER FUNCTION get_String(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return VARCHAR2;
PRAGMA INTERFACE(c, JSON_OBJECT_GETSTR);
MEMBER FUNCTION get_Number(key VARCHAR2) return NUMBER;
MEMBER FUNCTION get_Number(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return NUMBER;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_NUMBER);
MEMBER FUNCTION get_Date(key VARCHAR2) return DATE;
MEMBER FUNCTION get_Date(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return DATE;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_DATE);
MEMBER FUNCTION get_Timestamp(key VARCHAR2) return TIMESTAMP;
MEMBER FUNCTION get_Timestamp(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return TIMESTAMP;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_TIMESTAMP);
MEMBER FUNCTION get_Boolean(key VARCHAR2) return BOOLEAN;
MEMBER FUNCTION get_Boolean(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return BOOLEAN;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_BOOLEAN);
MEMBER FUNCTION get_Clob(key VARCHAR2) return CLOB;
MEMBER FUNCTION get_Clob(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return CLOB;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_CLOB);
MEMBER FUNCTION get_Blob(key VARCHAR2) return BLOB;
MEMBER FUNCTION get_Blob(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return BLOB;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_BLOB);
MEMBER FUNCTION get_Object(key VARCHAR2) return JSON_OBJECT_T;
MEMBER FUNCTION get_Object(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return JSON_OBJECT_T;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_OBJECT);
MEMBER FUNCTION get(key VARCHAR2) return JSON_ELEMENT_T;
MEMBER FUNCTION get(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2) return JSON_ELEMENT_T;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_ELEMENT);
MEMBER PROCEDURE get_Clob(key VARCHAR2, c IN OUT CLOB);
MEMBER PROCEDURE get_Clob(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, c IN OUT CLOB);
PRAGMA INTERFACE(c, JSON_OBJECT_GET_CLOB_PROC);
MEMBER PROCEDURE get_Blob(key VARCHAR2, c IN OUT BLOB);
MEMBER PROCEDURE get_Blob(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, c IN OUT BLOB);
PRAGMA INTERFACE(c, JSON_OBJECT_GET_BLOB_PROC);
MEMBER PROCEDURE put(key VARCHAR2, value BOOLEAN);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value BOOLEAN);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT_BOOL);
MEMBER PROCEDURE put(key VARCHAR2, value JSON_OBJECT_T);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value JSON_OBJECT_T);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT);
MEMBER PROCEDURE put(key VARCHAR2, value JSON_ELEMENT_T);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value JSON_ELEMENT_T);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT);
MEMBER PROCEDURE put(key VARCHAR2, value VARCHAR2);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value VARCHAR2);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT_VARCHAR);
MEMBER PROCEDURE put(key VARCHAR2, value NUMBER);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value NUMBER);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT);
MEMBER PROCEDURE put(key VARCHAR2, value DATE);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value DATE);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT);
MEMBER PROCEDURE put(key VARCHAR2, value TIMESTAMP);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value TIMESTAMP);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT);
MEMBER PROCEDURE put(key VARCHAR2, value BLOB);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value BLOB);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT_BLOB);
MEMBER PROCEDURE put(key VARCHAR2, value CLOB);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value CLOB);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT_CLOB);
MEMBER PROCEDURE put(key VARCHAR2, value JSON);
MEMBER PROCEDURE put(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2, value JSON);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT_JSON);
MEMBER PROCEDURE put_Null(key VARCHAR2);
MEMBER PROCEDURE put_Null(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2);
PRAGMA INTERFACE(c, JSON_OBJECT_PUT_NULL);
MEMBER PROCEDURE remove(key VARCHAR2);
MEMBER PROCEDURE remove(SELF IN OUT NOCOPY JSON_OBJECT_T, key VARCHAR2);
PRAGMA INTERFACE(c, JSON_OBJECT_REMOVE);
MEMBER PROCEDURE rename_Key(keyOld VARCHAR2, keyNew VARCHAR2);
MEMBER PROCEDURE rename_Key(SELF IN OUT NOCOPY JSON_OBJECT_T, keyOld VARCHAR2, keyNew VARCHAR2);
PRAGMA INTERFACE(c, JSON_OBJECT_RENAME_KEY);
MEMBER PROCEDURE on_Error(val NUMBER);
MEMBER PROCEDURE on_Error(SELF IN OUT NOCOPY JSON_OBJECT_T, val NUMBER);
PRAGMA INTERFACE(c, JSON_OBJECT_ON_ERROR);
MEMBER FUNCTION has(key VARCHAR2) return BOOLEAN;
@ -170,7 +170,7 @@ CREATE OR REPLACE TYPE BODY JSON_OBJECT_T AS
MEMBER FUNCTION get_Type(key VARCHAR2) return VARCHAR2;
PRAGMA INTERFACE(c, JSON_OBJECT_GET_TYPE);
MEMBER FUNCTION clone RETURN JSON_OBJECT_T;
MEMBER FUNCTION clone(self IN OUT NOCOPY JSON_OBJECT_T) RETURN JSON_OBJECT_T;
PRAGMA INTERFACE(c, JSON_OBJECT_CLONE);
END;
//