|
21 | 21 | from dataframe_sql.sql_objects import AmbiguousColumn |
22 | 22 | from dataframe_sql.sql_select_query import TableInfo |
23 | 23 | from dataframe_sql.tests.utils import ( |
| 24 | + AVOCADO, |
24 | 25 | DIGIMON_MON_LIST, |
25 | 26 | DIGIMON_MOVE_LIST, |
26 | 27 | FOREST_FIRES, |
@@ -1320,9 +1321,82 @@ def test_case_statement_with_same_conditions(): |
1320 | 1321 | tm.assert_frame_equal(pandas_frame, my_frame) |
1321 | 1322 |
|
1322 | 1323 |
|
| 1324 | +@assert_state_not_change |
| 1325 | +def test_multiple_aliases_same_column(): |
| 1326 | + """ |
| 1327 | + Test multiple aliases on the same column |
| 1328 | + :return: |
| 1329 | + """ |
| 1330 | + my_frame = query( |
| 1331 | + """ |
| 1332 | + select wind as my_wind, wind as also_the_wind, wind as yes_wind |
| 1333 | + from |
| 1334 | + forest_fires |
| 1335 | + """ |
| 1336 | + ) |
| 1337 | + |
| 1338 | + pandas_frame = FOREST_FIRES[["wind"]].copy() |
| 1339 | + pandas_frame.loc[:, "my_wind"] = FOREST_FIRES["wind"].copy() |
| 1340 | + pandas_frame.loc[:, "also_the_wind"] = FOREST_FIRES["wind"] |
| 1341 | + pandas_frame.loc[:, "yes_wind"] = FOREST_FIRES["wind"] |
| 1342 | + pandas_frame = pandas_frame.drop(columns=["wind"]) |
| 1343 | + tm.assert_frame_equal(pandas_frame, my_frame) |
| 1344 | + |
| 1345 | + |
| 1346 | +@assert_state_not_change |
| 1347 | +def test_sql_data_types(): |
| 1348 | + """ |
| 1349 | + Tests sql data types |
| 1350 | + :return: |
| 1351 | + """ |
| 1352 | + my_frame = query( |
| 1353 | + """ |
| 1354 | + select |
| 1355 | + cast(avocado_id as object) as avocado_id_object, |
| 1356 | + cast(avocado_id as int16) as avocado_id_int16, |
| 1357 | + cast(avocado_id as smallint) as avocado_id_smallint, |
| 1358 | + cast(avocado_id as int32) as avocado_id_int32, |
| 1359 | + cast(avocado_id as int) as avocado_id_int, |
| 1360 | + cast(avocado_id as int64) as avocado_id_int64, |
| 1361 | + cast(avocado_id as bigint) as avocado_id_bigint, |
| 1362 | + cast(avocado_id as float) as avocado_id_float, |
| 1363 | + cast(avocado_id as float16) as avocado_id_float16, |
| 1364 | + cast(avocado_id as float32) as avocado_id_float32, |
| 1365 | + cast(avocado_id as float64) as avocado_id_float64, |
| 1366 | + cast(avocado_id as bool) as avocado_id_bool, |
| 1367 | + cast(avocado_id as category) as avocado_id_category, |
| 1368 | + cast(date as datetime64) as date, |
| 1369 | + cast(date as timestamp) as time, |
| 1370 | + cast(region as varchar) as region_varchar |
| 1371 | + from avocado |
| 1372 | + """ |
| 1373 | + ) |
| 1374 | + |
| 1375 | + pandas_frame = AVOCADO.copy()[["avocado_id", "Date", "region"]] |
| 1376 | + pandas_frame["avocado_id_object"] = pandas_frame["avocado_id"].astype("object") |
| 1377 | + pandas_frame["avocado_id_int16"] = pandas_frame["avocado_id"].astype("int16") |
| 1378 | + pandas_frame["avocado_id_smallint"] = pandas_frame["avocado_id"].astype("int16") |
| 1379 | + pandas_frame["avocado_id_int32"] = pandas_frame["avocado_id"].astype("int32") |
| 1380 | + pandas_frame["avocado_id_int"] = pandas_frame["avocado_id"].astype("int32") |
| 1381 | + pandas_frame["avocado_id_int64"] = pandas_frame["avocado_id"].astype("int64") |
| 1382 | + pandas_frame["avocado_id_bigint"] = pandas_frame["avocado_id"].astype("int64") |
| 1383 | + pandas_frame["avocado_id_float"] = pandas_frame["avocado_id"].astype("float") |
| 1384 | + pandas_frame["avocado_id_float16"] = pandas_frame["avocado_id"].astype("float16") |
| 1385 | + pandas_frame["avocado_id_float32"] = pandas_frame["avocado_id"].astype("float32") |
| 1386 | + pandas_frame["avocado_id_float64"] = pandas_frame["avocado_id"].astype("float64") |
| 1387 | + pandas_frame["avocado_id_bool"] = pandas_frame["avocado_id"].astype("bool") |
| 1388 | + pandas_frame["avocado_id_category"] = pandas_frame["avocado_id"].astype("category") |
| 1389 | + pandas_frame["date"] = pandas_frame["Date"].astype("datetime64") |
| 1390 | + pandas_frame["time"] = pandas_frame["Date"].astype("datetime64") |
| 1391 | + pandas_frame["region_varchar"] = pandas_frame["region"].astype("string") |
| 1392 | + pandas_frame = pandas_frame.drop(columns=["avocado_id", "Date", "region"]) |
| 1393 | + |
| 1394 | + tm.assert_frame_equal(pandas_frame, my_frame) |
| 1395 | + |
| 1396 | + |
1323 | 1397 | if __name__ == "__main__": |
1324 | 1398 | register_env_tables() |
1325 | 1399 |
|
1326 | | - test_in_operator() |
| 1400 | + test_sql_data_types() |
1327 | 1401 |
|
1328 | 1402 | remove_env_tables() |
0 commit comments