Skip to content

R13 - Correlated NOT EXISTS anti-filter drops rows when derived alias shadows table #7392

@Pavan-Nambi

Description

@Pavan-Nambi
  CREATE TABLE l(
    id INTEGER PRIMARY KEY,
    k INTEGER,
    bucket INTEGER,
    txt TEXT,
    flag INTEGER
  );

  CREATE TABLE r(
    id INTEGER PRIMARY KEY,
    k INTEGER,
    bucket INTEGER,
    txt TEXT,
    flag INTEGER
  );

  INSERT INTO l VALUES (1, 1, 1, 'x', 0);
  INSERT INTO r VALUES
    (1, 1, 1, 'x', 0),
    (2, 1, 1, 'y', 0);

  SELECT 'anti', L.id
  FROM (
    SELECT rb.id, rb.k, rb.bucket, rb.txt, rb.flag
    FROM r AS rb
    JOIN l AS la ON rb.bucket = la.id
  ) AS L
  WHERE NOT EXISTS (
    SELECT 1
    FROM l AS R
    WHERE L.flag > R.txt
  )

  UNION ALL

  SELECT 'left', L.id
  FROM (
    SELECT rb.id, rb.k, rb.bucket, rb.txt, rb.flag
    FROM r AS rb
    JOIN l AS la ON rb.bucket = la.id
  ) AS L
  LEFT JOIN (
    SELECT R.*, 1 AS marker
    FROM l AS R
  ) AS R
  ON L.flag > R.txt
  WHERE R.marker IS NULL
  ORDER BY 1, 2;

Turso output:

anti|1
left|1
left|2

SQLite output:

anti|1
anti|2
left|1
left|2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions