Skip to content

Commit b6ac00f

Browse files
authored
YQ-3460 fix error attempt to read after eof (ydb-platform#7943)
1 parent 10b61f8 commit b6ac00f

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,6 +1788,47 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) {
17881788
Y_UNIT_TEST(ExecuteScriptWithLargeFile) {
17891789
ExecuteSelectQuery("test_bucket_execute_script_with_large_file", 5_MB, 500000);
17901790
}
1791+
1792+
Y_UNIT_TEST(TestReadEmptyFileWithCsvFormat) {
1793+
const TString externalDataSourceName = "/Root/external_data_source";
1794+
const TString bucket = "test_bucket1";
1795+
1796+
CreateBucketWithObject(bucket, "test_object", "");
1797+
1798+
auto kikimr = NTestUtils::MakeKikimrRunner();
1799+
1800+
auto tc = kikimr->GetTableClient();
1801+
auto session = tc.CreateSession().GetValueSync().GetSession();
1802+
const TString query = fmt::format(R"(
1803+
CREATE EXTERNAL DATA SOURCE `{external_source}` WITH (
1804+
SOURCE_TYPE="ObjectStorage",
1805+
LOCATION="{location}",
1806+
AUTH_METHOD="NONE"
1807+
);)",
1808+
"external_source"_a = externalDataSourceName,
1809+
"location"_a = GetBucketLocation(bucket)
1810+
);
1811+
auto result = session.ExecuteSchemeQuery(query).GetValueSync();
1812+
UNIT_ASSERT_C(result.GetStatus() == NYdb::EStatus::SUCCESS, result.GetIssues().ToString());
1813+
1814+
const TString sql = fmt::format(R"(
1815+
SELECT * FROM `{external_source}`.`/`
1816+
WITH (
1817+
SCHEMA = (
1818+
data String
1819+
),
1820+
FORMAT = "csv_with_names"
1821+
)
1822+
)", "external_source"_a=externalDataSourceName);
1823+
1824+
auto db = kikimr->GetQueryClient();
1825+
auto scriptExecutionOperation = db.ExecuteScript(sql).ExtractValueSync();
1826+
UNIT_ASSERT_VALUES_EQUAL_C(scriptExecutionOperation.Status().GetStatus(), EStatus::SUCCESS, scriptExecutionOperation.Status().GetIssues().ToString());
1827+
UNIT_ASSERT(scriptExecutionOperation.Metadata().ExecutionId);
1828+
1829+
NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation(scriptExecutionOperation.Id(), kikimr->GetDriver());
1830+
UNIT_ASSERT_EQUAL_C(readyOp.Metadata().ExecStatus, EExecStatus::Completed, readyOp.Status().GetIssues().ToString());
1831+
}
17911832
}
17921833

17931834
} // namespace NKikimr::NKqp

ydb/library/yql/udfs/common/clickhouse/client/src/IO/ReadHelpers.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,9 @@ void readBackQuotedStringWithSQLStyle(String & s, ReadBuffer & buf)
617617
template <typename Vector>
618618
void readCSVStringInto(Vector & s, ReadBuffer & buf, const FormatSettings::CSV & settings)
619619
{
620+
/// Empty string
620621
if (buf.eof())
621-
throwReadAfterEOF();
622+
return;
622623

623624
const char delimiter = settings.delimiter;
624625
const char maybe_quote = *buf.position();

0 commit comments

Comments
 (0)