1: PACKAGE BODY SDO_ROUTER_PARTITION AS
2:
3: -- Partitioning log file
4: part_log_file utl_file.file_type := NULL;
5: schema_name VARCHAR2(64) := NULL;
152: directory_path, 'read,write');
153:
154: END create_sdo_router_log_dir;
155:
156: PROCEDURE validate_sdo_router_log_dir(log_file_name IN VARCHAR2 := 'sdo_router_partition.log')
157: IS
158: full_file_name VARCHAR2(256);
159: schema_name VARCHAR2(32):= sys_context('userenv', 'CURRENT_SCHEMA');
160: BEGIN
365: EXECUTE IMMEDIATE stmt into part_m USING no;
366:
367: INSERT /*+ APPEND */ INTO partition_tmp_3 (vertex_id,p_id,x,y,m)
368: SELECT vertex_id,
369: mdsys.SDO_ROUTER_PARTITION.get_pid(
370: mdsys.SDO_ROUTER_PARTITION.adjust_m(part_m,0,m),part_counter),
371: x,y,mdsys.SDO_ROUTER_PARTITION.adjust_m(part_m,0,m)
372: FROM partition_tmp_2;
373: ELSE
366:
367: INSERT /*+ APPEND */ INTO partition_tmp_3 (vertex_id,p_id,x,y,m)
368: SELECT vertex_id,
369: mdsys.SDO_ROUTER_PARTITION.get_pid(
370: mdsys.SDO_ROUTER_PARTITION.adjust_m(part_m,0,m),part_counter),
371: x,y,mdsys.SDO_ROUTER_PARTITION.adjust_m(part_m,0,m)
372: FROM partition_tmp_2;
373: ELSE
374: -- move n vertices from set (m >= 0) to set ( m < 0) by
367: INSERT /*+ APPEND */ INTO partition_tmp_3 (vertex_id,p_id,x,y,m)
368: SELECT vertex_id,
369: mdsys.SDO_ROUTER_PARTITION.get_pid(
370: mdsys.SDO_ROUTER_PARTITION.adjust_m(part_m,0,m),part_counter),
371: x,y,mdsys.SDO_ROUTER_PARTITION.adjust_m(part_m,0,m)
372: FROM partition_tmp_2;
373: ELSE
374: -- move n vertices from set (m >= 0) to set ( m < 0) by
375: -- updating pid in vertex table
380: EXECUTE IMMEDIATE stmt into part_m USING no;
381:
382: INSERT /*+ APPEND */ INTO partition_tmp_3 (vertex_id,p_id,x,y,m)
383: SELECT vertex_id,
384: mdsys.SDO_ROUTER_PARTITION.get_pid(
385: mdsys.SDO_ROUTER_PARTITION.adjust_m(0,part_m,m),part_counter),
386: x,y,mdsys.SDO_ROUTER_PARTITION.adjust_m(0,part_m,m)
387: FROM partition_tmp_2;
388: END IF;
381:
382: INSERT /*+ APPEND */ INTO partition_tmp_3 (vertex_id,p_id,x,y,m)
383: SELECT vertex_id,
384: mdsys.SDO_ROUTER_PARTITION.get_pid(
385: mdsys.SDO_ROUTER_PARTITION.adjust_m(0,part_m,m),part_counter),
386: x,y,mdsys.SDO_ROUTER_PARTITION.adjust_m(0,part_m,m)
387: FROM partition_tmp_2;
388: END IF;
389:
382: INSERT /*+ APPEND */ INTO partition_tmp_3 (vertex_id,p_id,x,y,m)
383: SELECT vertex_id,
384: mdsys.SDO_ROUTER_PARTITION.get_pid(
385: mdsys.SDO_ROUTER_PARTITION.adjust_m(0,part_m,m),part_counter),
386: x,y,mdsys.SDO_ROUTER_PARTITION.adjust_m(0,part_m,m)
387: FROM partition_tmp_2;
388: END IF;
389:
390: COMMIT;
432:
433: stmt := 'SELECT AVG(x), AVG(y) from ' || SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(partition_tmp_1);
434: EXECUTE IMMEDIATE stmt into x_mean, y_mean;
435:
436: stmt := 'SELECT mdsys.SDO_ROUTER_PARTITION.min_eigenvector(
437: sum(power(x-:1,2)), sum(power(y-:2,2)),
438: sum((x-:3)*(y-:4))) FROM ' || partition_tmp_1;
439: EXECUTE IMMEDIATE stmt INTO eigenvec USING x_mean, y_mean, x_mean, y_mean;
440:
456: make_partition_equal('partition_tmp_2',partition_id,v_no,part_counter);
457: ELSE
458: INSERT /*+ APPEND */ INTO partition_tmp_3 (vertex_id,p_id,x,y,m)
459: SELECT vertex_id,
460: mdsys.SDO_ROUTER_PARTITION.get_pid(m, part_counter),
461: x,y,m
462: FROM partition_tmp_2;
463:
464: COMMIT;
1358:
1359: --
1360: -- Entry point to used to create a network on the Router data
1361: --
1362: PROCEDURE create_router_network(log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
1363: network_name IN VARCHAR2 := 'ROUTER_NETWORK')
1364: IS
1365: expression VARCHAR2(1024);
1366: full_file_name VARCHAR2(256);
1536:
1537: --
1538: -- Entry point to used to create a network on the Router data
1539: --
1540: PROCEDURE delete_router_network(log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
1541: network_name IN VARCHAR2 := 'ROUTER_NETWORK',
1542: log_delete IN BOOLEAN := TRUE)
1543: IS
1544: full_file_name VARCHAR2(256);
1611: -- high level procedure for partitioning graph based on coordinate
1612: -- information (inertia bisecting). The parameters are defaulted
1613: -- so the customers don't have to worry about them.
1614: --
1615: PROCEDURE partition_router(log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
1616: max_v_no IN NUMBER DEFAULT 10000,
1617: driving_side IN VARCHAR2 := 'R',
1618: network_name IN VARCHAR := 'ROUTER_NETWORK',
1619: max_memory IN NUMBER := 1.75,
1645: -- Query the schema name for gathering statistics
1646: stmt := 'SELECT username FROM user_users';
1647: EXECUTE IMMEDIATE stmt into schema_name;
1648:
1649: log_message('******** Beginning SDO Router partitioning');
1650: log_message('** Schema: ' || schema_name, FALSE);
1651: log_message('** Logfile location: ' || full_file_name, FALSE);
1652: log_message('** Nodes per partition: ' || max_v_no, FALSE);
1653: log_message('** Driving side: ' || driving_side, FALSE);
1735:
1736: -- Reopen the logfile
1737: part_log_file := utl_file.fopen ('SDO_ROUTER_LOG_DIR', log_file_name, 'A');
1738: clean_tables(cleanup);
1739: log_message('******** Completed SDO Router partitioning');
1740:
1741: -- Close the log file
1742: utl_file.fclose(part_log_file);
1743: EXCEPTION
1754:
1755: --
1756: -- Entry point to used to produce a dump of the partition BLOBs
1757: --
1758: PROCEDURE dump_partitions(log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
1759: start_pid IN NUMBER DEFAULT 0,
1760: end_pid IN NUMBER DEFAULT -1,
1761: verbose IN BOOLEAN DEFAULT FALSE)
1762: IS
1834:
1835: --
1836: -- Entry point to used to validate the partition BLOBs
1837: --
1838: PROCEDURE validate_partitions(log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
1839: start_pid IN NUMBER DEFAULT 0,
1840: end_pid IN NUMBER DEFAULT -1,
1841: verbose IN BOOLEAN DEFAULT FALSE)
1842: IS
1922:
1923: ---
1924: --- Entry point to partition the Routers trucking data
1925: ---
1926: PROCEDURE create_trucking_data(log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
1927: cleanup IN BOOLEAN DEFAULT TRUE)
1928: IS
1929: TYPE CURSOR_TYPE IS REF CURSOR;
1930: full_file_name VARCHAR2(256);
2053: --
2054: -- Entry point to used to produce a dump of the trucking data BLOBs
2055: --
2056: PROCEDURE dump_trucking_data(
2057: log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
2058: start_pid IN NUMBER DEFAULT 0,
2059: end_pid IN NUMBER DEFAULT -1,
2060: skip_unsupported IN BOOLEAN DEFAULT TRUE)
2061: IS
2127:
2128: ---
2129: --- Entry point to partition the Routers turn restriction data
2130: ---
2131: PROCEDURE create_turn_restriction_data(log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
2132: cleanup IN BOOLEAN DEFAULT TRUE)
2133: IS
2134: TYPE CURSOR_TYPE IS REF CURSOR;
2135: full_file_name VARCHAR2(256);
2279: --
2280: -- Entry point to used to produce a dump of the turn restriction BLOBs
2281: --
2282: PROCEDURE dump_turn_restriction_data(
2283: log_file_name IN VARCHAR2 := 'sdo_router_partition.log',
2284: start_pid IN NUMBER DEFAULT 0,
2285: end_pid IN NUMBER DEFAULT -1,
2286: dump_soft_restrictions IN BOOLEAN DEFAULT FALSE)
2287: IS
2368:
2369: --
2370: -- Entry point to used to get the Router data version
2371: --
2372: PROCEDURE get_version(log_file_name IN VARCHAR2 := 'sdo_router_partition.log')
2373: IS
2374: data_version VARCHAR2(32);
2375: full_file_name VARCHAR2(256);
2376: BEGIN
2449: --
2450: -- End unused procedures and functions
2451: --
2452:
2453: END SDO_ROUTER_PARTITION;