From c63e9bf14b0aa0771d3f0cd853508c464729ec2e Mon Sep 17 00:00:00 2001 From: wjhh2008 Date: Fri, 5 Jan 2024 09:47:14 +0000 Subject: [PATCH] fix external table bug --- .../table/ob_external_table_access_service.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/sql/engine/table/ob_external_table_access_service.cpp b/src/sql/engine/table/ob_external_table_access_service.cpp index 7f67730c9c..20e6e1f036 100644 --- a/src/sql/engine/table/ob_external_table_access_service.cpp +++ b/src/sql/engine/table/ob_external_table_access_service.cpp @@ -85,7 +85,8 @@ int ObExternalDataAccessDriver::get_file_size(const ObString &url, int64_t &file int temp_ret = device_handle_->stat(to_cstring(url), statbuf); if (OB_SUCCESS != temp_ret) { file_size = -1; - if (OB_BACKUP_FILE_NOT_EXIST == temp_ret) { + if (OB_BACKUP_FILE_NOT_EXIST == temp_ret + || OB_IO_ERROR == temp_ret) { file_size = -1; } else { ret = temp_ret; @@ -250,7 +251,17 @@ int ObExternalDataAccessDriver::get_file_list(const ObString &path, } } else if (get_storage_type() == OB_STORAGE_FILE) { ObSEArray file_dirs; - OZ (file_dirs.push_back(path)); + bool is_dir = false; + ObString path_without_prifix; + path_without_prifix = path; + path_without_prifix += strlen(OB_FILE_PREFIX); + + OZ (FileDirectoryUtils::is_directory(to_cstring(path_without_prifix), is_dir)); + if (!is_dir) { + LOG_WARN("external location is not a directory", K(path_without_prifix)); + } else { + OZ (file_dirs.push_back(path)); + } for (int64_t i = 0; OB_SUCC(ret) && i < file_dirs.count(); i++) { ObString file_dir = file_dirs.at(i); ObLocalFileListArrayOpWithFilter dir_op(file_dirs, file_dir, path, NULL, allocator);