Fix bug for tables without geom or with no potential overviews
If the table doesn't have geometries but the createoverviews function is called, the current geometry type checks won't work because "null" will not give a boolean value in the type comparisons. Also, if the createoverviews function is called over a simple table with would not require overviews according to the strategies it is handled correctly.
This commit is contained in:
@@ -226,6 +226,12 @@ AS $$
|
|||||||
WHEN internal_error THEN
|
WHEN internal_error THEN
|
||||||
-- Get stats and execute again
|
-- Get stats and execute again
|
||||||
EXECUTE format('ANALYZE %1$s', reloid);
|
EXECUTE format('ANALYZE %1$s', reloid);
|
||||||
|
|
||||||
|
-- We check the geometry type in case the error is due to empty geometries
|
||||||
|
IF _CDB_GeometryTypes(reloid) IS NULL THEN
|
||||||
|
RETURN NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
EXECUTE ext_query INTO ext;
|
EXECUTE ext_query INTO ext;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
@@ -622,7 +628,7 @@ AS $$
|
|||||||
table_name TEXT;
|
table_name TEXT;
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT _CDB_GeometryTypes(reloid) INTO gtypes;
|
SELECT _CDB_GeometryTypes(reloid) INTO gtypes;
|
||||||
IF array_upper(gtypes, 1) <> 1 OR gtypes[1] <> 'ST_Point' THEN
|
IF gtypes IS NULL OR array_upper(gtypes, 1) <> 1 OR gtypes[1] <> 'ST_Point' THEN
|
||||||
-- This strategy only supports datasets with point geomety
|
-- This strategy only supports datasets with point geomety
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
RETURN 'x';
|
RETURN 'x';
|
||||||
@@ -738,6 +744,10 @@ BEGIN
|
|||||||
-- Determine the referece zoom level
|
-- Determine the referece zoom level
|
||||||
EXECUTE 'SELECT ' || quote_ident(refscale_strategy::text) || Format('(''%s'', %s);', reloid, tolerance_px) INTO ref_z;
|
EXECUTE 'SELECT ' || quote_ident(refscale_strategy::text) || Format('(''%s'', %s);', reloid, tolerance_px) INTO ref_z;
|
||||||
|
|
||||||
|
IF ref_z < 0 OR ref_z IS NULL THEN
|
||||||
|
RETURN NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- Determine overlay zoom levels
|
-- Determine overlay zoom levels
|
||||||
-- TODO: should be handled by the refscale_strategy?
|
-- TODO: should be handled by the refscale_strategy?
|
||||||
overview_z := ref_z - 1;
|
overview_z := ref_z - 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user