String query = String.format(
"CREATE PROPERTY GRAPH %s " +
" VERTEX TABLES(n1 LABEL hoge PROPERTIES(id, name, rate), n2 LABEL hoge2 PROPERTIES(id, name, rate)) " +
" EDGE TABLES(e1 SOURCE KEY(n1_id) REFERENCES n1 DESTINATION KEY (n2_id) REFERENCES n2 LABEL el NO PROPERTIES)",
graphName);
PgqlPreparedStatement pst = pgqlConn.prepareStatement(query);
PgqlSqlCreateTransImpl createTrans = (PgqlSqlCreateTransImpl) pst.translateStatement();
Object[] createTranslations = createTrans.getCreateTranslation();
Stream.of(createTranslations).filter(s -> s != null).forEach(s -> {
switch(s.getClass().getName()){
case "java.lang.String":
System.out.println(s);
break;
case "[Ljava.lang.String;":
Stream.of(((String[]) s)).filter(t -> t != null).forEach(System.out::println);
break;
default:
System.out.println(s);
}
});
{ call opg_apis.create_pg(graph_owner => :1, graph_name => :2, tbs_set => null, options => 'SKIP_INDEX=T') }
INSERT INTO "TEST_USER".TEST_20_4_GRAPHVT$
(VID, VL, K, T, V, VN, VT)
SELECT VID, VL, K, T, V, VN, VT
FROM (
SELECT
VID, VL, K, T, V, VN, VT
FROM(
WITH T0 AS (
SELECT
round(sys_op_combined_hash(n'"N1"' || '|' || TABLE_KEY)/2) AS VID
, VL, "ID", "NAME", "RATE"
FROM (
SELECT
"ID" AS TABLE_KEY
, n'HOGE' AS VL, "ID", "NAME", "RATE"
FROM "TEST_USER"."N1"
)
)
SELECT VID, VL, K, T, to_nchar(VN, 'TM9', 'NLS_Numeric_Characters=''.,''') AS V, VN, VT
FROM (
SELECT
VID, VL, K,
to_number(4) AS T,
to_nchar(null) as V, to_number(property_value) as VN, to_timestamp_tz(null) VT
FROM T0
UNPIVOT (
property_value FOR K IN (
"ID" AS n'ID'
)
)
)
UNION ALL
SELECT VID, VL, K, T, V, VN, VT
FROM (
SELECT
VID, VL, K,
to_number(1) AS T,
to_nchar(property_value) as V, to_number(null) as VN, to_timestamp_tz(null) VT
FROM T0
UNPIVOT (
property_value FOR K IN (
"NAME" AS n'NAME'
)
)
)
UNION ALL
SELECT VID, VL, K, T, to_nchar(VN, 'TM9', 'NLS_Numeric_Characters=''.,''') AS V, VN, VT
FROM (
SELECT
VID, VL, K,
to_number(4) AS T,
to_nchar(null) as V, to_number(property_value) as VN, to_timestamp_tz(null) VT
FROM T0
UNPIVOT (
property_value FOR K IN (
"RATE" AS n'RATE'
)
)
)
)
)
INSERT INTO "TEST_USER".TEST_20_4_GRAPHVT$
(VID, VL, K, T, V, VN, VT)
SELECT VID, VL, K, T, V, VN, VT
FROM (
SELECT
VID, VL, K, T, V, VN, VT
FROM(
WITH T0 AS (
SELECT
round(sys_op_combined_hash(n'"N2"' || '|' || TABLE_KEY)/2) AS VID
, VL, "ID", "NAME", "RATE"
FROM (
SELECT
"ID" AS TABLE_KEY
, n'HOGE2' AS VL, "ID", "NAME", "RATE"
FROM "TEST_USER"."N2"
)
)
SELECT VID, VL, K, T, to_nchar(VN, 'TM9', 'NLS_Numeric_Characters=''.,''') AS V, VN, VT
FROM (
SELECT
VID, VL, K,
to_number(4) AS T,
to_nchar(null) as V, to_number(property_value) as VN, to_timestamp_tz(null) VT
FROM T0
UNPIVOT (
property_value FOR K IN (
"ID" AS n'ID'
)
)
)
UNION ALL
SELECT VID, VL, K, T, V, VN, VT
FROM (
SELECT
VID, VL, K,
to_number(1) AS T,
to_nchar(property_value) as V, to_number(null) as VN, to_timestamp_tz(null) VT
FROM T0
UNPIVOT (
property_value FOR K IN (
"NAME" AS n'NAME'
)
)
)
UNION ALL
SELECT VID, VL, K, T, to_nchar(VN, 'TM9', 'NLS_Numeric_Characters=''.,''') AS V, VN, VT
FROM (
SELECT
VID, VL, K,
to_number(4) AS T,
to_nchar(null) as V, to_number(property_value) as VN, to_timestamp_tz(null) VT
FROM T0
UNPIVOT (
property_value FOR K IN (
"RATE" AS n'RATE'
)
)
)
)
)
INSERT INTO "TEST_USER".TEST_20_4_GRAPHGE$
(EID, SVID, DVID, EL, K, T, V, VN, VT)
SELECT EID, SVID, DVID, EL, K, T, V, VN, VT
FROM (
SELECT
EID, SVID, DVID, EL, K, T, V, VN, VT
FROM(
WITH T0 AS (
SELECT
round(sys_op_combined_hash(n'"E1"' || '|' || TABLE_KEY)/2) AS EID, SVID, DVID
, EL
FROM (
SELECT
"ID" AS TABLE_KEY,
round(sys_op_combined_hash(n'"N1"' || '|' || "N1_ID")/2) AS SVID,
round(sys_op_combined_hash(n'"N2"' || '|' || "N2_ID")/2) AS DVID
, n'EL' AS EL
FROM "TEST_USER"."E1"
WHERE "N1_ID" IS NOT NULL AND "N2_ID" IS NOT NULL
)
)
SELECT
EID, SVID, DVID
, EL,
to_nchar(null) AS K,
to_number(null) AS T,
to_nchar(null) AS V,
to_number(null) AS VN,
to_timestamp_tz(null) AS VT
FROM T0
)
)
INSERT INTO "TEST_USER".TEST_20_4_GRAPHVD$
SELECT VID, VL, CNT
FROM (SELECT VID, VL, COUNT(*) AS CNT
FROM "TEST_USER".TEST_20_4_GRAPHVT$
GROUP BY VID, VL)
INSERT INTO "TEST_USER".TEST_20_4_GRAPHGT$
SELECT EID, EL, SVID, DVID, sys_op_numtoraw(sys_op_combined_hash(EL)) AS ELH, lengthb(EL) AS ELS, CNT
FROM (SELECT EID, EL, SVID, DVID, COUNT(*) AS CNT
FROM "TEST_USER".TEST_20_4_GRAPHGE$
GROUP BY EID, SVID, DVID, EL)
{ call opg_apis.create_pg(graph_owner => :1, graph_name => :2, dop => :3, tbs_set => null, options => 'SKIP_TABLE=T') }
{ call opg_apis.analyze_pg(graph_name => :1, degree => :2, cascade => DBMS_STATS.AUTO_CASCADE, no_invalidate => DBMS_STATS.AUTO_INVALIDATE, force => false, options => null, graph_owner => :3) }