// Generated by scripts/generate_duckdb_fixtures.js. Do not edit by hand.

///|
pub let fixture_cases : Array[FixtureCase] = [
  {
    name: "basic select",
    sql: "select 1 as a, NULL as b, 'duck' as c",
    columns: ["a", "b", "c"],
    rows: [["1", "", "duck"]],
    nulls: [[false, true, false]],
  },
  {
    name: "multi row values",
    sql: "select * from (values (1, 'alpha'), (2, NULL), (3, 'gamma')) as t(id, label)",
    columns: ["id", "label"],
    rows: [["1", "alpha"], ["2", ""], ["3", "gamma"]],
    nulls: [[false, false], [false, true], [false, false]],
  },
  {
    name: "boolean and double",
    sql: "select true as ok, false as no, 3.5 as pi",
    columns: ["ok", "no", "pi"],
    rows: [["true", "false", "3.5"]],
    nulls: [[false, false, false]],
  },
  {
    name: "bigint extremes",
    sql: "select cast(9223372036854775807 as BIGINT) as max_bigint, cast(-9223372036854775808 as BIGINT) as min_bigint",
    columns: ["max_bigint", "min_bigint"],
    rows: [["9223372036854775807", "-9223372036854775808"]],
    nulls: [[false, false]],
  },
  {
    name: "simple aggregate",
    sql: "select count(*) as total, sum(i) as sum from (values (1), (2), (3)) as t(i)",
    columns: ["total", "sum"],
    rows: [["3", "6"]],
    nulls: [[false, false]],
  },
  {
    name: "date literal",
    sql: "select DATE '2024-06-03' as dt",
    columns: ["dt"],
    rows: [["2024-06-03"]],
    nulls: [[false]],
  },
  {
    name: "time literal",
    sql: "select TIME '12:34:56.789' as tm",
    columns: ["tm"],
    rows: [["12:34:56.789"]],
    nulls: [[false]],
  },
  {
    name: "timestamp literal",
    sql: "select TIMESTAMP '2024-06-03 12:34:56.789' as ts",
    columns: ["ts"],
    rows: [["2024-06-03 12:34:56.789"]],
    nulls: [[false]],
  },
  {
    name: "epoch date arithmetic",
    sql: "select CAST('1970-01-01'::DATE - INTERVAL '1 day' AS DATE) as epoch_minus_day, CAST('1970-01-01'::DATE + INTERVAL '1 day' AS DATE) as epoch_plus_day",
    columns: ["epoch_minus_day", "epoch_plus_day"],
    rows: [["1969-12-31", "1970-01-02"]],
    nulls: [[false, false]],
  },
  {
    name: "decimal positive",
    sql: "select CAST(123.456 AS DECIMAL(10,3)) as dec",
    columns: ["dec"],
    rows: [["123.456"]],
    nulls: [[false]],
  },
  {
    name: "decimal negative",
    sql: "select CAST(-999999.99 AS DECIMAL(9,2)) as neg_dec",
    columns: ["neg_dec"],
    rows: [["-999999.99"]],
    nulls: [[false]],
  },
  {
    name: "smallint extremes",
    sql: "select CAST(32767 AS SMALLINT) as max_smallint, CAST(-32768 AS SMALLINT) as min_smallint",
    columns: ["max_smallint", "min_smallint"],
    rows: [["32767", "-32768"]],
    nulls: [[false, false]],
  },
  {
    name: "tinyint range",
    sql: "select CAST(127 AS TINYINT) as max_tinyint, CAST(-128 AS TINYINT) as min_tinyint",
    columns: ["max_tinyint", "min_tinyint"],
    rows: [["127", "-128"]],
    nulls: [[false, false]],
  },
  {
    name: "integer extremes",
    sql: "select CAST(2147483647 AS INTEGER) as max_int, CAST(-2147483648 AS INTEGER) as min_int",
    columns: ["max_int", "min_int"],
    rows: [["2147483647", "-2147483648"]],
    nulls: [[false, false]],
  },
  {
    name: "string escapes",
    sql: "select 'string with ''quotes''' as quoted, 'back\\\\slash' as backslash",
    columns: ["quoted", "backslash"],
    rows: [["string with 'quotes'", "back\\\\slash"]],
    nulls: [[false, false]],
  },
  {
    name: "string whitespace",
    sql: "select 'multi\nline' as newline, 'tab\there' as tab",
    columns: ["newline", "tab"],
    rows: [["multi\nline", "tab\there"]],
    nulls: [[false, false]],
  },
  {
    name: "empty strings",
    sql: "select '' as empty_string, '   ' as spaces",
    columns: ["empty_string", "spaces"],
    rows: [["", "   "]],
    nulls: [[false, false]],
  },
  {
    name: "single null",
    sql: "select NULL as only_null",
    columns: ["only_null"],
    rows: [[""]],
    nulls: [[true]],
  },
  {
    name: "multiple nulls",
    sql: "select NULL as a, NULL as b, NULL as c",
    columns: ["a", "b", "c"],
    rows: [["", "", ""]],
    nulls: [[true, true, true]],
  },
  {
    name: "mixed nulls",
    sql: "select 1 as col1, NULL as col2, 2 as col3, NULL as col4, 3 as col5",
    columns: ["col1", "col2", "col3", "col4", "col5"],
    rows: [["1", "", "2", "", "3"]],
    nulls: [[false, true, false, true, false]],
  },
  {
    name: "range function",
    sql: "select * from range(5)",
    columns: ["range"],
    rows: [["0"], ["1"], ["2"], ["3"], ["4"]],
    nulls: [[false], [false], [false], [false], [false]],
  },
  {
    name: "range with expression",
    sql: "select range, range * 2 as double_i from range(3)",
    columns: ["range", "double_i"],
    rows: [["0", "0"], ["1", "2"], ["2", "4"]],
    nulls: [[false, false], [false, false], [false, false]],
  },
  {
    name: "range with modulo",
    sql: "select range, range % 2 = 0 as is_even from range(4)",
    columns: ["range", "is_even"],
    rows: [["0", "true"], ["1", "false"], ["2", "true"], ["3", "false"]],
    nulls: [[false, false], [false, false], [false, false], [false, false]],
  },
  {
    name: "multiple aggregates",
    sql: "select COUNT(*) as cnt, MIN(i) as min_val, MAX(i) as max_val, AVG(i) as avg_val from (values (1), (5), (10)) as t(i)",
    columns: ["cnt", "min_val", "max_val", "avg_val"],
    rows: [["3", "1", "10", "5.333333333333333"]],
    nulls: [[false, false, false, false]],
  },
  {
    name: "sum aggregate",
    sql: "select SUM(i) as total from (values (1), (2), (3), (4), (5)) as t(i)",
    columns: ["total"],
    rows: [["15"]],
    nulls: [[false]],
  },
  {
    name: "boolean logic",
    sql: "select true and false as and_result, true or false as or_result, not true as not_result",
    columns: ["and_result", "or_result", "not_result"],
    rows: [["false", "true", "false"]],
    nulls: [[false, false, false]],
  },
  {
    name: "comparison boolean",
    sql: "select i > 2 as greater_than from (values (1), (2), (3)) as t(i)",
    columns: ["greater_than"],
    rows: [["false"], ["false"], ["true"]],
    nulls: [[false], [false], [false]],
  },
  {
    name: "cast str to int",
    sql: "select CAST('42' AS INTEGER) as str_to_int, CAST(3.14 AS VARCHAR) as dbl_to_str",
    columns: ["str_to_int", "dbl_to_str"],
    rows: [["42", "3.14"]],
    nulls: [[false, false]],
  },
  {
    name: "cast null types",
    sql: "select CAST(NULL AS VARCHAR) as null_varchar, CAST(NULL AS INTEGER) as null_int",
    columns: ["null_varchar", "null_int"],
    rows: [["", ""]],
    nulls: [[true, true]],
  },
  {
    name: "float special values",
    sql: "select 'NaN'::DOUBLE as nan_val, 'Infinity'::DOUBLE as inf_val, '-Infinity'::DOUBLE as neg_inf_val",
    columns: ["nan_val", "inf_val", "neg_inf_val"],
    rows: [["nan", "inf", "-inf"]],
    nulls: [[false, false, false]],
  },
  {
    name: "double precision",
    sql: "select 3.14159265359 as pi, 2.71828182846 as e, 1.41421356237 as sqrt2",
    columns: ["pi", "e", "sqrt2"],
    rows: [["3.14159265359", "2.71828182846", "1.41421356237"]],
    nulls: [[false, false, false]],
  },
  {
    name: "null in values",
    sql: "select * from (values (1, NULL), (NULL, 2), (3, 3)) as t(a, b)",
    columns: ["a", "b"],
    rows: [["1", ""], ["", "2"], ["3", "3"]],
    nulls: [[false, true], [true, false], [false, false]],
  },
  {
    name: "case expression",
    sql: "select i, case when i < 2 then 'small' when i < 4 then 'medium' else 'large' end as size from (values (1), (2), (3), (4), (5)) as t(i)",
    columns: ["i", "size"],
    rows: [
      ["1", "small"],
      ["2", "medium"],
      ["3", "medium"],
      ["4", "large"],
      ["5", "large"],
    ],
    nulls: [
      [false, false],
      [false, false],
      [false, false],
      [false, false],
      [false, false],
    ],
  },
  {
    name: "string concatenation",
    sql: "select 'hello' || ' ' || 'world' as greeting",
    columns: ["greeting"],
    rows: [["hello world"]],
    nulls: [[false]],
  },
  {
    name: "coalesce function",
    sql: "select coalesce(NULL, 'first') as a, coalesce(NULL, NULL, 'fallback') as b, coalesce('value', 'fallback') as c",
    columns: ["a", "b", "c"],
    rows: [["first", "fallback", "value"]],
    nulls: [[false, false, false]],
  },
]