Skip to content

Commit

Permalink
Merge pull request #9127 from mindsdb/fix-db-names
Browse files Browse the repository at this point in the history
Project and database can't have same name
  • Loading branch information
ea-rus committed May 2, 2024
2 parents b8180bf + d2e3984 commit 539ec23
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 0 deletions.
6 changes: 6 additions & 0 deletions mindsdb/api/executor/command_executor.py
Expand Up @@ -1106,6 +1106,12 @@ def _create_integration(self, name: str, engine: str, connection_args: dict):
integration = self.session.integration_controller.get(name)
if integration is not None:
raise EntityExistsError('Database already exists', name)
try:
integration = ProjectController().get(name=name)
except ValueError:
pass
if integration is not None:
raise EntityExistsError('Project exists with this name', name)

self.session.integration_controller.add(name, engine, connection_args)
if storage:
Expand Down
7 changes: 7 additions & 0 deletions mindsdb/interfaces/database/projects.py
Expand Up @@ -37,6 +37,13 @@ def create(self, name: str):
if existing_record is not None:
raise EntityExistsError('Project already exists', name)

existing_record = db.Integration.query.filter(
sa.func.lower(db.Integration.name) == name,
db.Integration.company_id == ctx.company_id
).first()
if existing_record is not None:
raise EntityExistsError('Database exists with this name ', name)

record = db.Project(
name=name,
company_id=ctx.company_id
Expand Down
12 changes: 12 additions & 0 deletions tests/unit/test_project_structure.py
Expand Up @@ -808,6 +808,18 @@ def test_last_in_job(self, data_handler, scheduler):
assert 'a > 2' in sql
assert "b = 'b'" in sql

def test_project_names_duplicate(self):
# create folder
self.run_sql('create project proj1')

self.run_sql("create database db1 using engine='dummy_data'")

with pytest.raises(Exception):
self.run_sql('create project db1')

with pytest.raises(Exception):
self.run_sql("create database proj1 using engine='dummy_data'")

@patch('mindsdb.integrations.handlers.postgres_handler.Handler')
def test_duplicated_cols(self, data_handler):
df1 = pd.DataFrame([
Expand Down

0 comments on commit 539ec23

Please sign in to comment.