Skip to content

Commit cb0ca90

Browse files
authored
YQ-3460 fix error attempt to read after eof (#7889)
1 parent 617236c commit cb0ca90

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2141,6 +2141,46 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) {
21412141
}
21422142
}
21432143

2144+
Y_UNIT_TEST(TestReadEmptyFileWithCsvFormat) {
2145+
const TString externalDataSourceName = "/Root/external_data_source";
2146+
const TString bucket = "test_bucket1";
2147+
2148+
CreateBucketWithObject(bucket, "test_object", "");
2149+
2150+
auto kikimr = NTestUtils::MakeKikimrRunner();
2151+
2152+
auto tc = kikimr->GetTableClient();
2153+
auto session = tc.CreateSession().GetValueSync().GetSession();
2154+
const TString query = fmt::format(R"(
2155+
CREATE EXTERNAL DATA SOURCE `{external_source}` WITH (
2156+
SOURCE_TYPE="ObjectStorage",
2157+
LOCATION="{location}",
2158+
AUTH_METHOD="NONE"
2159+
);)",
2160+
"external_source"_a = externalDataSourceName,
2161+
"location"_a = GetBucketLocation(bucket)
2162+
);
2163+
auto result = session.ExecuteSchemeQuery(query).GetValueSync();
2164+
UNIT_ASSERT_C(result.GetStatus() == NYdb::EStatus::SUCCESS, result.GetIssues().ToString());
2165+
2166+
const TString sql = fmt::format(R"(
2167+
SELECT * FROM `{external_source}`.`/`
2168+
WITH (
2169+
SCHEMA = (
2170+
data String
2171+
),
2172+
FORMAT = "csv_with_names"
2173+
)
2174+
)", "external_source"_a=externalDataSourceName);
2175+
2176+
auto db = kikimr->GetQueryClient();
2177+
auto scriptExecutionOperation = db.ExecuteScript(sql).ExtractValueSync();
2178+
UNIT_ASSERT_VALUES_EQUAL_C(scriptExecutionOperation.Status().GetStatus(), EStatus::SUCCESS, scriptExecutionOperation.Status().GetIssues().ToString());
2179+
UNIT_ASSERT(scriptExecutionOperation.Metadata().ExecutionId);
2180+
2181+
NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation(scriptExecutionOperation.Id(), kikimr->GetDriver());
2182+
UNIT_ASSERT_EQUAL_C(readyOp.Metadata().ExecStatus, EExecStatus::Completed, readyOp.Status().GetIssues().ToString());
2183+
}
21442184
}
21452185

21462186
} // 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)