@@ -799,12 +799,15 @@ void PhysicalShow::ExecuteShowDatabases(QueryContext *query_context, ShowOperato
799
799
Vector<DatabaseDetail> databases_detail = txn->ListDatabases ();
800
800
801
801
// Prepare the output data block
802
- UniquePtr<DataBlock> output_block_ptr = DataBlock::MakeUniquePtr () ;
802
+ UniquePtr<DataBlock> output_block_ptr = nullptr ;
803
803
Vector<SharedPtr<DataType>> column_types{varchar_type};
804
-
805
- output_block_ptr->Init (column_types);
804
+ SizeT row_count = 0 ;
806
805
807
806
for (auto &database_detail : databases_detail) {
807
+ if (!output_block_ptr) {
808
+ output_block_ptr = DataBlock::MakeUniquePtr ();
809
+ output_block_ptr->Init (column_types);
810
+ }
808
811
809
812
SizeT column_id = 0 ;
810
813
{
@@ -814,10 +817,19 @@ void PhysicalShow::ExecuteShowDatabases(QueryContext *query_context, ShowOperato
814
817
ValueExpression value_expr (value);
815
818
value_expr.AppendToChunk (output_block_ptr->column_vectors [column_id]);
816
819
}
820
+
821
+ if (++row_count == output_block_ptr->capacity ()) {
822
+ output_block_ptr->Finalize ();
823
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
824
+ output_block_ptr = nullptr ;
825
+ row_count = 0 ;
826
+ }
817
827
}
818
828
819
- output_block_ptr->Finalize ();
820
- show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
829
+ if (output_block_ptr) {
830
+ output_block_ptr->Finalize ();
831
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
832
+ }
821
833
}
822
834
823
835
/* *
@@ -843,13 +855,17 @@ void PhysicalShow::ExecuteShowTables(QueryContext *query_context, ShowOperatorSt
843
855
}
844
856
845
857
// Prepare the output data block
846
- UniquePtr<DataBlock> output_block_ptr = DataBlock::MakeUniquePtr () ;
858
+ UniquePtr<DataBlock> output_block_ptr = nullptr ;
847
859
Vector<SharedPtr<DataType>>
848
860
column_types{varchar_type, varchar_type, varchar_type, bigint_type, bigint_type, bigint_type, bigint_type, bigint_type};
849
-
850
- output_block_ptr->Init (column_types);
861
+ SizeT row_count = 0 ;
851
862
852
863
for (auto &table_detail : table_collections_detail) {
864
+ // Initialize the output data block
865
+ if (!output_block_ptr) {
866
+ output_block_ptr = DataBlock::MakeUniquePtr ();
867
+ output_block_ptr->Init (column_types);
868
+ }
853
869
854
870
SizeT column_id = 0 ;
855
871
{
@@ -958,10 +974,19 @@ void PhysicalShow::ExecuteShowTables(QueryContext *query_context, ShowOperatorSt
958
974
ValueExpression value_expr (value);
959
975
value_expr.AppendToChunk (output_block_ptr->column_vectors [column_id]);
960
976
}
977
+
978
+ if (++row_count == output_block_ptr->capacity ()) {
979
+ output_block_ptr->Finalize ();
980
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
981
+ output_block_ptr = nullptr ;
982
+ row_count = 0 ;
983
+ }
961
984
}
962
985
963
- output_block_ptr->Finalize ();
964
- show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
986
+ if (output_block_ptr) {
987
+ output_block_ptr->Finalize ();
988
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
989
+ }
965
990
}
966
991
967
992
void PhysicalShow::ExecuteShowViews (QueryContext *query_context, ShowOperatorState *show_operator_state) {
@@ -980,13 +1005,16 @@ void PhysicalShow::ExecuteShowViews(QueryContext *query_context, ShowOperatorSta
980
1005
}
981
1006
982
1007
// Prepare the output data block
983
- UniquePtr<DataBlock> output_block_ptr = DataBlock::MakeUniquePtr () ;
1008
+ UniquePtr<DataBlock> output_block_ptr = nullptr ;
984
1009
Vector<SharedPtr<DataType>>
985
1010
column_types{varchar_type, varchar_type, varchar_type, bigint_type, bigint_type, bigint_type, bigint_type, bigint_type};
986
-
987
- output_block_ptr->Init (column_types);
1011
+ SizeT row_count = 0 ;
988
1012
989
1013
for (auto &view_detail : views_detail) {
1014
+ if (!output_block_ptr) {
1015
+ output_block_ptr = DataBlock::MakeUniquePtr ();
1016
+ output_block_ptr->Init (column_types);
1017
+ }
990
1018
991
1019
SizeT column_id = 0 ;
992
1020
{
@@ -1013,10 +1041,19 @@ void PhysicalShow::ExecuteShowViews(QueryContext *query_context, ShowOperatorSta
1013
1041
ValueExpression value_expr (value);
1014
1042
value_expr.AppendToChunk (output_block_ptr->column_vectors [column_id]);
1015
1043
}
1044
+
1045
+ if (++row_count == output_block_ptr->capacity ()) {
1046
+ output_block_ptr->Finalize ();
1047
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1048
+ output_block_ptr = nullptr ;
1049
+ row_count = 0 ;
1050
+ }
1016
1051
}
1017
1052
1018
- output_block_ptr->Finalize ();
1019
- show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1053
+ if (output_block_ptr) {
1054
+ output_block_ptr->Finalize ();
1055
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1056
+ }
1020
1057
}
1021
1058
1022
1059
void PhysicalShow::ExecuteShowProfiles (QueryContext *query_context, ShowOperatorState *show_operator_state) {
@@ -1041,7 +1078,7 @@ void PhysicalShow::ExecuteShowProfiles(QueryContext *query_context, ShowOperator
1041
1078
SharedPtr<TableDef> table_def = TableDef::Make (MakeShared<String>(" default" ), MakeShared<String>(" profiles" ), column_defs);
1042
1079
1043
1080
// create data block for output state
1044
- UniquePtr<DataBlock> output_block_ptr = DataBlock::MakeUniquePtr () ;
1081
+ UniquePtr<DataBlock> output_block_ptr = nullptr ;
1045
1082
Vector<SharedPtr<DataType>> column_types{varchar_type,
1046
1083
varchar_type,
1047
1084
varchar_type,
@@ -1053,10 +1090,14 @@ void PhysicalShow::ExecuteShowProfiles(QueryContext *query_context, ShowOperator
1053
1090
varchar_type,
1054
1091
varchar_type,
1055
1092
varchar_type};
1056
- output_block_ptr-> Init (column_types) ;
1093
+ SizeT row_count = 0 ;
1057
1094
1058
1095
auto records = catalog->GetProfilerRecords ();
1059
1096
for (SizeT i = 0 ; i < records.size (); ++i) {
1097
+ if (!output_block_ptr) {
1098
+ output_block_ptr = DataBlock::MakeUniquePtr ();
1099
+ output_block_ptr->Init (column_types);
1100
+ }
1060
1101
1061
1102
// Output record no
1062
1103
ValueExpression record_no_expr (Value::MakeVarchar (fmt::format (" {}" , i)));
@@ -1078,9 +1119,19 @@ void PhysicalShow::ExecuteShowProfiles(QueryContext *query_context, ShowOperator
1078
1119
NanoSeconds total_duration (total_cost);
1079
1120
ValueExpression phase_cost_expr (Value::MakeVarchar (BaseProfiler::ElapsedToString (total_duration)));
1080
1121
phase_cost_expr.AppendToChunk (output_block_ptr->column_vectors .back ());
1122
+
1123
+ if (++row_count == output_block_ptr->capacity ()) {
1124
+ output_block_ptr->Finalize ();
1125
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1126
+ output_block_ptr = nullptr ;
1127
+ row_count = 0 ;
1128
+ }
1129
+ }
1130
+
1131
+ if (output_block_ptr) {
1132
+ output_block_ptr->Finalize ();
1133
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1081
1134
}
1082
- output_block_ptr->Finalize ();
1083
- show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1084
1135
}
1085
1136
1086
1137
/* *
@@ -1110,17 +1161,21 @@ void PhysicalShow::ExecuteShowColumns(QueryContext *query_context, ShowOperatorS
1110
1161
SharedPtr<TableDef> table_def = TableDef::Make (MakeShared<String>(" default" ), MakeShared<String>(" Views" ), column_defs);
1111
1162
1112
1163
// create data block for output state
1113
- UniquePtr<DataBlock> output_block_ptr = DataBlock::MakeUniquePtr () ;
1164
+ UniquePtr<DataBlock> output_block_ptr = nullptr ;
1114
1165
Vector<SharedPtr<DataType>> column_types{
1115
1166
varchar_type,
1116
1167
varchar_type,
1117
1168
varchar_type,
1118
1169
};
1119
-
1120
- output_block_ptr->Init (column_types);
1170
+ SizeT row_count = 0 ;
1121
1171
1122
1172
SizeT column_count = table_entry->ColumnCount ();
1123
1173
for (SizeT input_column_id = 0 ; input_column_id < column_count; ++input_column_id) {
1174
+ if (!output_block_ptr) {
1175
+ output_block_ptr = DataBlock::MakeUniquePtr ();
1176
+ output_block_ptr->Init (column_types);
1177
+ }
1178
+
1124
1179
const ColumnDef *column = table_entry->GetColumnDefByID (input_column_id);
1125
1180
1126
1181
SizeT output_column_idx = 0 ;
@@ -1160,10 +1215,19 @@ void PhysicalShow::ExecuteShowColumns(QueryContext *query_context, ShowOperatorS
1160
1215
ValueExpression value_expr (value);
1161
1216
value_expr.AppendToChunk (output_block_ptr->column_vectors [output_column_idx]);
1162
1217
}
1218
+
1219
+ if (++row_count == output_block_ptr->capacity ()) {
1220
+ output_block_ptr->Finalize ();
1221
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1222
+ output_block_ptr = nullptr ;
1223
+ row_count = 0 ;
1224
+ }
1163
1225
}
1164
- output_block_ptr->Finalize ();
1165
1226
1166
- show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1227
+ if (output_block_ptr) {
1228
+ output_block_ptr->Finalize ();
1229
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1230
+ }
1167
1231
}
1168
1232
1169
1233
void PhysicalShow::ExecuteShowSegments (QueryContext *query_context, ShowOperatorState *show_operator_state) {
@@ -1178,15 +1242,20 @@ void PhysicalShow::ExecuteShowSegments(QueryContext *query_context, ShowOperator
1178
1242
1179
1243
auto varchar_type = MakeShared<DataType>(LogicalType::kVarchar );
1180
1244
auto bigint_type = MakeShared<DataType>(LogicalType::kBigInt );
1181
- UniquePtr<DataBlock> output_block_ptr = DataBlock::MakeUniquePtr () ;
1245
+ UniquePtr<DataBlock> output_block_ptr = nullptr ;
1182
1246
Vector<SharedPtr<DataType>> column_types{
1183
1247
bigint_type,
1184
1248
varchar_type,
1185
1249
varchar_type,
1186
1250
};
1187
- output_block_ptr-> Init (column_types) ;
1251
+ SizeT row_count = 0 ;
1188
1252
1189
1253
for (auto &[_, segment_entry] : table_entry->segment_map ()) {
1254
+ if (!output_block_ptr) {
1255
+ output_block_ptr = DataBlock::MakeUniquePtr ();
1256
+ output_block_ptr->Init (column_types);
1257
+ }
1258
+
1190
1259
SizeT column_id = 0 ;
1191
1260
{
1192
1261
Value value = Value::MakeBigInt (segment_entry->segment_id ());
@@ -1208,10 +1277,19 @@ void PhysicalShow::ExecuteShowSegments(QueryContext *query_context, ShowOperator
1208
1277
ValueExpression value_expr (value);
1209
1278
value_expr.AppendToChunk (output_block_ptr->column_vectors [column_id]);
1210
1279
}
1280
+
1281
+ if (++row_count == output_block_ptr->capacity ()) {
1282
+ output_block_ptr->Finalize ();
1283
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1284
+ output_block_ptr = nullptr ;
1285
+ row_count = 0 ;
1286
+ }
1211
1287
}
1212
1288
1213
- output_block_ptr->Finalize ();
1214
- show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1289
+ if (output_block_ptr) {
1290
+ output_block_ptr->Finalize ();
1291
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1292
+ }
1215
1293
}
1216
1294
1217
1295
void PhysicalShow::ExecuteShowSegmentDetail (QueryContext *query_context, ShowOperatorState *show_operator_state) {
@@ -1335,13 +1413,13 @@ void PhysicalShow::ExecuteShowBlocks(QueryContext *query_context, ShowOperatorSt
1335
1413
1336
1414
auto bigint_type = MakeShared<DataType>(LogicalType::kBigInt );
1337
1415
auto varchar_type = MakeShared<DataType>(LogicalType::kVarchar );
1338
- UniquePtr<DataBlock> output_block_ptr = DataBlock::MakeUniquePtr () ;
1416
+ UniquePtr<DataBlock> output_block_ptr = nullptr ;
1339
1417
Vector<SharedPtr<DataType>> column_types{
1340
1418
bigint_type,
1341
1419
varchar_type,
1342
1420
bigint_type,
1343
1421
};
1344
- output_block_ptr-> Init (column_types) ;
1422
+ SizeT row_count = 0 ;
1345
1423
1346
1424
auto segment_entry = table_entry->GetSegmentByID (*segment_id_, begin_ts);
1347
1425
if (!segment_entry) {
@@ -1350,6 +1428,11 @@ void PhysicalShow::ExecuteShowBlocks(QueryContext *query_context, ShowOperatorSt
1350
1428
}
1351
1429
auto block_entry_iter = BlockEntryIter (segment_entry.get ());
1352
1430
for (auto *block_entry = block_entry_iter.Next (); block_entry != nullptr ; block_entry = block_entry_iter.Next ()) {
1431
+ if (!output_block_ptr) {
1432
+ output_block_ptr = DataBlock::MakeUniquePtr ();
1433
+ output_block_ptr->Init (column_types);
1434
+ }
1435
+
1353
1436
SizeT column_id = 0 ;
1354
1437
{
1355
1438
Value value = Value::MakeBigInt (block_entry->block_id ());
@@ -1371,10 +1454,19 @@ void PhysicalShow::ExecuteShowBlocks(QueryContext *query_context, ShowOperatorSt
1371
1454
ValueExpression value_expr (value);
1372
1455
value_expr.AppendToChunk (output_block_ptr->column_vectors [column_id]);
1373
1456
}
1457
+
1458
+ if (++row_count == output_block_ptr->capacity ()) {
1459
+ output_block_ptr->Finalize ();
1460
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1461
+ output_block_ptr = nullptr ;
1462
+ row_count = 0 ;
1463
+ }
1374
1464
}
1375
1465
1376
- output_block_ptr->Finalize ();
1377
- show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1466
+ if (output_block_ptr) {
1467
+ output_block_ptr->Finalize ();
1468
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
1469
+ }
1378
1470
}
1379
1471
1380
1472
void PhysicalShow::ExecuteShowBlockDetail (QueryContext *query_context, ShowOperatorState *show_operator_state) {
@@ -1606,7 +1698,7 @@ void PhysicalShow::ExecuteShowBlockColumn(QueryContext *query_context, ShowOpera
1606
1698
++column_id;
1607
1699
{
1608
1700
String outline_storage;
1609
- for (SizeT idx = 0 ; idx < outline_count; ++ idx) {
1701
+ for (SizeT idx = 0 ; idx < outline_count; ++idx) {
1610
1702
outline_storage += *(column_block_entry->OutlineFilename (idx));
1611
1703
outline_storage += " ;" ;
1612
1704
}
@@ -2178,13 +2270,18 @@ void PhysicalShow::ExecuteShowIndexes(QueryContext *query_context, ShowOperatorS
2178
2270
2179
2271
auto table_def = TableDef::Make (MakeShared<String>(" default" ), MakeShared<String>(" Views" ), column_defs);
2180
2272
2181
- UniquePtr<DataBlock> output_block_ptr = DataBlock::MakeUniquePtr () ;
2273
+ UniquePtr<DataBlock> output_block_ptr = nullptr ;
2182
2274
Vector<SharedPtr<DataType>> column_types{varchar_type, varchar_type, bigint_type, varchar_type, varchar_type, varchar_type, varchar_type};
2183
- output_block_ptr-> Init (column_types) ;
2275
+ SizeT row_count = 0 ;
2184
2276
2185
2277
{
2186
2278
auto map_guard = table_entry->IndexMetaMap ();
2187
2279
for (const auto &[index_name, index_meta] : *map_guard) {
2280
+ if (!output_block_ptr) {
2281
+ output_block_ptr = DataBlock::MakeUniquePtr ();
2282
+ output_block_ptr->Init (column_types);
2283
+ }
2284
+
2188
2285
auto [table_index_entry, status] = index_meta->GetEntryNolock (txn->TxnID (), txn->BeginTS ());
2189
2286
if (!status.ok ()) {
2190
2287
// Index isn't found.
@@ -2256,10 +2353,20 @@ void PhysicalShow::ExecuteShowIndexes(QueryContext *query_context, ShowOperatorS
2256
2353
ValueExpression value_expr (value);
2257
2354
value_expr.AppendToChunk (output_block_ptr->column_vectors [column_id]);
2258
2355
}
2356
+
2357
+ if (++row_count == output_block_ptr->capacity ()) {
2358
+ output_block_ptr->Finalize ();
2359
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
2360
+ output_block_ptr = nullptr ;
2361
+ row_count = 0 ;
2362
+ }
2259
2363
}
2260
2364
}
2261
- output_block_ptr->Finalize ();
2262
- show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
2365
+
2366
+ if (output_block_ptr) {
2367
+ output_block_ptr->Finalize ();
2368
+ show_operator_state->output_ .emplace_back (std::move (output_block_ptr));
2369
+ }
2263
2370
}
2264
2371
2265
2372
void PhysicalShow::ExecuteShowViewDetail (QueryContext *query_context,
0 commit comments