mirror of
https://github.com/apache/superset.git
synced 2026-05-12 19:35:17 +00:00
fix: allow subquery in ad-hoc SQL (WIP) (#19242)
* allow adhoc subquery
* add config for allow ad hoc subquery
* default to true allow adhoc subquery
* fix test
* Update superset/errors.py
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
* Update superset/connectors/sqla/utils.py
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
* rename and add doc string
* fix for big query test
* Update superset/connectors/sqla/utils.py
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
* Apply suggestions from code review
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
* add test
* update validate adhoc subquery
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
(cherry picked from commit 50902d51f5)
This commit is contained in:
committed by
Ville Brofeldt
parent
1953233b68
commit
c793b7bfe9
@@ -34,7 +34,7 @@ from superset.connectors.sqla.models import SqlaTable, TableColumn, SqlMetric
|
||||
from superset.constants import EMPTY_STRING, NULL_STRING
|
||||
from superset.db_engine_specs.bigquery import BigQueryEngineSpec
|
||||
from superset.db_engine_specs.druid import DruidEngineSpec
|
||||
from superset.exceptions import QueryObjectValidationError
|
||||
from superset.exceptions import QueryObjectValidationError, SupersetSecurityException
|
||||
from superset.models.core import Database
|
||||
from superset.utils.core import (
|
||||
AdhocMetricExpressionType,
|
||||
@@ -238,6 +238,35 @@ class TestDatabaseModel(SupersetTestCase):
|
||||
db.session.delete(table)
|
||||
db.session.commit()
|
||||
|
||||
def test_adhoc_metrics_and_calc_columns(self):
|
||||
base_query_obj = {
|
||||
"granularity": None,
|
||||
"from_dttm": None,
|
||||
"to_dttm": None,
|
||||
"groupby": ["user", "expr"],
|
||||
"metrics": [
|
||||
{
|
||||
"expressionType": AdhocMetricExpressionType.SQL,
|
||||
"sqlExpression": "(SELECT (SELECT * from birth_names) "
|
||||
"from test_validate_adhoc_sql)",
|
||||
"label": "adhoc_metrics",
|
||||
}
|
||||
],
|
||||
"is_timeseries": False,
|
||||
"filter": [],
|
||||
}
|
||||
|
||||
table = SqlaTable(
|
||||
table_name="test_validate_adhoc_sql", database=get_example_database()
|
||||
)
|
||||
db.session.commit()
|
||||
|
||||
with pytest.raises(SupersetSecurityException):
|
||||
table.get_sqla_query(**base_query_obj)
|
||||
# Cleanup
|
||||
db.session.delete(table)
|
||||
db.session.commit()
|
||||
|
||||
@pytest.mark.usefixtures("load_birth_names_dashboard_with_slices")
|
||||
def test_where_operators(self):
|
||||
filters: Tuple[FilterTestCase, ...] = (
|
||||
|
||||
Reference in New Issue
Block a user