maropu commented on a change in pull request #32552:
URL: https://github.com/apache/spark/pull/32552#discussion_r632616653



##########
File path: sql/core/src/test/resources/sql-tests/results/map.sql.out
##########
@@ -16,3 +16,757 @@ select map(1, 'a', 2, 'b')[5]
 struct<map(1, a, 2, b)[5]:string>
 -- !query output
 NULL
+
+
+-- !query
+CREATE TEMPORARY VIEW t1 AS SELECT * FROM VALUES
+  (map(1, 'a', 2, 'b'), map(2, 'b', 1, 'a')),
+  (map(2, 'b', 1, 'a'), map(2, 'b', 1, 'A')),
+  (map(3, 'c', 1, 'a'), map(4, 'd', 3, 'c')),
+  (map(3, 'c', 1, 'a'), map(3, 'c')),
+  (map(3, 'c'), map(4, 'd', 3, 'c')),
+  (map(), map(1, 'a')),
+  (map(1, 'a'), map())
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t2 AS SELECT * FROM VALUES
+  (array(map(1, 'a', 2, 'b')), array(map(2, 'b', 1, 'a'))),
+  (array(map(2, 'b', 1, 'a')), array(map(2, 'b', 1, 'A'))),
+  (array(map(3, 'c', 1, 'a')), array(map(4, 'd', 3, 'c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t3 AS SELECT * FROM VALUES
+  (struct(map(1, 'a', 2, 'b')), struct(map(2, 'b', 1, 'a'))),
+  (struct(map(2, 'b', 1, 'a')), struct(map(2, 'b', 1, 'A'))),
+  (struct(map(3, 'c', 1, 'a')), struct(map(4, 'd', 3, 'c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t4 AS SELECT * FROM VALUES
+  (map(1, map(1, 'a', 2, 'b'), 2, map(3, 'c', 4, 'd')), map(2, map(4, 'd', 3, 
'c'), 1, map(2, 'b', 1, 'a'))),
+  (map(2, map(4, 'd', 3, 'c'), 1, map(2, 'b', 1, 'a')), map(2, map(4, 'd', 3, 
'c'), 1, map(2, 'b', 1, 'A'))),
+  (map(3, map(5, 'e', 6, 'f'), 1, map(1, 'a', 2, 'b')), map(4, map(7, 'g', 8, 
'h'), 3, map(6, 'f', 5, 'e')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t5 AS SELECT * FROM VALUES
+  (map(array(1, 2), 'a', array(3, 4), 'b'), map(array(3, 4), 'b', array(1, 2), 
'a')),
+  (map(array(3, 4), 'b', array(1, 2), 'a'), map(array(4, 3), 'b', array(1, 2), 
'a')),
+  (map(array(5, 6), 'a', array(1, 2), 'a'), map(array(2, 1), 'a', array(5, 6), 
'c'))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t6 AS SELECT * FROM VALUES
+  (map(1, array(1, 2), 2, array(3, 4)), map(2, array(3, 4), 1, array(1, 2))),
+  (map(2, array(3, 4), 1, array(1, 2)), map(2, array(4, 3), 1, array(1, 2))),
+  (map(3, array(5, 6), 1, array(1, 2)), map(1, array(2, 1), 3, array(5, 6)))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t7 AS SELECT * FROM VALUES
+  (map(struct(1), 'a', struct(2), 'b'), map(struct(2), 'b', struct(1), 'a')),
+  (map(struct(2), 'b', struct(1), 'a'), map(struct(1), 'b', struct(2), 'a')),
+  (map(struct(3), 'c', struct(1), 'a'), map(struct(4), 'd', struct(3), 'c'))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t8 AS SELECT * FROM VALUES
+  (map(1, struct('a'), 2, struct('b')), map(2, struct('b'), 1, struct('a'))),
+  (map(2, struct('b'), 1, struct('a')), map(2, struct('a'), 1, struct('b'))),
+  (map(3, struct('c'), 1, struct('a')), map(4, struct('d'), 3, struct('c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+SELECT * FROM t1 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{}     {1:"a"}
+{1:"a"}        {}
+{1:"a",2:"b"}  {1:"A",2:"b"}
+{1:"a",2:"b"}  {1:"a",2:"b"}
+{1:"a",3:"c"}  {3:"c"}
+{1:"a",3:"c"}  {3:"c",4:"d"}
+{3:"c"}        {3:"c",4:"d"}
+
+
+-- !query
+SELECT * FROM t2 ORDER BY v1, v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}]
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+[{1:"a",3:"c"}]        [{3:"c",4:"d"}]
+
+
+-- !query
+SELECT * FROM t3 ORDER BY v1, v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+{"col1":{1:"a",3:"c"}} {"col1":{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t4 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}
+
+
+-- !query
+SELECT * FROM t5 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[4,3]:"b"}
+{[1,2]:"a",[5,6]:"a"}  {[2,1]:"a",[5,6]:"c"}
+
+
+-- !query
+SELECT * FROM t6 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[4,3]}
+{1:[1,2],3:[5,6]}      {1:[2,1],3:[5,6]}
+
+
+-- !query
+SELECT * FROM t7 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"}
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"b",{"col1":2}:"a"}
+{{"col1":1}:"a",{"col1":3}:"c"}        {{"col1":3}:"c",{"col1":4}:"d"}
+
+
+-- !query
+SELECT * FROM t8 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}}
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"b"},2:{"col1":"a"}}
+{1:{"col1":"a"},3:{"col1":"c"}}        {3:{"col1":"c"},4:{"col1":"d"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"a",2:"b"}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 = v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 = v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+
+
+-- !query
+SELECT * FROM t4 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t5 WHERE v1 = v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}
+
+
+-- !query
+SELECT * FROM t6 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}
+
+
+-- !query
+SELECT * FROM t7 WHERE v1 = v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"}
+
+
+-- !query
+SELECT * FROM t8 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 <=> v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"a",2:"b"}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 <=> v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 <=> v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 > v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"A",2:"b"}
+{1:"a"}        {}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 > v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 > v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}
+
+
+-- !query
+SELECT * FROM t1 l, t1 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>,v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"A",2:"b"}   {1:"a",2:"b"}   {1:"A",2:"b"}
+{1:"a",2:"b"}  {1:"a",2:"b"}   {1:"a",2:"b"}   {1:"a",2:"b"}
+{1:"a",3:"c"}  {3:"c",4:"d"}   {1:"a",3:"c"}   {3:"c",4:"d"}
+{1:"a",3:"c"}  {3:"c"} {1:"a",3:"c"}   {3:"c"}
+{1:"a"}        {}      {1:"a"} {}
+{3:"c"}        {3:"c",4:"d"}   {3:"c"} {3:"c",4:"d"}
+{}     {1:"a"} {}      {1:"a"}
+
+
+-- !query
+SELECT * FROM t2 l, t2 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>,v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}] [{1:"a",2:"b"}] [{1:"A",2:"b"}]
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}] [{1:"a",2:"b"}] [{1:"a",2:"b"}]
+[{1:"a",3:"c"}]        [{3:"c",4:"d"}] [{1:"a",3:"c"}] [{3:"c",4:"d"}]
+
+
+-- !query
+SELECT * FROM t3 l, t3 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>,v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}  {"col1":{1:"a",2:"b"}}  
{"col1":{1:"A",2:"b"}}
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}  {"col1":{1:"a",2:"b"}}  
{"col1":{1:"a",2:"b"}}
+{"col1":{1:"a",3:"c"}} {"col1":{3:"c",4:"d"}}  {"col1":{1:"a",3:"c"}}  
{"col1":{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t4 l, t4 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>,v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}       
{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       
{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}       
{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}       {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}
+
+
+-- !query
+SELECT * FROM t5 l, t5 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>,v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}   {[1,2]:"a",[3,4]:"b"}   
{[1,2]:"a",[3,4]:"b"}
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[4,3]:"b"}   {[1,2]:"a",[3,4]:"b"}   
{[1,2]:"a",[4,3]:"b"}
+{[1,2]:"a",[5,6]:"a"}  {[2,1]:"a",[5,6]:"c"}   {[1,2]:"a",[5,6]:"a"}   
{[2,1]:"a",[5,6]:"c"}
+
+
+-- !query
+SELECT * FROM t6 l, t6 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>,v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}       {1:[1,2],2:[3,4]}       
{1:[1,2],2:[3,4]}
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[4,3]}       {1:[1,2],2:[3,4]}       
{1:[1,2],2:[4,3]}
+{1:[1,2],3:[5,6]}      {1:[2,1],3:[5,6]}       {1:[1,2],3:[5,6]}       
{1:[2,1],3:[5,6]}
+
+
+-- !query
+SELECT * FROM t7 l, t7 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>,v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"} 
{{"col1":1}:"a",{"col1":2}:"b"} {{"col1":1}:"a",{"col1":2}:"b"}
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"b",{"col1":2}:"a"} 
{{"col1":1}:"a",{"col1":2}:"b"} {{"col1":1}:"b",{"col1":2}:"a"}
+{{"col1":1}:"a",{"col1":3}:"c"}        {{"col1":3}:"c",{"col1":4}:"d"} 
{{"col1":1}:"a",{"col1":3}:"c"} {{"col1":3}:"c",{"col1":4}:"d"}
+
+
+-- !query
+SELECT * FROM t8 l, t8 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>,v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}} 
{1:{"col1":"a"},2:{"col1":"b"}} {1:{"col1":"a"},2:{"col1":"b"}}
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"b"},2:{"col1":"a"}} 
{1:{"col1":"a"},2:{"col1":"b"}} {1:{"col1":"b"},2:{"col1":"a"}}
+{1:{"col1":"a"},3:{"col1":"c"}}        {3:{"col1":"c"},4:{"col1":"d"}} 
{1:{"col1":"a"},3:{"col1":"c"}} {3:{"col1":"c"},4:{"col1":"d"}}
+
+
+-- !query
+SELECT v1, count(1) FROM t1 GROUP BY v1
+-- !query schema
+struct<v1:map<int,string>,count(1):bigint>
+-- !query output
+{1:"a",2:"b"}  2
+{1:"a",3:"c"}  2
+{1:"a"}        1
+{3:"c"}        1
+{}     1
+
+
+-- !query
+SELECT v1, count(1) FROM t2 GROUP BY v1
+-- !query schema
+struct<v1:array<map<int,string>>,count(1):bigint>
+-- !query output
+[{1:"a",2:"b"}]        2
+[{1:"a",3:"c"}]        1
+
+
+-- !query
+SELECT v1, count(1) FROM t3 GROUP BY v1
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,count(1):bigint>
+-- !query output
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",3:"c"}} 1
+
+
+-- !query
+SELECT v1, count(1) FROM t4 GROUP BY v1
+-- !query schema
+struct<v1:map<int,map<int,string>>,count(1):bigint>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      1
+
+
+-- !query
+SELECT v1, count(1) FROM t5 GROUP BY v1
+-- !query schema
+struct<v1:map<array<int>,string>,count(1):bigint>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[5,6]:"a"}  1
+
+
+-- !query
+SELECT v1, count(1) FROM t6 GROUP BY v1
+-- !query schema
+struct<v1:map<int,array<int>>,count(1):bigint>
+-- !query output
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],3:[5,6]}      1
+
+
+-- !query
+SELECT v1, count(1) FROM t7 GROUP BY v1
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,count(1):bigint>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":3}:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) FROM t8 GROUP BY v1
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,count(1):bigint>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},3:{"col1":"c"}}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t1 ORDER BY v1
+-- !query schema
+struct<v1:map<int,string>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{}     1
+{1:"a"}        1
+{1:"a",2:"b"}  2
+{1:"a",2:"b"}  2
+{1:"a",3:"c"}  2
+{1:"a",3:"c"}  2
+{3:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t2 ORDER BY v1
+-- !query schema
+struct<v1:array<map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+[{1:"a",2:"b"}]        2
+[{1:"a",2:"b"}]        2
+[{1:"a",3:"c"}]        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t3 ORDER BY v1
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",3:"c"}} 1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t4 ORDER BY v1
+-- !query schema
+struct<v1:map<int,map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t5 ORDER BY v1
+-- !query schema
+struct<v1:map<array<int>,string>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[5,6]:"a"}  1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t6 ORDER BY v1
+-- !query schema
+struct<v1:map<int,array<int>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],3:[5,6]}      1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t7 ORDER BY v1
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":3}:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t8 ORDER BY v1
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},3:{"col1":"c"}}        1
+
+
+-- !query
+(SELECT v1 FROM t1) INTERSECT (SELECT v1 FROM t1 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<int,string>>
+-- !query output
+{1:"a",2:"b"}
+{1:"a"}
+{}
+
+
+-- !query
+(SELECT v1 FROM t2) INTERSECT (SELECT v1 FROM t2 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]
+[{1:"a",3:"c"}]
+
+
+-- !query
+(SELECT v1 FROM t3) INTERSECT (SELECT v1 FROM t3 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<>
+-- !query output
+java.lang.UnsupportedOperationException

Review comment:
       I'm checking this failure.

##########
File path: sql/core/src/test/resources/sql-tests/results/map.sql.out
##########
@@ -16,3 +16,757 @@ select map(1, 'a', 2, 'b')[5]
 struct<map(1, a, 2, b)[5]:string>
 -- !query output
 NULL
+
+
+-- !query
+CREATE TEMPORARY VIEW t1 AS SELECT * FROM VALUES
+  (map(1, 'a', 2, 'b'), map(2, 'b', 1, 'a')),
+  (map(2, 'b', 1, 'a'), map(2, 'b', 1, 'A')),
+  (map(3, 'c', 1, 'a'), map(4, 'd', 3, 'c')),
+  (map(3, 'c', 1, 'a'), map(3, 'c')),
+  (map(3, 'c'), map(4, 'd', 3, 'c')),
+  (map(), map(1, 'a')),
+  (map(1, 'a'), map())
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t2 AS SELECT * FROM VALUES
+  (array(map(1, 'a', 2, 'b')), array(map(2, 'b', 1, 'a'))),
+  (array(map(2, 'b', 1, 'a')), array(map(2, 'b', 1, 'A'))),
+  (array(map(3, 'c', 1, 'a')), array(map(4, 'd', 3, 'c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t3 AS SELECT * FROM VALUES
+  (struct(map(1, 'a', 2, 'b')), struct(map(2, 'b', 1, 'a'))),
+  (struct(map(2, 'b', 1, 'a')), struct(map(2, 'b', 1, 'A'))),
+  (struct(map(3, 'c', 1, 'a')), struct(map(4, 'd', 3, 'c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t4 AS SELECT * FROM VALUES
+  (map(1, map(1, 'a', 2, 'b'), 2, map(3, 'c', 4, 'd')), map(2, map(4, 'd', 3, 
'c'), 1, map(2, 'b', 1, 'a'))),
+  (map(2, map(4, 'd', 3, 'c'), 1, map(2, 'b', 1, 'a')), map(2, map(4, 'd', 3, 
'c'), 1, map(2, 'b', 1, 'A'))),
+  (map(3, map(5, 'e', 6, 'f'), 1, map(1, 'a', 2, 'b')), map(4, map(7, 'g', 8, 
'h'), 3, map(6, 'f', 5, 'e')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t5 AS SELECT * FROM VALUES
+  (map(array(1, 2), 'a', array(3, 4), 'b'), map(array(3, 4), 'b', array(1, 2), 
'a')),
+  (map(array(3, 4), 'b', array(1, 2), 'a'), map(array(4, 3), 'b', array(1, 2), 
'a')),
+  (map(array(5, 6), 'a', array(1, 2), 'a'), map(array(2, 1), 'a', array(5, 6), 
'c'))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t6 AS SELECT * FROM VALUES
+  (map(1, array(1, 2), 2, array(3, 4)), map(2, array(3, 4), 1, array(1, 2))),
+  (map(2, array(3, 4), 1, array(1, 2)), map(2, array(4, 3), 1, array(1, 2))),
+  (map(3, array(5, 6), 1, array(1, 2)), map(1, array(2, 1), 3, array(5, 6)))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t7 AS SELECT * FROM VALUES
+  (map(struct(1), 'a', struct(2), 'b'), map(struct(2), 'b', struct(1), 'a')),
+  (map(struct(2), 'b', struct(1), 'a'), map(struct(1), 'b', struct(2), 'a')),
+  (map(struct(3), 'c', struct(1), 'a'), map(struct(4), 'd', struct(3), 'c'))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t8 AS SELECT * FROM VALUES
+  (map(1, struct('a'), 2, struct('b')), map(2, struct('b'), 1, struct('a'))),
+  (map(2, struct('b'), 1, struct('a')), map(2, struct('a'), 1, struct('b'))),
+  (map(3, struct('c'), 1, struct('a')), map(4, struct('d'), 3, struct('c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+SELECT * FROM t1 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{}     {1:"a"}
+{1:"a"}        {}
+{1:"a",2:"b"}  {1:"A",2:"b"}
+{1:"a",2:"b"}  {1:"a",2:"b"}
+{1:"a",3:"c"}  {3:"c"}
+{1:"a",3:"c"}  {3:"c",4:"d"}
+{3:"c"}        {3:"c",4:"d"}
+
+
+-- !query
+SELECT * FROM t2 ORDER BY v1, v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}]
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+[{1:"a",3:"c"}]        [{3:"c",4:"d"}]
+
+
+-- !query
+SELECT * FROM t3 ORDER BY v1, v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+{"col1":{1:"a",3:"c"}} {"col1":{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t4 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}
+
+
+-- !query
+SELECT * FROM t5 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[4,3]:"b"}
+{[1,2]:"a",[5,6]:"a"}  {[2,1]:"a",[5,6]:"c"}
+
+
+-- !query
+SELECT * FROM t6 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[4,3]}
+{1:[1,2],3:[5,6]}      {1:[2,1],3:[5,6]}
+
+
+-- !query
+SELECT * FROM t7 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"}
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"b",{"col1":2}:"a"}
+{{"col1":1}:"a",{"col1":3}:"c"}        {{"col1":3}:"c",{"col1":4}:"d"}
+
+
+-- !query
+SELECT * FROM t8 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}}
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"b"},2:{"col1":"a"}}
+{1:{"col1":"a"},3:{"col1":"c"}}        {3:{"col1":"c"},4:{"col1":"d"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"a",2:"b"}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 = v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 = v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+
+
+-- !query
+SELECT * FROM t4 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t5 WHERE v1 = v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}
+
+
+-- !query
+SELECT * FROM t6 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}
+
+
+-- !query
+SELECT * FROM t7 WHERE v1 = v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"}
+
+
+-- !query
+SELECT * FROM t8 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 <=> v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"a",2:"b"}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 <=> v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 <=> v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 > v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"A",2:"b"}
+{1:"a"}        {}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 > v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 > v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}
+
+
+-- !query
+SELECT * FROM t1 l, t1 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>,v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"A",2:"b"}   {1:"a",2:"b"}   {1:"A",2:"b"}
+{1:"a",2:"b"}  {1:"a",2:"b"}   {1:"a",2:"b"}   {1:"a",2:"b"}
+{1:"a",3:"c"}  {3:"c",4:"d"}   {1:"a",3:"c"}   {3:"c",4:"d"}
+{1:"a",3:"c"}  {3:"c"} {1:"a",3:"c"}   {3:"c"}
+{1:"a"}        {}      {1:"a"} {}
+{3:"c"}        {3:"c",4:"d"}   {3:"c"} {3:"c",4:"d"}
+{}     {1:"a"} {}      {1:"a"}
+
+
+-- !query
+SELECT * FROM t2 l, t2 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>,v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}] [{1:"a",2:"b"}] [{1:"A",2:"b"}]
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}] [{1:"a",2:"b"}] [{1:"a",2:"b"}]
+[{1:"a",3:"c"}]        [{3:"c",4:"d"}] [{1:"a",3:"c"}] [{3:"c",4:"d"}]
+
+
+-- !query
+SELECT * FROM t3 l, t3 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>,v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}  {"col1":{1:"a",2:"b"}}  
{"col1":{1:"A",2:"b"}}
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}  {"col1":{1:"a",2:"b"}}  
{"col1":{1:"a",2:"b"}}
+{"col1":{1:"a",3:"c"}} {"col1":{3:"c",4:"d"}}  {"col1":{1:"a",3:"c"}}  
{"col1":{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t4 l, t4 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>,v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}       
{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       
{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}       
{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}       {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}
+
+
+-- !query
+SELECT * FROM t5 l, t5 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>,v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}   {[1,2]:"a",[3,4]:"b"}   
{[1,2]:"a",[3,4]:"b"}
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[4,3]:"b"}   {[1,2]:"a",[3,4]:"b"}   
{[1,2]:"a",[4,3]:"b"}
+{[1,2]:"a",[5,6]:"a"}  {[2,1]:"a",[5,6]:"c"}   {[1,2]:"a",[5,6]:"a"}   
{[2,1]:"a",[5,6]:"c"}
+
+
+-- !query
+SELECT * FROM t6 l, t6 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>,v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}       {1:[1,2],2:[3,4]}       
{1:[1,2],2:[3,4]}
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[4,3]}       {1:[1,2],2:[3,4]}       
{1:[1,2],2:[4,3]}
+{1:[1,2],3:[5,6]}      {1:[2,1],3:[5,6]}       {1:[1,2],3:[5,6]}       
{1:[2,1],3:[5,6]}
+
+
+-- !query
+SELECT * FROM t7 l, t7 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>,v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"} 
{{"col1":1}:"a",{"col1":2}:"b"} {{"col1":1}:"a",{"col1":2}:"b"}
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"b",{"col1":2}:"a"} 
{{"col1":1}:"a",{"col1":2}:"b"} {{"col1":1}:"b",{"col1":2}:"a"}
+{{"col1":1}:"a",{"col1":3}:"c"}        {{"col1":3}:"c",{"col1":4}:"d"} 
{{"col1":1}:"a",{"col1":3}:"c"} {{"col1":3}:"c",{"col1":4}:"d"}
+
+
+-- !query
+SELECT * FROM t8 l, t8 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>,v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}} 
{1:{"col1":"a"},2:{"col1":"b"}} {1:{"col1":"a"},2:{"col1":"b"}}
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"b"},2:{"col1":"a"}} 
{1:{"col1":"a"},2:{"col1":"b"}} {1:{"col1":"b"},2:{"col1":"a"}}
+{1:{"col1":"a"},3:{"col1":"c"}}        {3:{"col1":"c"},4:{"col1":"d"}} 
{1:{"col1":"a"},3:{"col1":"c"}} {3:{"col1":"c"},4:{"col1":"d"}}
+
+
+-- !query
+SELECT v1, count(1) FROM t1 GROUP BY v1
+-- !query schema
+struct<v1:map<int,string>,count(1):bigint>
+-- !query output
+{1:"a",2:"b"}  2
+{1:"a",3:"c"}  2
+{1:"a"}        1
+{3:"c"}        1
+{}     1
+
+
+-- !query
+SELECT v1, count(1) FROM t2 GROUP BY v1
+-- !query schema
+struct<v1:array<map<int,string>>,count(1):bigint>
+-- !query output
+[{1:"a",2:"b"}]        2
+[{1:"a",3:"c"}]        1
+
+
+-- !query
+SELECT v1, count(1) FROM t3 GROUP BY v1
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,count(1):bigint>
+-- !query output
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",3:"c"}} 1
+
+
+-- !query
+SELECT v1, count(1) FROM t4 GROUP BY v1
+-- !query schema
+struct<v1:map<int,map<int,string>>,count(1):bigint>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      1
+
+
+-- !query
+SELECT v1, count(1) FROM t5 GROUP BY v1
+-- !query schema
+struct<v1:map<array<int>,string>,count(1):bigint>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[5,6]:"a"}  1
+
+
+-- !query
+SELECT v1, count(1) FROM t6 GROUP BY v1
+-- !query schema
+struct<v1:map<int,array<int>>,count(1):bigint>
+-- !query output
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],3:[5,6]}      1
+
+
+-- !query
+SELECT v1, count(1) FROM t7 GROUP BY v1
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,count(1):bigint>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":3}:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) FROM t8 GROUP BY v1
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,count(1):bigint>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},3:{"col1":"c"}}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t1 ORDER BY v1
+-- !query schema
+struct<v1:map<int,string>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{}     1
+{1:"a"}        1
+{1:"a",2:"b"}  2
+{1:"a",2:"b"}  2
+{1:"a",3:"c"}  2
+{1:"a",3:"c"}  2
+{3:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t2 ORDER BY v1
+-- !query schema
+struct<v1:array<map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+[{1:"a",2:"b"}]        2
+[{1:"a",2:"b"}]        2
+[{1:"a",3:"c"}]        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t3 ORDER BY v1
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",3:"c"}} 1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t4 ORDER BY v1
+-- !query schema
+struct<v1:map<int,map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t5 ORDER BY v1
+-- !query schema
+struct<v1:map<array<int>,string>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[5,6]:"a"}  1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t6 ORDER BY v1
+-- !query schema
+struct<v1:map<int,array<int>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],3:[5,6]}      1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t7 ORDER BY v1
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":3}:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t8 ORDER BY v1
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},3:{"col1":"c"}}        1
+
+
+-- !query
+(SELECT v1 FROM t1) INTERSECT (SELECT v1 FROM t1 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<int,string>>
+-- !query output
+{1:"a",2:"b"}
+{1:"a"}
+{}
+
+
+-- !query
+(SELECT v1 FROM t2) INTERSECT (SELECT v1 FROM t2 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]
+[{1:"a",3:"c"}]
+
+
+-- !query
+(SELECT v1 FROM t3) INTERSECT (SELECT v1 FROM t3 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<>
+-- !query output
+java.lang.UnsupportedOperationException

Review comment:
       I'm looking into this failure.

##########
File path: sql/core/src/test/resources/sql-tests/results/map.sql.out
##########
@@ -16,3 +16,757 @@ select map(1, 'a', 2, 'b')[5]
 struct<map(1, a, 2, b)[5]:string>
 -- !query output
 NULL
+
+
+-- !query
+CREATE TEMPORARY VIEW t1 AS SELECT * FROM VALUES
+  (map(1, 'a', 2, 'b'), map(2, 'b', 1, 'a')),
+  (map(2, 'b', 1, 'a'), map(2, 'b', 1, 'A')),
+  (map(3, 'c', 1, 'a'), map(4, 'd', 3, 'c')),
+  (map(3, 'c', 1, 'a'), map(3, 'c')),
+  (map(3, 'c'), map(4, 'd', 3, 'c')),
+  (map(), map(1, 'a')),
+  (map(1, 'a'), map())
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t2 AS SELECT * FROM VALUES
+  (array(map(1, 'a', 2, 'b')), array(map(2, 'b', 1, 'a'))),
+  (array(map(2, 'b', 1, 'a')), array(map(2, 'b', 1, 'A'))),
+  (array(map(3, 'c', 1, 'a')), array(map(4, 'd', 3, 'c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t3 AS SELECT * FROM VALUES
+  (struct(map(1, 'a', 2, 'b')), struct(map(2, 'b', 1, 'a'))),
+  (struct(map(2, 'b', 1, 'a')), struct(map(2, 'b', 1, 'A'))),
+  (struct(map(3, 'c', 1, 'a')), struct(map(4, 'd', 3, 'c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t4 AS SELECT * FROM VALUES
+  (map(1, map(1, 'a', 2, 'b'), 2, map(3, 'c', 4, 'd')), map(2, map(4, 'd', 3, 
'c'), 1, map(2, 'b', 1, 'a'))),
+  (map(2, map(4, 'd', 3, 'c'), 1, map(2, 'b', 1, 'a')), map(2, map(4, 'd', 3, 
'c'), 1, map(2, 'b', 1, 'A'))),
+  (map(3, map(5, 'e', 6, 'f'), 1, map(1, 'a', 2, 'b')), map(4, map(7, 'g', 8, 
'h'), 3, map(6, 'f', 5, 'e')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t5 AS SELECT * FROM VALUES
+  (map(array(1, 2), 'a', array(3, 4), 'b'), map(array(3, 4), 'b', array(1, 2), 
'a')),
+  (map(array(3, 4), 'b', array(1, 2), 'a'), map(array(4, 3), 'b', array(1, 2), 
'a')),
+  (map(array(5, 6), 'a', array(1, 2), 'a'), map(array(2, 1), 'a', array(5, 6), 
'c'))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t6 AS SELECT * FROM VALUES
+  (map(1, array(1, 2), 2, array(3, 4)), map(2, array(3, 4), 1, array(1, 2))),
+  (map(2, array(3, 4), 1, array(1, 2)), map(2, array(4, 3), 1, array(1, 2))),
+  (map(3, array(5, 6), 1, array(1, 2)), map(1, array(2, 1), 3, array(5, 6)))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t7 AS SELECT * FROM VALUES
+  (map(struct(1), 'a', struct(2), 'b'), map(struct(2), 'b', struct(1), 'a')),
+  (map(struct(2), 'b', struct(1), 'a'), map(struct(1), 'b', struct(2), 'a')),
+  (map(struct(3), 'c', struct(1), 'a'), map(struct(4), 'd', struct(3), 'c'))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+CREATE TEMPORARY VIEW t8 AS SELECT * FROM VALUES
+  (map(1, struct('a'), 2, struct('b')), map(2, struct('b'), 1, struct('a'))),
+  (map(2, struct('b'), 1, struct('a')), map(2, struct('a'), 1, struct('b'))),
+  (map(3, struct('c'), 1, struct('a')), map(4, struct('d'), 3, struct('c')))
+AS t(v1, v2)
+-- !query schema
+struct<>
+-- !query output
+
+
+
+-- !query
+SELECT * FROM t1 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{}     {1:"a"}
+{1:"a"}        {}
+{1:"a",2:"b"}  {1:"A",2:"b"}
+{1:"a",2:"b"}  {1:"a",2:"b"}
+{1:"a",3:"c"}  {3:"c"}
+{1:"a",3:"c"}  {3:"c",4:"d"}
+{3:"c"}        {3:"c",4:"d"}
+
+
+-- !query
+SELECT * FROM t2 ORDER BY v1, v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}]
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+[{1:"a",3:"c"}]        [{3:"c",4:"d"}]
+
+
+-- !query
+SELECT * FROM t3 ORDER BY v1, v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+{"col1":{1:"a",3:"c"}} {"col1":{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t4 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}
+
+
+-- !query
+SELECT * FROM t5 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[4,3]:"b"}
+{[1,2]:"a",[5,6]:"a"}  {[2,1]:"a",[5,6]:"c"}
+
+
+-- !query
+SELECT * FROM t6 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[4,3]}
+{1:[1,2],3:[5,6]}      {1:[2,1],3:[5,6]}
+
+
+-- !query
+SELECT * FROM t7 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"}
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"b",{"col1":2}:"a"}
+{{"col1":1}:"a",{"col1":3}:"c"}        {{"col1":3}:"c",{"col1":4}:"d"}
+
+
+-- !query
+SELECT * FROM t8 ORDER BY v1, v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}}
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"b"},2:{"col1":"a"}}
+{1:{"col1":"a"},3:{"col1":"c"}}        {3:{"col1":"c"},4:{"col1":"d"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"a",2:"b"}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 = v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 = v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+
+
+-- !query
+SELECT * FROM t4 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t5 WHERE v1 = v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}
+
+
+-- !query
+SELECT * FROM t6 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}
+
+
+-- !query
+SELECT * FROM t7 WHERE v1 = v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"}
+
+
+-- !query
+SELECT * FROM t8 WHERE v1 = v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 <=> v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"a",2:"b"}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 <=> v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 <=> v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}
+
+
+-- !query
+SELECT * FROM t1 WHERE v1 > v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"A",2:"b"}
+{1:"a"}        {}
+
+
+-- !query
+SELECT * FROM t2 WHERE v1 > v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}]
+
+
+-- !query
+SELECT * FROM t3 WHERE v1 > v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}
+
+
+-- !query
+SELECT * FROM t1 l, t1 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,string>,v2:map<int,string>,v1:map<int,string>,v2:map<int,string>>
+-- !query output
+{1:"a",2:"b"}  {1:"A",2:"b"}   {1:"a",2:"b"}   {1:"A",2:"b"}
+{1:"a",2:"b"}  {1:"a",2:"b"}   {1:"a",2:"b"}   {1:"a",2:"b"}
+{1:"a",3:"c"}  {3:"c",4:"d"}   {1:"a",3:"c"}   {3:"c",4:"d"}
+{1:"a",3:"c"}  {3:"c"} {1:"a",3:"c"}   {3:"c"}
+{1:"a"}        {}      {1:"a"} {}
+{3:"c"}        {3:"c",4:"d"}   {3:"c"} {3:"c",4:"d"}
+{}     {1:"a"} {}      {1:"a"}
+
+
+-- !query
+SELECT * FROM t2 l, t2 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:array<map<int,string>>,v2:array<map<int,string>>,v1:array<map<int,string>>,v2:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]        [{1:"A",2:"b"}] [{1:"a",2:"b"}] [{1:"A",2:"b"}]
+[{1:"a",2:"b"}]        [{1:"a",2:"b"}] [{1:"a",2:"b"}] [{1:"a",2:"b"}]
+[{1:"a",3:"c"}]        [{3:"c",4:"d"}] [{1:"a",3:"c"}] [{3:"c",4:"d"}]
+
+
+-- !query
+SELECT * FROM t3 l, t3 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>,v1:struct<col1:map<int,string>>,v2:struct<col1:map<int,string>>>
+-- !query output
+{"col1":{1:"a",2:"b"}} {"col1":{1:"A",2:"b"}}  {"col1":{1:"a",2:"b"}}  
{"col1":{1:"A",2:"b"}}
+{"col1":{1:"a",2:"b"}} {"col1":{1:"a",2:"b"}}  {"col1":{1:"a",2:"b"}}  
{"col1":{1:"a",2:"b"}}
+{"col1":{1:"a",3:"c"}} {"col1":{3:"c",4:"d"}}  {"col1":{1:"a",3:"c"}}  
{"col1":{3:"c",4:"d"}}
+
+
+-- !query
+SELECT * FROM t4 l, t4 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,map<int,string>>,v2:map<int,map<int,string>>,v1:map<int,map<int,string>>,v2:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}       
{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       {1:{1:"A",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       
{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}       {1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}       
{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}       {3:{5:"e",6:"f"},4:{7:"g",8:"h"}}
+
+
+-- !query
+SELECT * FROM t5 l, t5 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<array<int>,string>,v2:map<array<int>,string>,v1:map<array<int>,string>,v2:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[3,4]:"b"}   {[1,2]:"a",[3,4]:"b"}   
{[1,2]:"a",[3,4]:"b"}
+{[1,2]:"a",[3,4]:"b"}  {[1,2]:"a",[4,3]:"b"}   {[1,2]:"a",[3,4]:"b"}   
{[1,2]:"a",[4,3]:"b"}
+{[1,2]:"a",[5,6]:"a"}  {[2,1]:"a",[5,6]:"c"}   {[1,2]:"a",[5,6]:"a"}   
{[2,1]:"a",[5,6]:"c"}
+
+
+-- !query
+SELECT * FROM t6 l, t6 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,array<int>>,v2:map<int,array<int>>,v1:map<int,array<int>>,v2:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[3,4]}       {1:[1,2],2:[3,4]}       
{1:[1,2],2:[3,4]}
+{1:[1,2],2:[3,4]}      {1:[1,2],2:[4,3]}       {1:[1,2],2:[3,4]}       
{1:[1,2],2:[4,3]}
+{1:[1,2],3:[5,6]}      {1:[2,1],3:[5,6]}       {1:[1,2],3:[5,6]}       
{1:[2,1],3:[5,6]}
+
+
+-- !query
+SELECT * FROM t7 l, t7 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>,v1:map<struct<col1:int>,string>,v2:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"a",{"col1":2}:"b"} 
{{"col1":1}:"a",{"col1":2}:"b"} {{"col1":1}:"a",{"col1":2}:"b"}
+{{"col1":1}:"a",{"col1":2}:"b"}        {{"col1":1}:"b",{"col1":2}:"a"} 
{{"col1":1}:"a",{"col1":2}:"b"} {{"col1":1}:"b",{"col1":2}:"a"}
+{{"col1":1}:"a",{"col1":3}:"c"}        {{"col1":3}:"c",{"col1":4}:"d"} 
{{"col1":1}:"a",{"col1":3}:"c"} {{"col1":3}:"c",{"col1":4}:"d"}
+
+
+-- !query
+SELECT * FROM t8 l, t8 r WHERE l.v1 = r.v1 AND l.v2 = r.v2
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>,v1:map<int,struct<col1:string>>,v2:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"a"},2:{"col1":"b"}} 
{1:{"col1":"a"},2:{"col1":"b"}} {1:{"col1":"a"},2:{"col1":"b"}}
+{1:{"col1":"a"},2:{"col1":"b"}}        {1:{"col1":"b"},2:{"col1":"a"}} 
{1:{"col1":"a"},2:{"col1":"b"}} {1:{"col1":"b"},2:{"col1":"a"}}
+{1:{"col1":"a"},3:{"col1":"c"}}        {3:{"col1":"c"},4:{"col1":"d"}} 
{1:{"col1":"a"},3:{"col1":"c"}} {3:{"col1":"c"},4:{"col1":"d"}}
+
+
+-- !query
+SELECT v1, count(1) FROM t1 GROUP BY v1
+-- !query schema
+struct<v1:map<int,string>,count(1):bigint>
+-- !query output
+{1:"a",2:"b"}  2
+{1:"a",3:"c"}  2
+{1:"a"}        1
+{3:"c"}        1
+{}     1
+
+
+-- !query
+SELECT v1, count(1) FROM t2 GROUP BY v1
+-- !query schema
+struct<v1:array<map<int,string>>,count(1):bigint>
+-- !query output
+[{1:"a",2:"b"}]        2
+[{1:"a",3:"c"}]        1
+
+
+-- !query
+SELECT v1, count(1) FROM t3 GROUP BY v1
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,count(1):bigint>
+-- !query output
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",3:"c"}} 1
+
+
+-- !query
+SELECT v1, count(1) FROM t4 GROUP BY v1
+-- !query schema
+struct<v1:map<int,map<int,string>>,count(1):bigint>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      1
+
+
+-- !query
+SELECT v1, count(1) FROM t5 GROUP BY v1
+-- !query schema
+struct<v1:map<array<int>,string>,count(1):bigint>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[5,6]:"a"}  1
+
+
+-- !query
+SELECT v1, count(1) FROM t6 GROUP BY v1
+-- !query schema
+struct<v1:map<int,array<int>>,count(1):bigint>
+-- !query output
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],3:[5,6]}      1
+
+
+-- !query
+SELECT v1, count(1) FROM t7 GROUP BY v1
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,count(1):bigint>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":3}:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) FROM t8 GROUP BY v1
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,count(1):bigint>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},3:{"col1":"c"}}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t1 ORDER BY v1
+-- !query schema
+struct<v1:map<int,string>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{}     1
+{1:"a"}        1
+{1:"a",2:"b"}  2
+{1:"a",2:"b"}  2
+{1:"a",3:"c"}  2
+{1:"a",3:"c"}  2
+{3:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t2 ORDER BY v1
+-- !query schema
+struct<v1:array<map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+[{1:"a",2:"b"}]        2
+[{1:"a",2:"b"}]        2
+[{1:"a",3:"c"}]        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t3 ORDER BY v1
+-- !query schema
+struct<v1:struct<col1:map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",2:"b"}} 2
+{"col1":{1:"a",3:"c"}} 1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t4 ORDER BY v1
+-- !query schema
+struct<v1:map<int,map<int,string>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}      2
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}      1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t5 ORDER BY v1
+-- !query schema
+struct<v1:map<array<int>,string>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[3,4]:"b"}  2
+{[1,2]:"a",[5,6]:"a"}  1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t6 ORDER BY v1
+-- !query schema
+struct<v1:map<int,array<int>>,count(1) OVER (PARTITION BY v1 ROWS BETWEEN 
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],2:[3,4]}      2
+{1:[1,2],3:[5,6]}      1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t7 ORDER BY v1
+-- !query schema
+struct<v1:map<struct<col1:int>,string>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":2}:"b"}        2
+{{"col1":1}:"a",{"col1":3}:"c"}        1
+
+
+-- !query
+SELECT v1, count(1) OVER(PARTITION BY v1) FROM t8 ORDER BY v1
+-- !query schema
+struct<v1:map<int,struct<col1:string>>,count(1) OVER (PARTITION BY v1 ROWS 
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING):bigint>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},2:{"col1":"b"}}        2
+{1:{"col1":"a"},3:{"col1":"c"}}        1
+
+
+-- !query
+(SELECT v1 FROM t1) INTERSECT (SELECT v1 FROM t1 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<int,string>>
+-- !query output
+{1:"a",2:"b"}
+{1:"a"}
+{}
+
+
+-- !query
+(SELECT v1 FROM t2) INTERSECT (SELECT v1 FROM t2 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:array<map<int,string>>>
+-- !query output
+[{1:"a",2:"b"}]
+[{1:"a",3:"c"}]
+
+
+-- !query
+(SELECT v1 FROM t3) INTERSECT (SELECT v1 FROM t3 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<>
+-- !query output
+java.lang.UnsupportedOperationException
+BroadcastExchange does not support the execute() code path.
+
+
+-- !query
+(SELECT v1 FROM t4) INTERSECT (SELECT v1 FROM t4 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<int,map<int,string>>>
+-- !query output
+{1:{1:"a",2:"b"},2:{3:"c",4:"d"}}
+{1:{1:"a",2:"b"},3:{5:"e",6:"f"}}
+
+
+-- !query
+(SELECT v1 FROM t5) INTERSECT (SELECT v1 FROM t5 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<array<int>,string>>
+-- !query output
+{[1,2]:"a",[3,4]:"b"}
+{[1,2]:"a",[5,6]:"a"}
+
+
+-- !query
+(SELECT v1 FROM t6) INTERSECT (SELECT v1 FROM t6 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<int,array<int>>>
+-- !query output
+{1:[1,2],2:[3,4]}
+{1:[1,2],3:[5,6]}
+
+
+-- !query
+(SELECT v1 FROM t7) INTERSECT (SELECT v1 FROM t7 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<struct<col1:int>,string>>
+-- !query output
+{{"col1":1}:"a",{"col1":2}:"b"}
+{{"col1":1}:"a",{"col1":3}:"c"}
+
+
+-- !query
+(SELECT v1 FROM t8) INTERSECT (SELECT v1 FROM t8 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<int,struct<col1:string>>>
+-- !query output
+{1:{"col1":"a"},2:{"col1":"b"}}
+{1:{"col1":"a"},3:{"col1":"c"}}
+
+
+-- !query
+(SELECT v1 FROM t1) EXCEPT (SELECT v1 FROM t1 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:map<int,string>>
+-- !query output
+{1:"a",3:"c"}
+{3:"c"}
+
+
+-- !query
+(SELECT v1 FROM t2) EXCEPT (SELECT v1 FROM t2 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<v1:array<map<int,string>>>
+-- !query output
+
+
+
+-- !query
+(SELECT v1 FROM t3) EXCEPT (SELECT v1 FROM t3 ORDER BY v1 LIMIT 3)
+-- !query schema
+struct<>
+-- !query output
+java.lang.UnsupportedOperationException

Review comment:
       ditto




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to