The content describes a function called Geometry DBSCAN, which is a version of DBSCAN that only accepts geometry points as input data. Currently, it only supports 2-D points. For more information, refer to the DBSCAN function.
------

SET SCHEMA DM_PAL;

DROP TABLE PAL_GEO_DBSCAN_DATA_TBL;
CREATE COLUMN TABLE PAL_GEO_DBSCAN_DATA_TBL (
	"ID" INTEGER, 
	"POINT" ST_GEOMETRY
);
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(1, ST_GEOMFROMTEXT('Point(0.10 0.10)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(2, ST_GEOMFROMTEXT('Point(0.11 0.10)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(3, ST_GEOMFROMTEXT('Point(0.10 0.11)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(4, ST_GEOMFROMTEXT('Point(0.11 0.11)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(5, ST_GEOMFROMTEXT('Point(0.12 0.11)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(6, ST_GEOMFROMTEXT('Point(0.11 0.12)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(7, ST_GEOMFROMTEXT('Point(0.12 0.12)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(8, ST_GEOMFROMTEXT('Point(0.12 0.13)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(9, ST_GEOMFROMTEXT('Point(0.13 0.12)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(10, ST_GEOMFROMTEXT('Point(0.13 0.13)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(11, ST_GEOMFROMTEXT('Point(0.13 0.14)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(12, ST_GEOMFROMTEXT('Point(0.14 0.13)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(13, ST_GEOMFROMTEXT('Point(10.10 10.10)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(14, ST_GEOMFROMTEXT('Point(10.11 10.10)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(15, ST_GEOMFROMTEXT('Point(10.10 10.11)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(16, ST_GEOMFROMTEXT('Point(10.11 10.11)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(17, ST_GEOMFROMTEXT('Point(10.11 10.12)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(18, ST_GEOMFROMTEXT('Point(10.12 10.11)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(19, ST_GEOMFROMTEXT('Point(10.12 10.12)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(20, ST_GEOMFROMTEXT('Point(10.12 10.13)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(21, ST_GEOMFROMTEXT('Point(10.13 10.12)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(22, ST_GEOMFROMTEXT('Point(10.13 10.13)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(23, ST_GEOMFROMTEXT('Point(10.13 10.14)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(24, ST_GEOMFROMTEXT('Point(10.14 10.13)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(25, ST_GEOMFROMTEXT('Point(4.10 4.10)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(26, ST_GEOMFROMTEXT('Point(7.11 7.10)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(27, ST_GEOMFROMTEXT('Point(-3.10 -3.11)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(28, ST_GEOMFROMTEXT('Point(16.11 16.11)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(29, ST_GEOMFROMTEXT('Point(20.11 20.12)'));
INSERT INTO PAL_GEO_DBSCAN_DATA_TBL VALUES(30, ST_GEOMFROMTEXT('Point(15.12 15.11)'));

DROP TABLE #PAL_PARAMETER_TBL;
CREATE LOCAL TEMPORARY COLUMN TABLE #PAL_PARAMETER_TBL (
	"PARAM_NAME" VARCHAR(100), 
	"INT_VALUE" INTEGER, 
	"DOUBLE_VALUE" DOUBLE, 
	"STRIN_VALUE" VARCHAR(100)
);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('THREAD_RATIO', NULL, 0.2, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('AUTO_PARAM', NULL, NULL, 'true');
INSERT INTO #PAL_PARAMETER_TBL VALUES ('DISTANCE_METHOD', 1, NULL, NULL);

CALL _SYS_AFL.PAL_GEO_DBSCAN(PAL_GEO_DBSCAN_DATA_TBL, "#PAL_PARAMETER_TBL", ?, ?, ?, ?);


