mirror of
https://github.com/apache/superset.git
synced 2026-04-19 08:04:53 +00:00
fix: fix table existence validation function (#11066)
* Fix table existance validation function * Drop left over table name index in mysql db * Do not modify model Co-authored-by: bogdan kyryliuk <bogdankyryliuk@dropbox.com>
This commit is contained in:
@@ -32,10 +32,11 @@ from superset.dao.exceptions import (
|
||||
)
|
||||
from superset.extensions import db, security_manager
|
||||
from superset.models.core import Database
|
||||
from superset.utils.core import get_example_database, get_main_database
|
||||
from superset.utils.core import backend, get_example_database, get_main_database
|
||||
from superset.utils.dict_import_export import export_to_dict
|
||||
from superset.views.base import generate_download_headers
|
||||
from tests.base_tests import SupersetTestCase
|
||||
from tests.conftest import CTAS_SCHEMA_NAME
|
||||
|
||||
|
||||
class TestDatasetApi(SupersetTestCase):
|
||||
@@ -387,6 +388,36 @@ class TestDatasetApi(SupersetTestCase):
|
||||
data, {"message": {"table_name": ["Datasource birth_names already exists"]}}
|
||||
)
|
||||
|
||||
def test_create_dataset_same_name_different_schema(self):
|
||||
if backend() == "sqlite":
|
||||
# sqlite doesn't support schemas
|
||||
return
|
||||
|
||||
example_db = get_example_database()
|
||||
example_db.get_sqla_engine().execute(
|
||||
f"CREATE TABLE {CTAS_SCHEMA_NAME}.birth_names AS SELECT 2 as two"
|
||||
)
|
||||
|
||||
self.login(username="admin")
|
||||
table_data = {
|
||||
"database": example_db.id,
|
||||
"schema": CTAS_SCHEMA_NAME,
|
||||
"table_name": "birth_names",
|
||||
}
|
||||
|
||||
uri = "api/v1/dataset/"
|
||||
rv = self.post_assert_metric(uri, table_data, "post")
|
||||
self.assertEqual(rv.status_code, 201)
|
||||
|
||||
# cleanup
|
||||
data = json.loads(rv.data.decode("utf-8"))
|
||||
uri = f'api/v1/dataset/{data.get("id")}'
|
||||
rv = self.client.delete(uri)
|
||||
self.assertEqual(rv.status_code, 200)
|
||||
example_db.get_sqla_engine().execute(
|
||||
f"DROP TABLE {CTAS_SCHEMA_NAME}.birth_names"
|
||||
)
|
||||
|
||||
def test_create_dataset_validate_database(self):
|
||||
"""
|
||||
Dataset API: Test create dataset validate database exists
|
||||
|
||||
Reference in New Issue
Block a user