-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: Checkpoints
-
Storage Engines - Persistence
-
StorEng - Defined Pipeline
-
None
Investigating Checkpoint naming restrictions in testing:
- Creating a checkpoint with any characters works, however when we attempt to read the checkpoint (or export the metadata for the table) we encounter errors.
- Discovered when working on
WT-12030 - Seems similar to C naming conventions
In `test_import01.py` the following diffs raise a `_wiredtiger.WiredTigerError: Invalid argument`
- Checkpoint name starts with a number
diff --git a/test/suite/test_import01.py b/test/suite/test_import01.py index 95624150c..32847a137 100644 --- a/test/suite/test_import01.py +++ b/test/suite/test_import01.py @@ -159,6 +159,7 @@ class test_import01(test_import_base): for i in range(min_idx, max_idx): self.update(self.uri, self.keys[i], self.values[i], self.ts[i]) self.session.checkpoint() + self.session.checkpoint("name=123") # Export the metadata for the table. c = self.session.open_cursor('metadata:', None, None)
- Checkpoint name starts with a hyphen
diff --git a/test/suite/test_import01.py b/test/suite/test_import01.py index 95624150c..1bf5838df 100644 --- a/test/suite/test_import01.py +++ b/test/suite/test_import01.py @@ -159,6 +159,7 @@ class test_import01(test_import_base): for i in range(min_idx, max_idx): self.update(self.uri, self.keys[i], self.values[i], self.ts[i]) self.session.checkpoint() + self.session.checkpoint("name=---") # Export the metadata for the table. c = self.session.open_cursor('metadata:', None, None)
- Other cases include Checkpoint names starting with `(`, `^`, `#`, `%`, `*`, `+`, `=`, `@` and other.
- In some cases we do receive a Parsing Error, but it isn’t consistent across all error-prone inputs
Possible solution:
- Error out when attempting to create a checkpoint with an invalid name.