Changeset: 920d9aff18a1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/920d9aff18a1
Modified Files:
        geom/sql/pg_regression/Tests/regress_ogc_cover.test
        sql/server/sql_semantic.c
        sql/test/BugTracker-2025/Tests/7730-generate-series-month-int.test
Branch: Dec2025
Log Message:

Reduce the number of automatic casts from string to non-string.
When looking for an implementation function, allow one argument to be
automatically cast to an appropriate type but not two.
Fixes #7811.


diffs (158 lines):

diff --git a/geom/sql/pg_regression/Tests/regress_ogc_cover.test 
b/geom/sql/pg_regression/Tests/regress_ogc_cover.test
--- a/geom/sql/pg_regression/Tests/regress_ogc_cover.test
+++ b/geom/sql/pg_regression/Tests/regress_ogc_cover.test
@@ -1,107 +1,107 @@
 query TI rowsort
-SELECT 'covers100', ST_Covers('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 
'LINESTRING(1 10, 9 10, 9 8)')
+SELECT 'covers100', ST_Covers(GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 
0))', GEOMETRY 'LINESTRING(1 10, 9 10, 9 8)')
 ----
 covers100
 1
 
 query TI rowsort
-SELECT 'covers101', ST_Covers('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 
'LINESTRING(1 10, 10 10, 10 8)')
+SELECT 'covers101', ST_Covers(GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 
0))', GEOMETRY 'LINESTRING(1 10, 10 10, 10 8)')
 ----
 covers101
 1
 
 query TI rowsort
-SELECT 'covers102', ST_Covers('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 
'POINT(5 5)')
+SELECT 'covers102', ST_Covers(GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 
0))', GEOMETRY 'POINT(5 5)')
 ----
 covers102
 1
 
 query TI rowsort
-SELECT 'covers103', ST_Covers('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 
'POINT(0 0)')
+SELECT 'covers103', ST_Covers(GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 
0))', GEOMETRY 'POINT(0 0)')
 ----
 covers103
 1
 
 query TI rowsort
-SELECT 'covers104', ST_Covers('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 
'POINT(-1 0)')
+SELECT 'covers104', ST_Covers(GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 
0))', GEOMETRY 'POINT(-1 0)')
 ----
 covers104
 0
 
 query TI rowsort
-SELECT 'covers105', ST_Covers('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 
'POINT(0 5)')
+SELECT 'covers105', ST_Covers(GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 
0))', GEOMETRY 'POINT(0 5)')
 ----
 covers105
 1
 
 query TI rowsort
-SELECT 'covers106', ST_Covers('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 
'POINT(0 12)')
+SELECT 'covers106', ST_Covers(GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 
0))', GEOMETRY 'POINT(0 12)')
 ----
 covers106
 0
 
 query TI rowsort
-SELECT 'covers107', ST_Covers(ST_GeomFromText('POLYGON((521526 5377783, 521481 
5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631), 
ST_GeomFromText('POINT(521513 5377804)', 32631))
+SELECT 'covers107', ST_Covers(ST_GeomFromText(GEOMETRY 'POLYGON((521526 
5377783, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 
32631), ST_GeomFromText(GEOMETRY 'POINT(521513 5377804)', 32631))
 ----
 covers107
 1
 
 query TI rowsort
-SELECT 'covers108', ST_Covers(ST_GeomFromText('POLYGON((521526 5377783, 521482 
5377811, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 
32631), ST_GeomFromText('POINT(521513 5377804)', 32631))
+SELECT 'covers108', ST_Covers(ST_GeomFromText(GEOMETRY 'POLYGON((521526 
5377783, 521482 5377811, 521481 5377811, 521494 5377832, 521539 5377804, 521526 
5377783))', 32631), ST_GeomFromText(GEOMETRY 'POINT(521513 5377804)', 32631))
 ----
 covers108
 1
 
 query TI rowsort
-SELECT 'coveredby100', ST_CoveredBy('LINESTRING(1 10, 9 10, 9 8)', 'POLYGON((0 
0, 0 10, 10 10, 10 0, 0 0))')
+SELECT 'coveredby100', ST_CoveredBy(GEOMETRY 'LINESTRING(1 10, 9 10, 9 8)', 
GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')
 ----
 coveredby100
 1
 
 query TI rowsort
-SELECT 'coveredby101', ST_CoveredBy('LINESTRING(1 10, 10 10, 10 8)', 
'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')
+SELECT 'coveredby101', ST_CoveredBy(GEOMETRY 'LINESTRING(1 10, 10 10, 10 8)', 
GEOMETRY 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')
 ----
 coveredby101
 1
 
 query TI rowsort
-SELECT 'coveredby102', ST_CoveredBy('POINT(5 5)', 'POLYGON((0 0, 0 10, 10 10, 
10 0, 0 0))')
+SELECT 'coveredby102', ST_CoveredBy(GEOMETRY 'POINT(5 5)', GEOMETRY 
'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')
 ----
 coveredby102
 1
 
 query TI rowsort
-SELECT 'coveredby103', ST_CoveredBy('POINT(0 0)', 'POLYGON((0 0, 0 10, 10 10, 
10 0, 0 0))')
+SELECT 'coveredby103', ST_CoveredBy(GEOMETRY 'POINT(0 0)', GEOMETRY 
'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')
 ----
 coveredby103
 1
 
 query TI rowsort
