clash_data_serializer_sqlite#
This module provides SQLite-based serialization for clash detection data.
Classes#
ClashDataSerializerSqlite#
- class omni.physxclashdetectioncore.clash_data_serializer_sqlite.ClashDataSerializerSqlite#
A class for serializing and deserializing clash data using SQLite database.
This class provides functionality to read, write, update, and delete clash data and clash queries in an SQLite database. It ensures compatibility with specific versions of clash data structures and manages database connections and transactions.
It supports deferred database creation until the first write operation to avoid creating empty database files. The class also includes methods for checking table compatibility, creating necessary database tables, and inserting, updating, and querying clash data and clash queries.
Class Constants:
- CLASH_DB_FILE_EXT: str = ".clashdb"#
File extension for clash database files.
- SUPPORTED_CLASH_QUERY_VERSION: int = 5#
Supported version of ClashQuery data structure.
- SUPPORTED_CLASH_INFO_VERSION: int = 18#
Supported version of ClashInfo data structure.
- SUPPORTED_CLASH_FRAME_INFO_VERSION: int = 7#
Supported version of ClashFrameInfo data structure.
- SUPPORTED_POINT_CLOUD_SETTINGS_VERSION: int = 2#
Supported version of PointCloudSettings data structure.
Methods:
- __init__()#
Initializes the ClashDataSerializerSqlite instance.
- static check_serializer_compatibility_with_data_structures() bool#
Checks if the serializer is compatible with current data structures. Verifies that the version constants
SUPPORTED_CLASH_INFO_VERSION,SUPPORTED_CLASH_FRAME_INFO_VERSION,SUPPORTED_CLASH_QUERY_VERSION, andSUPPORTED_POINT_CLOUD_SETTINGS_VERSIONmatch theVERSIONattributes of the corresponding data-structure classes. Logs an error for each mismatch found.- Returns:
True if all data-structure versions are compatible, False otherwise.
- Return type:
bool
- check_compatibility_of_tables() bool#
Checks if the current database tables are compatible.
- Returns:
True if tables are compatible.
- Return type:
bool
- check_possibility_of_tables_migration() bool#
Checks if migration of all tables to the latest version is possible.
- Returns:
True if migration of all tables to the latest version is possible.
- Return type:
bool
- migrate_table(
- table_name: str,
- target_version: int,
- commit: bool = True,
Run all migration steps for the given table from the current stored version to
target_versionin a single atomic transaction. On failure the transaction is rolled back andFalseis returned.Note
Each call to
migrate_tableis always committed as an atomic unit. Thecommitparameter is kept for API compatibility but has no effect - DDL statements (ALTER TABLE, CREATE TABLE, CREATE TRIGGER, etc.) require explicit transaction management that cannot be deferred across calls.- Parameters:
table_name (str) – Name of the table to migrate.
target_version (int) – Target version to migrate to.
commit (bool) – Kept for API compatibility; has no effect. Defaults to True.
- Returns:
True if the full migration sequence succeeds; False on failure (transaction is rolled back).
- Return type:
bool
- open(file_path_name: str) None#
Creates a file or opens an existing one.
- Parameters:
file_path_name (str) – Path to the file to be opened.
- get_file_path() str#
Returns the serializer file path.
- Returns:
The serializer file path.
- Return type:
str
- get_file_size() int#
Returns the serializer file size in bytes.
- Returns:
The file size in bytes.
- Return type:
int
- get_free_list_size() int#
Returns the size of SQLite’s freelist in bytes.
The freelist contains pages that were previously used but are now free. These pages can be reused for new data.
- Returns:
The total size of free pages in bytes.
- Return type:
int
- data_structures_compatible() bool#
Returns True if the serializer has no compatibility issues (data structures, tables).
- Returns:
True if no compatibility issues.
- Return type:
bool
- data_structures_migration_to_latest_version_possible() bool#
Returns True if the serializer can migrate data structures to the latest version.
- Returns:
True if migration to the latest version is possible.
- Return type:
bool
- migrate_data_structures_to_latest_version(file_path_name: str) bool#
Migrates data structures to the latest version.
The single transaction design ensures atomic schema updates. Either all steps commit successfully or the entire sequence is rolled back, preserving the pre-migration state on error.
- Parameters:
file_path_name (str) – Path to the clash data.
- Returns:
True if migration was successful, False otherwise.
- Return type:
bool
- deferred_file_creation_until_first_write_op() bool#
Returns True if the serializer will postpone file creation until the first write operation is requested.
- Returns:
True if file creation is deferred until first write.
- Return type:
bool
- set_deferred_file_creation_until_first_write_op(value: bool) None#
Sets if the serializer must postpone file creation until the first write operation is requested.
- Parameters:
value (bool) – True to defer file creation, False otherwise.
- is_open() bool#
Returns if the serializer is ready.
- Returns:
True if the serializer is ready.
- Return type:
bool
- save() bool#
Saves data to the target file.
- Returns:
True if save was successful, False otherwise.
- Return type:
bool
- close() None#
Closes the opened file.
- commit() None#
Commits any unwritten data to the target file.
- vacuum() None#
Defragments the database and reclaims freed space.
- insert_overlap(
- clash_info: ClashInfo,
- insert_also_frame_info: bool,
- update_identifier: bool,
- commit: bool,
Inserts clash data. If already present, insertion is skipped.
- Parameters:
clash_info (ClashInfo) – Clash information to insert.
insert_also_frame_info (bool) – Whether to insert frame info as well.
update_identifier (bool) – Update identifier if needed.
commit (bool) – Commit the transaction.
- Returns:
ID of the new record.
- Return type:
int
- update_overlap(
- clash_info: ClashInfo,
- update_also_frame_info: bool,
- commit: bool,
Updates clash data if present in the database.
- Parameters:
clash_info (ClashInfo) – Clash information to update.
update_also_frame_info (bool) – Whether to update frame info as well.
commit (bool) – Commit the transaction.
- Returns:
Number of affected records.
- Return type:
int
- find_all_overlaps_by_query_id(
- clash_query_id: int,
- fetch_also_frame_info: bool,
- num_frames_to_load: int = -1,
- first_frame_offset: int = 0,
- num_overlaps_to_load: int = -1,
- first_overlap_offset: int = 0,
Finds all overlaps associated with a specific query ID.
This method retrieves all ClashInfo objects corresponding to the given clash_query_id from the database and optionally fetches additional frame information for each clash.
- Parameters:
clash_query_id (int) – The ID of the query to search for overlaps.
fetch_also_frame_info (bool) – If True, fetches frame information associated with each ClashInfo object.
num_frames_to_load (int) – The maximum number of frames to load when fetching frame information. Defaults to -1 (all frames).
first_frame_offset (int) – The offset for the first frame to load when fetching frame information. Defaults to 0.
num_overlaps_to_load (int) – The maximum number of overlaps to load. Defaults to -1 (all overlaps).
first_overlap_offset (int) – The offset for the first overlap to load. Defaults to 0.
- Returns:
A dictionary where the keys are overlap IDs (as strings) and the values are the corresponding ClashInfo objects. Empty dict if no results.
- Return type:
Dict[str, ClashInfo]
- get_overlaps_count_by_query_id(clash_query_id: int) int#
Gets the total number of overlaps for a specific query ID.
- Parameters:
clash_query_id (int) – The ID of the query to count overlaps for.
- Returns:
The total number of overlaps for the query. Returns 0 if no results found.
- Return type:
int
- get_overlaps_count_by_query_id_grouped_by_state(
- clash_query_id: int,
Gets the total number of overlaps for a specific query ID grouped by state.
- Parameters:
clash_query_id (int) – The ID of the query to count overlaps for.
- Returns:
A dictionary where keys are ClashState enum values and values are counts. Empty dict if no results.
- Return type:
Dict[ClashState, int]
- find_all_overlaps_by_overlap_id(
- overlap_id: Sequence[int],
- fetch_also_frame_info: bool,
- num_frames_to_load: int = -1,
- first_frame_offset: int = 0,
Finds all overlaps by their overlap IDs.
This method retrieves all ClashInfo objects associated with the given overlap IDs and optionally fetches additional frame information for each clash.
- Parameters:
overlap_id (Sequence[int]) – A sequence of overlap IDs to search for.
fetch_also_frame_info (bool) – If True, fetches frame information associated with each ClashInfo object.
num_frames_to_load (int) – The maximum number of frames to load. Defaults to -1 (all frames).
first_frame_offset (int) – The offset for the first frame to load. Defaults to 0.
- Returns:
A dictionary where keys are overlap IDs and values are ClashInfo objects. Empty dict if no results.
- Return type:
Dict[str, ClashInfo]
- remove_all_overlaps_by_query_id(
- clash_query_id: int,
- commit: bool,
Deletes specified clash data related to query_id.
- Parameters:
clash_query_id (int) – The ID of the clash query.
commit (bool) – Whether to commit the transaction.
- Returns:
Number of deleted rows.
- Return type:
int
- remove_overlap_by_id(overlap_id: int, commit: bool) int#
Deletes specified clash data.
- Parameters:
overlap_id (int) – The ID of the overlap.
commit (bool) – Whether to commit the transaction.
- Returns:
Number of deleted rows.
- Return type:
int
- fetch_clash_frame_info_by_clash_info_id(
- clash_info_id: int,
- num_frames_to_load: int = -1,
- first_frame_offset: int = 0,
Fetches frame information associated with a specific clash.
This method retrieves ClashFrameInfo records from the database for a given clash_info_id, ordered by timecode. It supports limiting the number of frames fetched and applying an offset to the starting frame.
- Parameters:
clash_info_id (int) – The ID of the clash for which frame information is to be fetched.
num_frames_to_load (int) – The maximum number of frames to load. Defaults to -1 (all frames).
first_frame_offset (int) – The offset for the first frame to load. Defaults to 0.
- Returns:
A list of ClashFrameInfo objects. Empty list if no results.
- Return type:
Sequence[ClashFrameInfo]
- get_clash_frame_info_count_by_clash_info_id(clash_info_id: int) int#
Gets the total number of frame info records for a specific clash info ID.
- Parameters:
clash_info_id (int) – The ID of the clash info to count frame info records for.
- Returns:
The total number of frame info records. Returns 0 if no results found.
- Return type:
int
- insert_clash_frame_info_from_clash_info(
- clash_info: ClashInfo,
- commit: bool,
Inserts clash_frame_info from ClashInfo.
- Parameters:
clash_info (ClashInfo) – The ClashInfo object.
commit (bool) – Whether to commit the transaction.
- Returns:
Number of affected records.
- Return type:
int
- insert_clash_frame_info(
- clash_frame_info: ClashFrameInfo,
- clash_info_id: int,
- commit: bool,
Inserts clash_frame_info.
- Parameters:
clash_frame_info (ClashFrameInfo) – The ClashFrameInfo object.
clash_info_id (int) – The ID of the clash info.
commit (bool) – Whether to commit the transaction.
- Returns:
ID of the new record.
- Return type:
int
- remove_clash_frame_info_by_clash_info_id(
- clash_info_id: int,
- commit: bool,
Deletes specified clash_frame_info data.
- Parameters:
clash_info_id (int) – The ID of the clash info.
commit (bool) – Whether to commit the transaction.
- Returns:
Number of deleted rows.
- Return type:
int
- fetch_all_queries() Dict[int, ClashQuery]#
Returns all clash queries.
- Returns:
Dictionary of all clash queries. Key is query identifier, value is ClashQuery object.
- Return type:
Dict[int, ClashQuery]
- insert_query(
- clash_query: ClashQuery,
- update_identifier: bool,
- commit: bool,
Inserts clash query.
- Parameters:
clash_query (ClashQuery) – The ClashQuery object.
update_identifier (bool) – Whether to update the identifier.
commit (bool) – Whether to commit the transaction.
- Returns:
ID of the new record.
- Return type:
int
- update_query(clash_query: ClashQuery, commit: bool) int#
Updates clash query if present in the DB.
- Parameters:
clash_query (ClashQuery) – The ClashQuery object.
commit (bool) – Whether to commit the transaction.
- Returns:
Number of affected records.
- Return type:
int
- remove_query_by_id(query_id: int, commit: bool) int#
Deletes specified clash data.
- Parameters:
query_id (int) – The ID of the query.
commit (bool) – Whether to commit the transaction.
- Returns:
Number of deleted rows.
- Return type:
int
- find_query(clash_query_id: int) ClashQuery | None#
Returns specified clash query.
- Parameters:
clash_query_id (int) – The ID of the clash query.
- Returns:
The ClashQuery object or None if not found.
- Return type:
Optional[ClashQuery]
- fetch_all_point_cloud_settings() Dict[int, PointCloudSettings]#
Returns all point cloud settings records.
- Returns:
Dictionary of all records. Key is identifier, value is PointCloudSettings object.
- Return type:
Dict[int, PointCloudSettings]
- insert_point_cloud_settings(
- point_cloud_settings: PointCloudSettings,
- update_identifier: bool,
- commit: bool,
Inserts a PointCloudSettings record.
- Parameters:
point_cloud_settings (PointCloudSettings) – The record to insert.
update_identifier (bool) – Whether to update the identifier on the object after insert.
commit (bool) – Whether to commit the transaction.
- Returns:
ID of the new record.
- Return type:
int
- find_point_cloud_settings(
- point_cloud_settings_id: int,
Returns a PointCloudSettings record by ID.
- Parameters:
point_cloud_settings_id (int) – ID of the record.
- Returns:
The record or None if not present.
- Return type:
Optional[PointCloudSettings]
- update_point_cloud_settings(
- point_cloud_settings: PointCloudSettings,
- commit: bool,
Updates a PointCloudSettings record if present in the database.
- Parameters:
point_cloud_settings (PointCloudSettings) – The record to update.
commit (bool) – Whether to commit the transaction.
- Returns:
Number of affected records.
- Return type:
int
- remove_point_cloud_settings_by_id(
- point_cloud_settings_id: int,
- commit: bool,
Deletes a PointCloudSettings record by ID.
- Parameters:
point_cloud_settings_id (int) – ID of the record.
commit (bool) – Whether to commit the transaction.
- Returns:
Number of deleted rows.
- Return type:
int
- find_point_cloud_settings_by_point_cloud_prim_path(
- point_cloud_prim_path: str,
Returns a PointCloudSettings record by point cloud prim path.
- Parameters:
point_cloud_prim_path (str) – The USD prim path of the point cloud to find.
- Returns:
The found record or None.
- Return type:
Optional[PointCloudSettings]
- find_point_cloud_settings_by_destination_path(
- destination_path: str,
Returns a PointCloudSettings record by destination path.
- Parameters:
destination_path (str) – The destination path to find.
- Returns:
The found record or None.
- Return type:
Optional[PointCloudSettings]
Properties:
- db_file_path_name: str#
Gets the database file path name.
- deferred_db_creation_until_commit_query: bool#
Gets the deferred database creation until commit query flag.
- compatible_with_data_structures: bool#
Gets the compatibility status with data structures.
- db_tables_compatible: bool#
Gets the compatibility status of the database tables.
MigrationStep#
- class ClashDataSerializerSqlite.MigrationStep(
- sql: str,
- description: str,
- target_version: int,
A frozen dataclass nested inside
ClashDataSerializerSqlitethat represents a single migration step to be applied to a database table when upgrading from one schema version to another.- Parameters:
sql (str) – The SQL command to execute as part of the migration.
description (str) – A short description of what the migration does.
target_version (int) – The version of the table after applying this migration step.
Attributes:
- sql: str#
The SQL command to execute.
- description: str#
A description of the migration.
- target_version: int#
The target version after migration.