()
| 913 | |
| 914 | #[test] |
| 915 | fn versioned_multiple_alters_accumulate() { |
| 916 | // V0 (2 cols) → V1 adds `a INT64 DEFAULT 10` → V2 adds `b TEXT DEFAULT 'x'`. |
| 917 | // A V0 tuple must read defaults for both `a` and `b`. |
| 918 | let mut schema = base_schema(); |
| 919 | |
| 920 | let mut col_a = ColumnDef::required("a", ColumnType::Int64).with_default("10"); |
| 921 | col_a.added_at_version = 2; |
| 922 | schema.columns.push(col_a); |
| 923 | schema.version = 2; |
| 924 | |
| 925 | let mut col_b = ColumnDef::required("b", ColumnType::String).with_default("'x'"); |
| 926 | col_b.added_at_version = 3; |
| 927 | schema.columns.push(col_b); |
| 928 | schema.version = 3; |
| 929 | |
| 930 | let decoder = TupleDecoder::new(&schema); |
| 931 | let tuple = base_tuple(); // written at V1 (2 cols) |
| 932 | |
| 933 | let a = decoder.extract_value_versioned(&tuple, 2, 2).unwrap(); |
| 934 | assert_eq!(a, Value::Integer(10), "a default must be 10"); |
| 935 | |
| 936 | let b = decoder.extract_value_versioned(&tuple, 3, 2).unwrap(); |
| 937 | assert_eq!(b, Value::String("x".into()), "b default must be 'x'"); |
| 938 | |
| 939 | // Original columns still decode correctly. |
| 940 | let id = decoder.extract_value_versioned(&tuple, 0, 2).unwrap(); |
| 941 | assert_eq!(id, Value::Integer(7)); |
| 942 | } |
| 943 | |
| 944 | #[test] |
| 945 | fn versioned_nullable_column_no_default_returns_null() { |
nothing calls this directly
no test coverage detected