-SELECT 'coveredby104', ST_CoveredBy('POINT(-1 0)', 'POLYGON((0 0, 0 10, 10 10, 
10 0, 0 0))')
+SELECT 'coveredby104', ST_CoveredBy(GEOMETRY 'POINT(-1 0)', GEOMETRY 
'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')
 ----
 coveredby104
 0
 
 query TI rowsort
-SELECT 'coveredby105', ST_CoveredBy('POINT(0 5)', 'POLYGON((0 0, 0 10, 10 10, 
10 0, 0 0))')
+SELECT 'coveredby105', ST_CoveredBy(GEOMETRY 'POINT(0 5)', GEOMETRY 
'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')
 ----
 coveredby105
 1
 
 query TI rowsort
-SELECT 'coveredby106', ST_CoveredBy('POINT(0 12)', 'POLYGON((0 0, 0 10, 10 10, 
10 0, 0 0))')
+SELECT 'coveredby106', ST_CoveredBy(GEOMETRY 'POINT(0 12)', GEOMETRY 
'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')
 ----
 coveredby106
 0
 
 query TI rowsort
-SELECT 'coveredby107', ST_CoveredBy(ST_GeomFromText('POINT(521513 5377804)', 
32631), ST_GeomFromText('POLYGON((521526 5377783, 521481 5377811, 521494 
5377832, 521539 5377804, 521526 5377783))', 32631))
+SELECT 'coveredby107', ST_CoveredBy(ST_GeomFromText(GEOMETRY 'POINT(521513 
5377804)', 32631), ST_GeomFromText(GEOMETRY 'POLYGON((521526 5377783, 521481 
5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631))
 ----
 coveredby107
 1
 
 query TI rowsort
-SELECT 'coveredby108', ST_CoveredBy(ST_GeomFromText('POINT(521513 5377804)', 
32631), ST_GeomFromText('POLYGON((521526 5377783, 521482 5377811, 521481 
5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 32631))
+SELECT 'coveredby108', ST_CoveredBy(ST_GeomFromText(GEOMETRY 'POINT(521513 
5377804)', 32631), ST_GeomFromText(GEOMETRY 'POLYGON((521526 5377783, 521482 
5377811, 521481 5377811, 521494 5377832, 521539 5377804, 521526 5377783))', 
32631))
 ----
 coveredby108
 1
diff --git a/sql/server/sql_semantic.c b/sql/server/sql_semantic.c
--- a/sql/server/sql_semantic.c
+++ b/sql/server/sql_semantic.c
@@ -534,7 +534,7 @@ score_func( sql_func *f, list *tl, bool 
                        nscore = -nscore;
                }
                score += nscore;
-               if (EC_VARCHAR(t->type->eclass) && 
EC_NUMBER(a->type.type->eclass))
+               if (EC_VARCHAR(t->type->eclass) && 
!EC_VARCHAR(a->type.type->eclass) && a->type.type->eclass != EC_ANY)
                        nr_strconverts++;
                if (nr_strconverts > 1)
                        return 0;
diff --git a/sql/test/BugTracker-2025/Tests/7730-generate-series-month-int.test 
b/sql/test/BugTracker-2025/Tests/7730-generate-series-month-int.test
--- a/sql/test/BugTracker-2025/Tests/7730-generate-series-month-int.test
+++ b/sql/test/BugTracker-2025/Tests/7730-generate-series-month-int.test
@@ -1,11 +1,11 @@
 query T nosort
-SELECT * FROM generate_series( '2025-03-01', '2025-04-25', INTERVAL '1' MONTH)
+SELECT * FROM generate_series( DATE '2025-03-01', DATE '2025-04-25', INTERVAL 
'1' MONTH)
 ----
 2025-03-01
 2025-04-01
 
 query T nosort
-SELECT * FROM generate_series( '2025-03-01', '2025-04-26', INTERVAL '1' MONTH)
+SELECT * FROM generate_series( DATE '2025-03-01', DATE '2025-04-26', INTERVAL 
'1' MONTH)
 ----
 2025-03-01
 2025-04-01
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to