mirror of
https://github.com/apache/superset.git
synced 2026-04-19 08:04:53 +00:00
fix: adds the ability to disallow SQL functions per engine (#28639)
This commit is contained in:
committed by
GitHub
parent
6575cacc5d
commit
5dfbab5424
@@ -401,7 +401,7 @@ def test_handle_cursor_early_cancel(
|
||||
assert cancel_query_mock.call_args is None
|
||||
|
||||
|
||||
def test_execute_with_cursor_in_parallel(mocker: MockerFixture):
|
||||
def test_execute_with_cursor_in_parallel(app, mocker: MockerFixture):
|
||||
"""Test that `execute_with_cursor` fetches query ID from the cursor"""
|
||||
from superset.db_engine_specs.trino import TrinoEngineSpec
|
||||
|
||||
@@ -416,16 +416,20 @@ def test_execute_with_cursor_in_parallel(mocker: MockerFixture):
|
||||
mock_cursor.query_id = query_id
|
||||
|
||||
mock_cursor.execute.side_effect = _mock_execute
|
||||
with patch.dict(
|
||||
"superset.config.DISALLOWED_SQL_FUNCTIONS",
|
||||
{},
|
||||
clear=True,
|
||||
):
|
||||
TrinoEngineSpec.execute_with_cursor(
|
||||
cursor=mock_cursor,
|
||||
sql="SELECT 1 FROM foo",
|
||||
query=mock_query,
|
||||
)
|
||||
|
||||
TrinoEngineSpec.execute_with_cursor(
|
||||
cursor=mock_cursor,
|
||||
sql="SELECT 1 FROM foo",
|
||||
query=mock_query,
|
||||
)
|
||||
|
||||
mock_query.set_extra_json_key.assert_called_once_with(
|
||||
key=QUERY_CANCEL_KEY, value=query_id
|
||||
)
|
||||
mock_query.set_extra_json_key.assert_called_once_with(
|
||||
key=QUERY_CANCEL_KEY, value=query_id
|
||||
)
|
||||
|
||||
|
||||
def test_get_columns(mocker: MockerFixture):
|
||||
|
||||
@@ -32,6 +32,7 @@ from superset.exceptions import (
|
||||
)
|
||||
from superset.sql_parse import (
|
||||
add_table_name,
|
||||
check_sql_functions_exist,
|
||||
extract_table_references,
|
||||
extract_tables_from_jinja_sql,
|
||||
get_rls_for_table,
|
||||
@@ -1215,6 +1216,31 @@ def test_strip_comments_from_sql() -> None:
|
||||
)
|
||||
|
||||
|
||||
def test_check_sql_functions_exist() -> None:
|
||||
"""
|
||||
Test that comments are stripped out correctly.
|
||||
"""
|
||||
assert not (
|
||||
check_sql_functions_exist("select a, b from version", {"version"}, "postgresql")
|
||||
)
|
||||
|
||||
assert check_sql_functions_exist("select version()", {"version"}, "postgresql")
|
||||
|
||||
assert check_sql_functions_exist(
|
||||
"select version from version()", {"version"}, "postgresql"
|
||||
)
|
||||
|
||||
assert check_sql_functions_exist(
|
||||
"select 1, a.version from (select version from version()) as a",
|
||||
{"version"},
|
||||
"postgresql",
|
||||
)
|
||||
|
||||
assert check_sql_functions_exist(
|
||||
"select 1, a.version from (select version()) as a", {"version"}, "postgresql"
|
||||
)
|
||||
|
||||
|
||||
def test_sanitize_clause_valid():
|
||||
# regular clauses
|
||||
assert sanitize_clause("col = 1") == "col = 1"
|
||||
|
||||
Reference in New Issue
Block a user