github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/logictest/testdata/logic_test/int_size (about)

     1  # LogicTest: !3node-tenant
     2  subtest defaults
     3  
     4  query T
     5  SHOW default_int_size
     6  ----
     7  8
     8  
     9  subtest set_int4
    10  
    11  statement ok
    12  SET default_int_size=4
    13  
    14  query T
    15  SHOW default_int_size
    16  ----
    17  4
    18  
    19  statement ok
    20  CREATE TABLE i4 (i4 INT)
    21  
    22  query TT
    23  SHOW CREATE TABLE i4
    24  ----
    25  i4  CREATE TABLE i4 (
    26      i4 INT4 NULL,
    27      FAMILY "primary" (i4, rowid)
    28  )
    29  
    30  subtest set_int8
    31  
    32  statement ok
    33  SET default_int_size=8
    34  
    35  query T
    36  SHOW default_int_size
    37  ----
    38  8
    39  
    40  statement ok
    41  CREATE TABLE i8 (i8 INT)
    42  
    43  query TT
    44  SHOW CREATE TABLE i8
    45  ----
    46  i8  CREATE TABLE i8 (
    47      i8 INT8 NULL,
    48      FAMILY "primary" (i8, rowid)
    49  )
    50  
    51  # https://github.com/cockroachdb/cockroach/issues/32846
    52  subtest issue_32846
    53  
    54  statement ok
    55  SET default_int_size=8
    56  
    57  # Parsing and evaluation are async, so the setting won't take
    58  # effect until the next statement is evaluated.
    59  statement ok
    60  SET default_int_size=4; CREATE TABLE late4 (a INT)
    61  
    62  query TT
    63  SHOW CREATE TABLE late4
    64  ----
    65  late4  CREATE TABLE late4 (
    66         a INT8 NULL,
    67         FAMILY "primary" (a, rowid)
    68  )
    69  
    70  query T
    71  SHOW default_int_size
    72  ----
    73  4
    74  
    75  subtest set_bad_value
    76  
    77  statement error pq: only 4 or 8 are supported by default_int_size
    78  SET default_int_size=2
    79  
    80  # We want to check the combinations of default_int_size and
    81  # experimental_serialization_normalization.
    82  
    83  subtest serial_rowid
    84  # When using rowid, we should always see INT8, since that's the
    85  # return type of unique_rowid()
    86  
    87  statement ok
    88  SET default_int_size=4; SET serial_normalization='rowid';
    89  
    90  statement ok
    91  CREATE TABLE i4_rowid (a SERIAL)
    92  
    93  query TT
    94  SHOW CREATE TABLE i4_rowid
    95  ----
    96  i4_rowid  CREATE TABLE i4_rowid (
    97            a INT8 NOT NULL DEFAULT unique_rowid(),
    98            FAMILY "primary" (a, rowid)
    99  )
   100  
   101  statement ok
   102  SET default_int_size=8; SET serial_normalization='rowid';
   103  
   104  statement ok
   105  CREATE TABLE i8_rowid (a SERIAL)
   106  
   107  query TT
   108  SHOW CREATE TABLE i8_rowid
   109  ----
   110  i8_rowid  CREATE TABLE i8_rowid (
   111            a INT8 NOT NULL DEFAULT unique_rowid(),
   112            FAMILY "primary" (a, rowid)
   113  )
   114  
   115  subtest serial_sql_sequence
   116  # When using rowid, we should see an INTx that matches the current size setting.
   117  
   118  statement ok
   119  SET default_int_size=4; SET serial_normalization='sql_sequence';
   120  
   121  statement ok
   122  CREATE TABLE i4_sql_sequence (a SERIAL)
   123  
   124  query TT
   125  SHOW CREATE TABLE i4_sql_sequence
   126  ----
   127  i4_sql_sequence  CREATE TABLE i4_sql_sequence (
   128                   a INT4 NOT NULL DEFAULT nextval('i4_sql_sequence_a_seq':::STRING),
   129                   FAMILY "primary" (a, rowid)
   130  )
   131  
   132  statement ok
   133  SET default_int_size=8; SET serial_normalization='sql_sequence';
   134  
   135  statement ok
   136  CREATE TABLE i8_sql_sequence (a SERIAL)
   137  
   138  query TT
   139  SHOW CREATE TABLE i8_sql_sequence
   140  ----
   141  i8_sql_sequence  CREATE TABLE i8_sql_sequence (
   142                   a INT8 NOT NULL DEFAULT nextval('i8_sql_sequence_a_seq':::STRING),
   143                   FAMILY "primary" (a, rowid)
   144  )
   145  
   146  subtest serial_virtual_sequence
   147  # Virtual sequences are a wrapper around unique_rowid(), so they will also
   148  # return an INT8 value.
   149  
   150  statement ok
   151  SET default_int_size=4; SET serial_normalization='virtual_sequence';
   152  
   153  statement ok
   154  CREATE TABLE i4_virtual_sequence (a SERIAL)
   155  
   156  query TT
   157  SHOW CREATE TABLE i4_virtual_sequence
   158  ----
   159  i4_virtual_sequence  CREATE TABLE i4_virtual_sequence (
   160                       a INT8 NOT NULL DEFAULT nextval('i4_virtual_sequence_a_seq':::STRING),
   161                       FAMILY "primary" (a, rowid)
   162  )
   163  
   164  statement ok
   165  SET default_int_size=8; SET serial_normalization='virtual_sequence';
   166  
   167  statement ok
   168  CREATE TABLE i8_virtual_sequence (a SERIAL)
   169  
   170  query TT
   171  SHOW CREATE TABLE i8_virtual_sequence
   172  ----
   173  i8_virtual_sequence  CREATE TABLE i8_virtual_sequence (
   174                       a INT8 NOT NULL DEFAULT nextval('i8_virtual_sequence_a_seq':::STRING),
   175                       FAMILY "primary" (a, rowid)
   176  )