github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/opt/memo/testdata/stats/values (about)

     1  norm
     2  SELECT * FROM (VALUES (1, 2), (1, 2), (1, 3), (2, 3)) AS q(x, y) WHERE x = 5 AND y = 3
     3  ----
     4  select
     5   ├── columns: x:1(int!null) y:2(int!null)
     6   ├── cardinality: [0 - 4]
     7   ├── stats: [rows=1.3, distinct(1)=1, null(1)=0, distinct(2)=1, null(2)=0, distinct(1,2)=1, null(1,2)=0]
     8   ├── fd: ()-->(1,2)
     9   ├── values
    10   │    ├── columns: column1:1(int!null) column2:2(int!null)
    11   │    ├── cardinality: [4 - 4]
    12   │    ├── stats: [rows=4, distinct(1)=2, null(1)=0, distinct(2)=2, null(2)=0, distinct(1,2)=3, null(1,2)=0]
    13   │    ├── (1, 2) [type=tuple{int, int}]
    14   │    ├── (1, 2) [type=tuple{int, int}]
    15   │    ├── (1, 3) [type=tuple{int, int}]
    16   │    └── (2, 3) [type=tuple{int, int}]
    17   └── filters
    18        ├── column1:1 = 5 [type=bool, outer=(1), constraints=(/1: [/5 - /5]; tight), fd=()-->(1)]
    19        └── column2:2 = 3 [type=bool, outer=(2), constraints=(/2: [/3 - /3]; tight), fd=()-->(2)]
    20  
    21  norm
    22  SELECT x, y
    23  FROM (VALUES (1, 2), (1, 2), (1, 3), (2, 3), (unique_rowid(), 4)) AS q(x, y)
    24  GROUP BY x, y
    25  ----
    26  distinct-on
    27   ├── columns: x:1(int) y:2(int!null)
    28   ├── grouping columns: column1:1(int) column2:2(int!null)
    29   ├── cardinality: [1 - 5]
    30   ├── volatile, side-effects
    31   ├── stats: [rows=4, distinct(1,2)=4, null(1,2)=0]
    32   ├── key: (1,2)
    33   └── values
    34        ├── columns: column1:1(int) column2:2(int!null)
    35        ├── cardinality: [5 - 5]
    36        ├── volatile, side-effects
    37        ├── stats: [rows=5, distinct(1,2)=4, null(1,2)=0]
    38        ├── (1, 2) [type=tuple{int, int}]
    39        ├── (1, 2) [type=tuple{int, int}]
    40        ├── (1, 3) [type=tuple{int, int}]
    41        ├── (2, 3) [type=tuple{int, int}]
    42        └── (unique_rowid(), 4) [type=tuple{int, int}]
    43  
    44  norm
    45  SELECT * FROM (VALUES (1), (1), (1), (2))
    46  ----
    47  values
    48   ├── columns: column1:1(int!null)
    49   ├── cardinality: [4 - 4]
    50   ├── stats: [rows=4]
    51   ├── (1,) [type=tuple{int}]
    52   ├── (1,) [type=tuple{int}]
    53   ├── (1,) [type=tuple{int}]
    54   └── (2,) [type=tuple{int}]
    55  
    56  norm
    57  SELECT * FROM (VALUES (1), (1), (1), (2)) AS q(x) WHERE x = 1
    58  ----
    59  select
    60   ├── columns: x:1(int!null)
    61   ├── cardinality: [0 - 4]
    62   ├── stats: [rows=2, distinct(1)=1, null(1)=0]
    63   ├── fd: ()-->(1)
    64   ├── values
    65   │    ├── columns: column1:1(int!null)
    66   │    ├── cardinality: [4 - 4]
    67   │    ├── stats: [rows=4, distinct(1)=2, null(1)=0]
    68   │    ├── (1,) [type=tuple{int}]
    69   │    ├── (1,) [type=tuple{int}]
    70   │    ├── (1,) [type=tuple{int}]
    71   │    └── (2,) [type=tuple{int}]
    72   └── filters
    73        └── column1:1 = 1 [type=bool, outer=(1), constraints=(/1: [/1 - /1]; tight), fd=()-->(1)]
    74  
    75  norm colstat=1
    76  SELECT * FROM (VALUES (1), (NULL), (NULL), (2))
    77  ----
    78  values
    79   ├── columns: column1:1(int)
    80   ├── cardinality: [4 - 4]
    81   ├── stats: [rows=4, distinct(1)=3, null(1)=2]
    82   ├── (1,) [type=tuple{int}]
    83   ├── (NULL,) [type=tuple{int}]
    84   ├── (NULL,) [type=tuple{int}]
    85   └── (2,) [type=tuple{int}]
    86  
    87  norm colstat=1
    88  SELECT * FROM (VALUES (NULL), (NULL), (NULL), (NULL))
    89  ----
    90  values
    91   ├── columns: column1:1(unknown)
    92   ├── cardinality: [4 - 4]
    93   ├── stats: [rows=4, distinct(1)=1, null(1)=4]
    94   ├── (NULL,) [type=tuple{unknown}]
    95   ├── (NULL,) [type=tuple{unknown}]
    96   ├── (NULL,) [type=tuple{unknown}]
    97   └── (NULL,) [type=tuple{unknown}]
    98  
    99  norm colstat=(1,2)
   100  SELECT * FROM (VALUES (NULL,1), (1,NULL), (NULL,NULL), (1,2))
   101  ----
   102  values
   103   ├── columns: column1:1(int) column2:2(int)
   104   ├── cardinality: [4 - 4]
   105   ├── stats: [rows=4, distinct(1,2)=4, null(1,2)=1]
   106   ├── (NULL, 1) [type=tuple{int, int}]
   107   ├── (1, NULL) [type=tuple{int, int}]
   108   ├── (NULL, NULL) [type=tuple{int, int}]
   109   └── (1, 2) [type=tuple{int, int}]
   110  
   111  # Regression test for #35715.
   112  norm colstat=1 colstat=2
   113  SELECT * FROM (VALUES (NULL, 1))
   114  ----
   115  values
   116   ├── columns: column1:1(unknown) column2:2(int!null)
   117   ├── cardinality: [1 - 1]
   118   ├── stats: [rows=1, distinct(1)=1, null(1)=1, distinct(2)=1, null(2)=0]
   119   ├── key: ()
   120   ├── fd: ()-->(1,2)
   121   └── (NULL, 1) [type=tuple{unknown, int}]
   122  
   123  norm colstat=1 colstat=2 colstat=(1,2)
   124  SELECT * FROM (VALUES (NULL, 2), (2, NULL))
   125  ----
   126  values
   127   ├── columns: column1:1(int) column2:2(int)
   128   ├── cardinality: [2 - 2]
   129   ├── stats: [rows=2, distinct(1)=2, null(1)=1, distinct(2)=2, null(2)=1, distinct(1,2)=2, null(1,2)=0]
   130   ├── (NULL, 2) [type=tuple{int, int}]
   131   └── (2, NULL) [type=tuple{int, int}]