+
+-- Collation is set in space format and also in position() -
+-- for both arguments. Arguments have different explicit
+-- collations thus an error is expected.
+
+test:do_catchsql_test(
+    "position-1.75",
+    [[
+        CREATE TABLE test1 (s1 VARCHAR(5) PRIMARY KEY COLLATE "unicode_ci");
+        INSERT INTO test1 VALUES('à');
+        SELECT POSITION('a' COLLATE "unicode_ci", s1 COLLATE "unicode") FROM test1;
+    ]], {
+        1, "Illegal mix of collations"
+    }
+)
+
+test:do_catchsql_test(
+    "position-1.76",
+    [[
+        DROP TABLE test1;
+        CREATE TABLE test1 (s1 VARCHAR(5) PRIMARY KEY COLLATE "unicode_ci");
+        INSERT INTO test1 VALUES('qwèrty');
+        SELECT POSITION('er' COLLATE "unicode_ci", s1 COLLATE "unicode") FROM test1;
+        DROP TABLE test1;
+    ]], {
+        1, "Illegal mix of collations"
+    }
+)
+
+test:do_catchsql_test(
+    "position-1.77",
+    [[
+        DROP TABLE test1;
+        CREATE TABLE test1 (s1 VARCHAR(5) PRIMARY KEY COLLATE "unicode_ci");
+        INSERT INTO test1 VALUES('qwèrtÿ');
+        SELECT POSITION('Y' COLLATE "unicode_ci", s1 COLLATE "unicode") FROM test1;
+    ]], {
+        1, "Illegal mix of collations"
+    }
+)

Add test cases on: explicitly set incompatible collations,
explicitly set compatible collations.



Don’t we already have such tests? From the end of position.test.lua:

-- Collation is set in space format and also in position() -
-- for both arguments. Arguments have the same collations.

Oh, I meant ‘implicitly set’. Still can’t find such tests.