Skip to content

Commit 3a1b24c

Browse files
authored
Merge pull request #58 from passren/0.7.1
0.7.1
2 parents 0708324 + 8adac3e commit 3a1b24c

6 files changed

Lines changed: 41 additions & 13 deletions

File tree

.github/workflows/run-test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
pip install boto3
3636
pip install tenacity
3737
pip install pyparsing
38-
pip install sqlean.py
38+
pip install sqlean.py==3.45.1
3939
- name: black
4040
run: |
4141
pip install black

pydynamodb/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
if TYPE_CHECKING:
77
from .connection import Connection
88

9-
__version__: str = "0.7.0"
9+
__version__: str = "0.7.1"
1010

1111
# Globals https://www.python.org/dev/peps/pep-0249/#globals
1212
apilevel: str = "2.0"

pydynamodb/superset_dynamodb/querydb.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,18 +155,18 @@ def rollback(self):
155155

156156
def close(self):
157157
if self.connection is not None:
158-
if self.config.purge_enabled:
158+
if self.cache_enabled and self.config.purge_enabled:
159159
self.purge()
160160
self.connection.close()
161161

162162
@synchronized
163163
def purge(self) -> int:
164164
purged_count = 0
165165

166-
if not self.cache_enabled:
166+
if self.config.purge_time < self.config.expire_time:
167167
return purged_count
168168

169-
if self.config.purge_time < self.config.expire_time:
169+
if not self.cache_enabled or not self.has_table(QueryDB.CACHE_TABLE):
170170
return purged_count
171171

172172
_purge_period = datetime.now() - timedelta(seconds=self.config.purge_time)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"botocore>=1.24.7",
1515
"tenacity>=4.1.0",
1616
"pyparsing>=3.0.0",
17-
"sqlean.py>=3.45.0",
17+
"sqlean.py==3.45.1",
1818
]
1919

2020
extras_require = {

tests/test_superset_dml_select.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ def test_parse_base_select(self):
1616
assert ret == {
1717
"Statement": "SELECT col_list[1],col_map.A FROM \"Issues\" WHERE key_partition = 'row_1'"
1818
}
19+
assert parser.parser.inner_columns == None
20+
assert parser.parser.inner_exprs == None
21+
assert parser.parser.outer_columns == None
22+
assert parser.parser.outer_exprs == None
1923

2024
def test_parse_nested_select_case_1(self):
2125
sql = """
@@ -136,6 +140,11 @@ def test_parse_nested_select_case_4(self):
136140
"""
137141
parser = SQLParser(sql, parser_class=SupersetSelect)
138142
ret = parser.transform()
143+
assert ret == {'Statement': 'SELECT id FROM "lakefront-ingest-stg-config-table"'}
144+
assert parser.parser.inner_columns == None
145+
assert parser.parser.inner_exprs == None
146+
assert parser.parser.outer_columns == "text_split(id,'.',1)"
147+
assert parser.parser.outer_exprs == ""
139148

140149
def test_parse_nested_select_case_5(self):
141150
sql = """
@@ -147,4 +156,9 @@ def test_parse_nested_select_case_5(self):
147156
GROUP BY id
148157
"""
149158
parser = SQLParser(sql, parser_class=SupersetSelect)
150-
ret = parser.transform()
159+
ret = parser.transform()
160+
assert ret == {'Statement': 'SELECT id FROM "lakefront-ingest-stg-config-table"'}
161+
assert parser.parser.inner_columns == "text_split(id,'.',1)"
162+
assert parser.parser.inner_exprs == ""
163+
assert parser.parser.outer_columns == "id"
164+
assert parser.parser.outer_exprs == "AS virtual_table\n GROUP BY id"

tests/test_superset_dynamodb.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,18 +172,16 @@ def test_insert_flat_data(self, cursor):
172172
def test_execute_select(self, superset_cursor):
173173
superset_cursor.execute(
174174
"""
175-
SELECT col_list, A FROM (
176-
SELECT col_list[1] col_list, NUMBER(col_map.A)
177-
FROM %s WHERE key_partition='row_1'
178-
)
175+
SELECT col_list[1] col_list, NUMBER(col_map.A)
176+
FROM %s WHERE key_partition='row_1'
179177
"""
180178
% TESTCASE04_TABLE
181179
)
182180
ret = superset_cursor.fetchall()
183181
assert len(ret) == 6
184182
assert [(d[0], d[1]) for d in superset_cursor.description] == [
185-
("col_list", "TEXT"),
186-
("A", "REAL"),
183+
("col_list", "STRING"),
184+
("A", "NUMBER"),
187185
]
188186

189187
def test_execute_nested_select(self, superset_cursor):
@@ -325,6 +323,20 @@ def test_sqlean_string_functions(self, superset_cursor):
325323
assert len(ret) == 2
326324
assert ret[0] == ("F", "F", "2")
327325

326+
def test_sqlalchemy_execute_single_select(self, superset_engine):
327+
_, conn = superset_engine
328+
rows = conn.execute(
329+
text(
330+
"""
331+
SELECT col_list[1] col_list_1, NUMBER(col_map.A)
332+
FROM %s WHERE key_partition=:pk
333+
"""
334+
% TESTCASE04_TABLE
335+
),
336+
{"pk": "row_2"},
337+
).fetchall()
338+
assert len(rows) == 8
339+
328340
def test_sqlalchemy_execute_nested_select(self, superset_engine):
329341
_, conn = superset_engine
330342
rows = conn.execute(
@@ -395,6 +407,7 @@ def test_cached_querydb_step1(self, superset_engine):
395407
os.environ["PYDYNAMODB_QUERYDB_LOAD_BATCH_SIZE"] = "20"
396408
os.environ["PYDYNAMODB_QUERYDB_EXPIRE_TIME"] = "3"
397409

410+
self.test_sqlalchemy_execute_single_select(superset_engine)
398411
self.test_sqlalchemy_execute_nested_select(superset_engine)
399412
self.test_sqlalchemy_execute_flat_data(superset_engine)
400413
self.test_sqlalchemy_execute_alias_select(superset_engine)
@@ -425,6 +438,7 @@ def test_cached_querydb_step2(self, cursor):
425438

426439
def test_cached_querydb_step3(self, superset_engine):
427440
# Cache used
441+
self.test_sqlalchemy_execute_single_select(superset_engine)
428442
self.test_sqlalchemy_execute_nested_select(superset_engine)
429443
self.test_sqlalchemy_execute_alias_select(superset_engine)
430444

0 commit comments

Comments
 (0)