Skip to content

Commit 6aeb5ec

Browse files
chore(databases): clarify case-sensitivity rules for name matching
1 parent e7efc1b commit 6aeb5ec

97 files changed

Lines changed: 2757 additions & 504 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.openapi-generator/FILES‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ docs/DatabaseCountResponse.md
4646
docs/DatabaseDefaultSchemaDecl.md
4747
docs/DatabaseDefaultTableDecl.md
4848
docs/DatabaseDetailResponse.md
49+
docs/DatabaseLineageResponse.md
4950
docs/DatabaseSummary.md
5051
docs/DatabasesApi.md
5152
docs/DeleteDatabaseBatchResponse.md
@@ -58,6 +59,7 @@ docs/FinalizeUploadPart.md
5859
docs/FinalizeUploadRequest.md
5960
docs/FinalizeUploadResponse.md
6061
docs/ForkDatabaseRequest.md
62+
docs/ForkedFromInfo.md
6163
docs/GetConnectionResponse.md
6264
docs/GetDatabaseContextResponse.md
6365
docs/GetResultResponse.md
@@ -72,6 +74,8 @@ docs/JobStatus.md
7274
docs/JobStatusResponse.md
7375
docs/JobType.md
7476
docs/JobsApi.md
77+
docs/LineageAncestorInfo.md
78+
docs/LineageForkInfo.md
7579
docs/ListConnectionsResponse.md
7680
docs/ListDatabaseContextsResponse.md
7781
docs/ListDatabasesResponse.md
@@ -87,6 +91,7 @@ docs/ListWorkspacesResponse.md
8791
docs/LoadManagedTableRequest.md
8892
docs/LoadManagedTableResponse.md
8993
docs/ManagedSchemaResponse.md
94+
docs/ManagedTableConstantPerKeyResponse.md
9095
docs/ManagedTableResponse.md
9196
docs/MintUploadPartsRequest.md
9297
docs/MintUploadPartsResponse.md
@@ -113,6 +118,7 @@ docs/TemporalProfileDetail.md
113118
docs/TextProfileDetail.md
114119
docs/UpdateEmbeddingProviderRequest.md
115120
docs/UpdateEmbeddingProviderResponse.md
121+
docs/UpdateManagedTableRequest.md
116122
docs/UpdateSavedQueryRequest.md
117123
docs/UploadSessionResponse.md
118124
docs/UploadsApi.md
@@ -187,6 +193,7 @@ hotdata/models/database_count_response.py
187193
hotdata/models/database_default_schema_decl.py
188194
hotdata/models/database_default_table_decl.py
189195
hotdata/models/database_detail_response.py
196+
hotdata/models/database_lineage_response.py
190197
hotdata/models/database_summary.py
191198
hotdata/models/delete_database_batch_response.py
192199
hotdata/models/discovery_status.py
@@ -197,6 +204,7 @@ hotdata/models/finalize_upload_part.py
197204
hotdata/models/finalize_upload_request.py
198205
hotdata/models/finalize_upload_response.py
199206
hotdata/models/fork_database_request.py
207+
hotdata/models/forked_from_info.py
200208
hotdata/models/get_connection_response.py
201209
hotdata/models/get_database_context_response.py
202210
hotdata/models/get_result_response.py
@@ -208,6 +216,8 @@ hotdata/models/job_result.py
208216
hotdata/models/job_status.py
209217
hotdata/models/job_status_response.py
210218
hotdata/models/job_type.py
219+
hotdata/models/lineage_ancestor_info.py
220+
hotdata/models/lineage_fork_info.py
211221
hotdata/models/list_connections_response.py
212222
hotdata/models/list_database_contexts_response.py
213223
hotdata/models/list_databases_response.py
@@ -223,6 +233,7 @@ hotdata/models/list_workspaces_response.py
223233
hotdata/models/load_managed_table_request.py
224234
hotdata/models/load_managed_table_response.py
225235
hotdata/models/managed_schema_response.py
236+
hotdata/models/managed_table_constant_per_key_response.py
226237
hotdata/models/managed_table_response.py
227238
hotdata/models/mint_upload_parts_request.py
228239
hotdata/models/mint_upload_parts_response.py
@@ -245,6 +256,7 @@ hotdata/models/temporal_profile_detail.py
245256
hotdata/models/text_profile_detail.py
246257
hotdata/models/update_embedding_provider_request.py
247258
hotdata/models/update_embedding_provider_response.py
259+
hotdata/models/update_managed_table_request.py
248260
hotdata/models/update_saved_query_request.py
249261
hotdata/models/upload_session_response.py
250262
hotdata/models/upsert_database_context_request.py
@@ -301,6 +313,7 @@ test/test_database_count_response.py
301313
test/test_database_default_schema_decl.py
302314
test/test_database_default_table_decl.py
303315
test/test_database_detail_response.py
316+
test/test_database_lineage_response.py
304317
test/test_database_summary.py
305318
test/test_databases_api.py
306319
test/test_delete_database_batch_response.py
@@ -313,6 +326,7 @@ test/test_finalize_upload_part.py
313326
test/test_finalize_upload_request.py
314327
test/test_finalize_upload_response.py
315328
test/test_fork_database_request.py
329+
test/test_forked_from_info.py
316330
test/test_get_connection_response.py
317331
test/test_get_database_context_response.py
318332
test/test_get_result_response.py
@@ -327,6 +341,8 @@ test/test_job_status.py
327341
test/test_job_status_response.py
328342
test/test_job_type.py
329343
test/test_jobs_api.py
344+
test/test_lineage_ancestor_info.py
345+
test/test_lineage_fork_info.py
330346
test/test_list_connections_response.py
331347
test/test_list_database_contexts_response.py
332348
test/test_list_databases_response.py
@@ -342,6 +358,7 @@ test/test_list_workspaces_response.py
342358
test/test_load_managed_table_request.py
343359
test/test_load_managed_table_response.py
344360
test/test_managed_schema_response.py
361+
test/test_managed_table_constant_per_key_response.py
345362
test/test_managed_table_response.py
346363
test/test_mint_upload_parts_request.py
347364
test/test_mint_upload_parts_response.py
@@ -368,6 +385,7 @@ test/test_temporal_profile_detail.py
368385
test/test_text_profile_detail.py
369386
test/test_update_embedding_provider_request.py
370387
test/test_update_embedding_provider_response.py
388+
test/test_update_managed_table_request.py
371389
test/test_update_saved_query_request.py
372390
test/test_upload_session_response.py
373391
test/test_uploads_api.py

