@@ -2141,6 +2141,46 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) {
2141
2141
}
2142
2142
}
2143
2143
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
+ }
2144
2184
}
2145
2185
2146
2186
} // namespace NKikimr::NKqp
0 commit comments