@@ -237,6 +237,17 @@ def test_create_dataset(self):
|
237 | 237 | self.assertTrue(_dataset_exists(dataset))
|
238 | 238 | self.assertEqual(dataset.dataset_id, DATASET_ID)
|
239 | 239 | self.assertEqual(dataset.project, Config.CLIENT.project)
|
| 240 | +self.assertIs(dataset.is_case_insensitive, False) |
| 241 | + |
| 242 | +def test_create_dataset_case_sensitive(self): |
| 243 | +DATASET_ID = _make_dataset_id("create_cs_dataset") |
| 244 | +dataset = self.temp_dataset(DATASET_ID, is_case_insensitive=False) |
| 245 | +self.assertIs(dataset.is_case_insensitive, False) |
| 246 | + |
| 247 | +def test_create_dataset_case_insensitive(self): |
| 248 | +DATASET_ID = _make_dataset_id("create_ci_dataset") |
| 249 | +dataset = self.temp_dataset(DATASET_ID, is_case_insensitive=True) |
| 250 | +self.assertIs(dataset.is_case_insensitive, True) |
240 | 251 |
|
241 | 252 | def test_create_dataset_max_time_travel_hours(self):
|
242 | 253 | DATASET_ID = _make_dataset_id("create_ci_dataset")
|
@@ -283,16 +294,19 @@ def test_update_dataset(self):
|
283 | 294 | self.assertIsNone(dataset.friendly_name)
|
284 | 295 | self.assertIsNone(dataset.description)
|
285 | 296 | self.assertEqual(dataset.labels, {})
|
| 297 | +self.assertIs(dataset.is_case_insensitive, False) |
286 | 298 |
|
287 | 299 | dataset.friendly_name = "Friendly"
|
288 | 300 | dataset.description = "Description"
|
289 | 301 | dataset.labels = {"priority": "high", "color": "blue"}
|
| 302 | +dataset.is_case_insensitive = True |
290 | 303 | ds2 = Config.CLIENT.update_dataset(
|
291 |
| -dataset, ("friendly_name", "description", "labels") |
| 304 | +dataset, ("friendly_name", "description", "labels", "is_case_insensitive") |
292 | 305 | )
|
293 | 306 | self.assertEqual(ds2.friendly_name, "Friendly")
|
294 | 307 | self.assertEqual(ds2.description, "Description")
|
295 | 308 | self.assertEqual(ds2.labels, {"priority": "high", "color": "blue"})
|
| 309 | +self.assertIs(ds2.is_case_insensitive, True) |
296 | 310 |
|
297 | 311 | ds2.labels = {
|
298 | 312 | "color": "green", # change
|
@@ -347,6 +361,48 @@ def test_create_table(self):
|
347 | 361 | self.assertTrue(_table_exists(table))
|
348 | 362 | self.assertEqual(table.table_id, table_id)
|
349 | 363 |
|
| 364 | +def test_create_tables_in_case_insensitive_dataset(self): |
| 365 | +ci_dataset = self.temp_dataset( |
| 366 | +_make_dataset_id("create_table"), is_case_insensitive=True |
| 367 | +) |
| 368 | +table_arg = Table(ci_dataset.table("test_table2"), schema=SCHEMA) |
| 369 | +tablemc_arg = Table(ci_dataset.table("Test_taBLe2")) # same name, in Mixed Case |
| 370 | + |
| 371 | +table = helpers.retry_403(Config.CLIENT.create_table)(table_arg) |
| 372 | +self.to_delete.insert(0, table) |
| 373 | + |
| 374 | +self.assertTrue(_table_exists(table_arg)) |
| 375 | +self.assertTrue(_table_exists(tablemc_arg)) |
| 376 | +self.assertIs(ci_dataset.is_case_insensitive, True) |
| 377 | + |
| 378 | +def test_create_tables_in_case_sensitive_dataset(self): |
| 379 | +ci_dataset = self.temp_dataset( |
| 380 | +_make_dataset_id("create_table"), is_case_insensitive=False |
| 381 | +) |
| 382 | +table_arg = Table(ci_dataset.table("test_table3"), schema=SCHEMA) |
| 383 | +tablemc_arg = Table(ci_dataset.table("Test_taBLe3")) # same name, in Mixed Case |
| 384 | + |
| 385 | +table = helpers.retry_403(Config.CLIENT.create_table)(table_arg) |
| 386 | +self.to_delete.insert(0, table) |
| 387 | + |
| 388 | +self.assertTrue(_table_exists(table_arg)) |
| 389 | +self.assertFalse(_table_exists(tablemc_arg)) |
| 390 | +self.assertIs(ci_dataset.is_case_insensitive, False) |
| 391 | + |
| 392 | +def test_create_tables_in_default_sensitivity_dataset(self): |
| 393 | +dataset = self.temp_dataset(_make_dataset_id("create_table")) |
| 394 | +table_arg = Table(dataset.table("test_table4"), schema=SCHEMA) |
| 395 | +tablemc_arg = Table( |
| 396 | +dataset.table("Test_taBLe4") |
| 397 | +) # same name, in MC (Mixed Case) |
| 398 | + |
| 399 | +table = helpers.retry_403(Config.CLIENT.create_table)(table_arg) |
| 400 | +self.to_delete.insert(0, table) |
| 401 | + |
| 402 | +self.assertTrue(_table_exists(table_arg)) |
| 403 | +self.assertFalse(_table_exists(tablemc_arg)) |
| 404 | +self.assertIs(dataset.is_case_insensitive, False) |
| 405 | + |
350 | 406 | def test_create_table_with_real_custom_policy(self):
|
351 | 407 | from google.cloud.bigquery.schema import PolicyTagList
|
352 | 408 |
|
@@ -2308,7 +2364,8 @@ def temp_dataset(self, dataset_id, *args, **kwargs):
|
2308 | 2364 | dataset.max_time_travel_hours = kwargs.get("max_time_travel_hours")
|
2309 | 2365 | if kwargs.get("default_rounding_mode"):
|
2310 | 2366 | dataset.default_rounding_mode = kwargs.get("default_rounding_mode")
|
2311 |
| - |
| 2367 | +if kwargs.get("is_case_insensitive"): |
| 2368 | +dataset.is_case_insensitive = kwargs.get("is_case_insensitive") |
2312 | 2369 | dataset = helpers.retry_403(Config.CLIENT.create_dataset)(dataset)
|
2313 | 2370 | self.to_delete.append(dataset)
|
2314 | 2371 | return dataset
|
|
0 commit comments