github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/storage/testdata/mvcc_histories/conditional_put (about)

     1  run error
     2  cput k=k v=v cond=v2 ts=123
     3  ----
     4  >> at end:
     5  <no data>
     6  error: (*roachpb.ConditionFailedError:) unexpected value: <nil>
     7  
     8  # Verify the difference between missing value and empty value.
     9  
    10  run error
    11  cput k=k v=v cond= ts=123,1
    12  ----
    13  >> at end:
    14  <no data>
    15  error: (*roachpb.ConditionFailedError:) unexpected value: <nil>
    16  
    17  # Do a conditional put with expectation that the value is completely missing; will succeed.
    18  
    19  run ok
    20  cput k=k v=v ts=123,2
    21  ----
    22  >> at end:
    23  data: "k"/0.000000123,2 -> /BYTES/v
    24  
    25  # Another conditional put expecting value missing will fail, now that value1 is written.
    26  
    27  run error
    28  cput k=k v=v ts=123,3
    29  ----
    30  >> at end:
    31  data: "k"/0.000000123,2 -> /BYTES/v
    32  error: (*roachpb.ConditionFailedError:) unexpected value: raw_bytes:"\000\000\000\000\003v" timestamp:<wall_time:123 logical:2 > 
    33  
    34  # Conditional put expecting wrong value2, will fail.
    35  
    36  run error
    37  cput k=k v=v cond=v2 ts=123,4
    38  ----
    39  >> at end:
    40  data: "k"/0.000000123,2 -> /BYTES/v
    41  error: (*roachpb.ConditionFailedError:) unexpected value: raw_bytes:"\000\000\000\000\003v" timestamp:<wall_time:123 logical:2 > 
    42  
    43  # Move to an empty value. Will succeed.
    44  
    45  run ok
    46  cput k=k v= cond=v ts=123,5
    47  ----
    48  >> at end:
    49  data: "k"/0.000000123,5 -> /BYTES/
    50  data: "k"/0.000000123,2 -> /BYTES/v
    51  
    52  # Move key2 (which does not exist) to from value1 to value2.
    53  # Expect it to fail since it does not exist with value1.
    54  
    55  run error
    56  cput k=k2 v=v2 cond=v ts=123,6
    57  ----
    58  >> at end:
    59  data: "k"/0.000000123,5 -> /BYTES/
    60  data: "k"/0.000000123,2 -> /BYTES/v
    61  error: (*roachpb.ConditionFailedError:) unexpected value: <nil>
    62  
    63  # Move key2 (which does not yet exist) to from value1 to value2, but
    64  # allowing for it not existing.
    65  
    66  run ok
    67  cput k=k2 v=v2 cond=v ts=123,7 allow_missing
    68  ----
    69  >> at end:
    70  data: "k"/0.000000123,5 -> /BYTES/
    71  data: "k"/0.000000123,2 -> /BYTES/v
    72  data: "k2"/0.000000123,7 -> /BYTES/v2
    73  
    74  # Try to move key2 (which has value2) from value1 to empty. Expect error.
    75  
    76  run error
    77  cput k=k2 v= cond=v allow_missing ts=123,8
    78  ----
    79  >> at end:
    80  data: "k"/0.000000123,5 -> /BYTES/
    81  data: "k"/0.000000123,2 -> /BYTES/v
    82  data: "k2"/0.000000123,7 -> /BYTES/v2
    83  error: (*roachpb.ConditionFailedError:) unexpected value: raw_bytes:"\000\000\000\000\003v2" timestamp:<wall_time:123 logical:7 > 
    84  
    85  # Try to move key2 (which has value2) from value2 to empty. Expect success.
    86  
    87  run ok
    88  cput k=k2 v= cond=v2 allow_missing ts=123,9
    89  ----
    90  >> at end:
    91  data: "k"/0.000000123,5 -> /BYTES/
    92  data: "k"/0.000000123,2 -> /BYTES/v
    93  data: "k2"/0.000000123,9 -> /BYTES/
    94  data: "k2"/0.000000123,7 -> /BYTES/v2
    95  
    96  # Now move to value2 from expected empty value.
    97  
    98  run ok
    99  cput k=k v=v2 cond= ts=123,10
   100  ----
   101  >> at end:
   102  data: "k"/0.000000123,10 -> /BYTES/v2
   103  data: "k"/0.000000123,5 -> /BYTES/
   104  data: "k"/0.000000123,2 -> /BYTES/v
   105  data: "k2"/0.000000123,9 -> /BYTES/
   106  data: "k2"/0.000000123,7 -> /BYTES/v2
   107  
   108  # Verify we get value2 as expected.
   109  
   110  run ok
   111  get k=k ts=123,11
   112  ----
   113  get: "k" -> /BYTES/v2 @0.000000123,10