mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-01 20:12:02 +00:00
storage file - fix check creation is allowed [#add_table_function_file]
This commit is contained in:
parent
22870e1e24
commit
139b40f976
@ -42,15 +42,14 @@ static std::string getTablePath(const std::string & db_dir_path, const std::stri
|
|||||||
return db_dir_path + escapeForFileName(table_name) + "/data." + escapeForFileName(format_name);
|
return db_dir_path + escapeForFileName(table_name) + "/data." + escapeForFileName(format_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void checkCreationIsAllowed(Context & context_global, const std::string & table_path, const std::string & db_dir_path)
|
static void checkCreationIsAllowed(Context & context_global, const std::string & db_dir_path, const std::string & table_path, const int & table_fd)
|
||||||
{
|
{
|
||||||
if (context_global.getApplicationType() != Context::ApplicationType::SERVER)
|
if (context_global.getApplicationType() != Context::ApplicationType::SERVER)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (table_path.empty())
|
if (table_fd >= 0)
|
||||||
throw Exception("Using file descriptor as source of storage isn't allowed for server daemons", ErrorCodes::DATABASE_ACCESS_DENIED);
|
throw Exception("Using file descriptor as source of storage isn't allowed for server daemons", ErrorCodes::DATABASE_ACCESS_DENIED);
|
||||||
|
else if (!startsWith(table_path, db_dir_path))
|
||||||
if (!startsWith(table_path, db_dir_path))
|
|
||||||
throw Exception("Part path " + table_path + " is not inside " + db_dir_path, ErrorCodes::DATABASE_ACCESS_DENIED);
|
throw Exception("Part path " + table_path + " is not inside " + db_dir_path, ErrorCodes::DATABASE_ACCESS_DENIED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +76,7 @@ StorageFile::StorageFile(
|
|||||||
poco_path = Poco::Path(db_dir_path, poco_path);
|
poco_path = Poco::Path(db_dir_path, poco_path);
|
||||||
|
|
||||||
path = poco_path.absolute().toString();
|
path = poco_path.absolute().toString();
|
||||||
checkCreationIsAllowed(context_global, path, db_dir_path);
|
checkCreationIsAllowed(context_global, db_dir_path, path, table_fd);
|
||||||
is_db_table = false;
|
is_db_table = false;
|
||||||
}
|
}
|
||||||
else /// Is DB's file
|
else /// Is DB's file
|
||||||
@ -92,7 +91,7 @@ StorageFile::StorageFile(
|
|||||||
}
|
}
|
||||||
else /// Will use FD
|
else /// Will use FD
|
||||||
{
|
{
|
||||||
checkCreationIsAllowed(context_global, "", db_dir_path);
|
checkCreationIsAllowed(context_global, db_dir_path, path, table_fd);
|
||||||
|
|
||||||
is_db_table = false;
|
is_db_table = false;
|
||||||
use_table_fd = true;
|
use_table_fd = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user