Skip to content

x != y produces wrong value (true) when x and y are both null-valued #1968

@christopherswenson

Description

@christopherswenson
run: duckdb.sql("""
  SELECT 'null' as name, null as value
  UNION ALL 
  SELECT 'not null' as name,  1 as value
""") -> {
  group_by: value
  group_by: `null != null` is null != null
  group_by: `value != null` is value != null
  group_by: `value != value` is value != value
  group_by: `null != value` is null != value
}

Produces

SELECT 
   base."value" as "value",
   false as "null != null",
   base."value" IS NOT NULL as "value != null",
   NOT(COALESCE(base."value"=base."value", FALSE)) as "value != value",
   base."value"IS NOT NULL as "null != value"
FROM (
  SELECT 'null' as name, null as value
  UNION ALL 
  SELECT 'not null' as name,  1 as value
) as base
GROUP BY 1,2,3,4,5
ORDER BY 1 asc NULLS LAST
value null != null value != null value != value null != value
1 false true false true
false false true false

Metadata

Metadata

Labels

L1Suitable for a first tasklanguageAn issue in the Malloy language

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions