|
6 | 6 |
|
7 | 7 | import pytest |
8 | 8 | import time |
| 9 | + |
| 10 | +from pandas import DataFrame |
| 11 | + |
9 | 12 | from snowflake.connector.options import pandas as pd, installed_pandas |
10 | 13 | import random |
11 | 14 | from datetime import datetime |
@@ -674,3 +677,34 @@ def test_arrow_fetch_result_scan(conn_cnx): |
674 | 677 | assert tuple(res) == ('1', '2', '3') |
675 | 678 | result_scan_res = cur.execute("select * from table(result_scan('{}'));".format(cur.sfqid)).fetch_pandas_all() |
676 | 679 | assert tuple(result_scan_res) == ('1', '2', '3') |
| 680 | + |
| 681 | + |
| 682 | +@pytest.mark.parametrize('query_format', ('JSON', 'ARROW')) |
| 683 | +@pytest.mark.parametrize('resultscan_format', ('JSON', 'ARROW')) |
| 684 | +def test_query_resultscan_combos(conn_cnx, query_format, resultscan_format): |
| 685 | + with conn_cnx() as cnx: |
| 686 | + sfqid = None |
| 687 | + results = None |
| 688 | + scanned_results = None |
| 689 | + with cnx.cursor() as query_cur: |
| 690 | + query_cur.execute("alter session set python_connector_query_result_format='{}'".format(query_format)) |
| 691 | + query_cur.execute("select seq8(), randstr(1000,random()) from table(generator(rowcount=>100))") |
| 692 | + sfqid = query_cur.sfqid |
| 693 | + assert query_cur._query_result_format.upper() == query_format |
| 694 | + if query_format == 'JSON': |
| 695 | + results = query_cur.fetchall() |
| 696 | + else: |
| 697 | + results = query_cur.fetch_pandas_all() |
| 698 | + with cnx.cursor() as resultscan_cur: |
| 699 | + resultscan_cur.execute("alter session set python_connector_query_result_format='{}'".format(resultscan_format)) |
| 700 | + resultscan_cur.execute("select * from table(result_scan('{}'))".format(sfqid)) |
| 701 | + if resultscan_format == 'JSON': |
| 702 | + scanned_results = resultscan_cur.fetchall() |
| 703 | + else: |
| 704 | + scanned_results = resultscan_cur.fetch_pandas_all() |
| 705 | + assert resultscan_cur._query_result_format.upper() == resultscan_format |
| 706 | + if isinstance(results, DataFrame): |
| 707 | + results = [tuple(e) for e in results.values.tolist()] |
| 708 | + if isinstance(scanned_results, DataFrame): |
| 709 | + scanned_results = [tuple(e) for e in scanned_results.values.tolist()] |
| 710 | + assert results == scanned_results |
0 commit comments