‎CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2121

2222
### Changed
2323

24+
- chore(databases): clarify case-sensitivity rules for name matching
2425
- chore(databases): clarify fork naming behavior
2526
- docs: adopt "instant database" / "instant catalog" terminology in hand-written
2627
prose. Documentation only — all public API symbols (`ManagedTableResponse`,

‎docs/AddManagedTableDecl.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ One table declaration inside an add-schema request body.
66

77
Name | Type | Description | Notes
88
------------ | ------------- | ------------- | -------------
9+
**constant_per_key** | **List[str]** | Columns whose value is determined by this table's `key`: for every uploaded row, every stored row sharing its key holds the same value of these columns. Declaring this lets a keyed mutation (`delete`, `update`, `upsert`) restrict its search for prior versions to the values the upload carries, which prunes far harder than the key alone when the key's own file statistics are weak. Omit (the default) for the unrestricted search. **Correctness-affecting, not a hint.** If the assertion is false, a mutation supersedes one version of a key and appends beside another, silently duplicating it. Declare it only where the invariant is established. | [optional]
910
**key** | **List[str]** | Columns that uniquely identify a row, enabling the key-based load modes (`delete`, `update`, `upsert`) on this table: those loads match rows by these columns' values. Omit (the default) to declare no key; the table can still be loaded with `replace` and `append`, but key-based modes are then rejected. | [optional]
1011
**name** | **str** | |
1112
**partition_by** | [**List[TablePartitionKey]**](TablePartitionKey.md) | Partition keys for this table, applied in order. Omit for no partitioning. Declared when the table is created and fixed thereafter. | [optional]

‎docs/AddManagedTableRequest.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Request body for adding a table to an existing schema: `POST /v1/connections/{id
66

77
Name | Type | Description | Notes
88
------------ | ------------- | ------------- | -------------
9+
**constant_per_key** | **List[str]** | Columns whose value is determined by this table's `key`: for every uploaded row, every stored row sharing its key holds the same value of these columns. Declaring this lets a keyed mutation (`delete`, `update`, `upsert`) restrict its search for prior versions to the values the upload carries, which prunes far harder than the key alone when the key's own file statistics are weak. Omit (the default) for the unrestricted search. **Correctness-affecting, not a hint.** If the assertion is false, a mutation supersedes one version of a key and appends beside another, silently duplicating it. Declare it only where the invariant is established. | [optional]
910
**key** | **List[str]** | Columns that uniquely identify a row, enabling the key-based load modes (`delete`, `update`, `upsert`) on this table: those loads match rows by these columns' values. Omit (the default) to declare no key; the table can still be loaded with `replace` and `append`, but key-based modes are then rejected. | [optional]
1011
**name** | **str** | |
1112
**partition_by** | [**List[TablePartitionKey]**](TablePartitionKey.md) | Partition keys for this table, applied in order. Omit for no partitioning. Declared when the table is created and fixed thereafter. | [optional]

‎docs/BulkCreateDatabasesRequest.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Name | Type | Description | Notes
1111
**default_schema** | **str** | Schema that unqualified table names resolve to inside each database. | [optional]
1212
**expires_at** | **str** | When the created databases expire. Accepts an RFC 3339 timestamp or a relative duration such as `24h`, `90m`, or `7d`. | [optional]
1313
**idempotency_key** | **str** | Repeat this value to retry a request safely. A retry carrying a key that was already used returns the original batch — the same `batch_id` and the same databases — instead of creating a second set. The key identifies the request, not its contents: reusing a key with a different `count` or template returns the original batch unchanged rather than reporting a mismatch. Use a fresh key per distinct request. | [optional]
14-
**name_template** | **str** | Optional display-label pattern for each database. `{index}` is replaced with the database's zero-based position — for example `tenant-{index}` produces `tenant-0`, `tenant-1`, and so on. When omitted, each database is labelled from its own ID. Labels are not identifiers and are not required to be unique. | [optional]
14+
**name_template** | **str** | Optional display-label pattern for each database. Must contain `{index}`, which is replaced with the database's zero-based position, padded with leading zeros to the width of the batch's largest index — with a `count` of 100, `tenant-{index}` produces `tenant-00` through `tenant-99`. A pattern without `{index}` is rejected, since every database in the batch would be given the same label. Each label also carries a suffix identifying the batch, so repeating the same pattern on a later call does not reuse labels from this one. When omitted, each database is labelled from its own ID. | [optional]
1515
**schemas** | [**List[DatabaseDefaultSchemaDecl]**](DatabaseDefaultSchemaDecl.md) | Schemas and tables to declare on every database in the batch, in the same shape a single create accepts. The declaration applies identically to each database, so a batch of 10,000 declaring one table yields 10,000 databases that each hold that table and are ready to load — with no follow-up call per database. Omitted or empty means each database starts with no tables. | [optional]
1616

1717
## Example

0 commit comments

Comments
 (0)