duckdb 0.3.2-dev1175.0 → 0.3.2-dev1197.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/duckdb.cpp +1308 -856
- package/src/duckdb.hpp +192 -205
- package/src/parquet-amalgamation.cpp +36635 -36635
package/src/duckdb.cpp
CHANGED
|
@@ -853,6 +853,262 @@ string IndexCatalogEntry::ToSQL() {
|
|
|
853
853
|
} // namespace duckdb
|
|
854
854
|
|
|
855
855
|
|
|
856
|
+
//===----------------------------------------------------------------------===//
|
|
857
|
+
// DuckDB
|
|
858
|
+
//
|
|
859
|
+
// duckdb/common/field_writer.hpp
|
|
860
|
+
//
|
|
861
|
+
//
|
|
862
|
+
//===----------------------------------------------------------------------===//
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
#include <type_traits>
|
|
869
|
+
|
|
870
|
+
namespace duckdb {
|
|
871
|
+
class BufferedSerializer;
|
|
872
|
+
|
|
873
|
+
class FieldWriter {
|
|
874
|
+
public:
|
|
875
|
+
FieldWriter(Serializer &serializer);
|
|
876
|
+
~FieldWriter();
|
|
877
|
+
|
|
878
|
+
public:
|
|
879
|
+
template <class T>
|
|
880
|
+
void WriteField(const T &element) {
|
|
881
|
+
static_assert(std::is_trivially_destructible<T>(), "WriteField object must be trivially destructible");
|
|
882
|
+
|
|
883
|
+
AddField();
|
|
884
|
+
WriteData((const_data_ptr_t)&element, sizeof(T));
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
//! Write a string with a length prefix
|
|
888
|
+
void WriteString(const string &val) {
|
|
889
|
+
WriteStringLen((const_data_ptr_t)val.c_str(), val.size());
|
|
890
|
+
}
|
|
891
|
+
void WriteStringLen(const_data_ptr_t val, idx_t len) {
|
|
892
|
+
AddField();
|
|
893
|
+
Write<uint32_t>((uint32_t)len);
|
|
894
|
+
if (len > 0) {
|
|
895
|
+
WriteData(val, len);
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
void WriteBlob(const_data_ptr_t val, idx_t len) {
|
|
899
|
+
AddField();
|
|
900
|
+
if (len > 0) {
|
|
901
|
+
WriteData(val, len);
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
template <class T, class CONTAINER_TYPE = vector<T>>
|
|
906
|
+
void WriteList(const CONTAINER_TYPE &elements) {
|
|
907
|
+
AddField();
|
|
908
|
+
Write<uint32_t>(elements.size());
|
|
909
|
+
for (auto &element : elements) {
|
|
910
|
+
Write<T>(element);
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
template <class T>
|
|
915
|
+
void WriteSerializable(const T &element) {
|
|
916
|
+
AddField();
|
|
917
|
+
element.Serialize(*buffer);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
template <class T>
|
|
921
|
+
void WriteSerializableList(const vector<unique_ptr<T>> &elements) {
|
|
922
|
+
AddField();
|
|
923
|
+
Write<uint32_t>(elements.size());
|
|
924
|
+
for (idx_t i = 0; i < elements.size(); i++) {
|
|
925
|
+
elements[i]->Serialize(*buffer);
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
template <class T>
|
|
930
|
+
void WriteRegularSerializableList(const vector<T> &elements) {
|
|
931
|
+
AddField();
|
|
932
|
+
Write<uint32_t>(elements.size());
|
|
933
|
+
for (idx_t i = 0; i < elements.size(); i++) {
|
|
934
|
+
elements[i].Serialize(*buffer);
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
template <class T>
|
|
939
|
+
void WriteOptional(const unique_ptr<T> &element) {
|
|
940
|
+
AddField();
|
|
941
|
+
Write<bool>(element ? true : false);
|
|
942
|
+
if (element) {
|
|
943
|
+
element->Serialize(*buffer);
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
// Called after all fields have been written. Should always be called.
|
|
948
|
+
void Finalize();
|
|
949
|
+
|
|
950
|
+
Serializer &GetSerializer() {
|
|
951
|
+
return *buffer;
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
private:
|
|
955
|
+
void AddField() {
|
|
956
|
+
field_count++;
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
template <class T>
|
|
960
|
+
void Write(const T &element) {
|
|
961
|
+
WriteData((const_data_ptr_t)&element, sizeof(T));
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
void WriteData(const_data_ptr_t buffer, idx_t write_size);
|
|
965
|
+
|
|
966
|
+
private:
|
|
967
|
+
Serializer &serializer;
|
|
968
|
+
unique_ptr<BufferedSerializer> buffer;
|
|
969
|
+
idx_t field_count;
|
|
970
|
+
};
|
|
971
|
+
|
|
972
|
+
template <>
|
|
973
|
+
void FieldWriter::Write(const string &val);
|
|
974
|
+
|
|
975
|
+
class FieldDeserializer : public Deserializer {
|
|
976
|
+
public:
|
|
977
|
+
FieldDeserializer(Deserializer &root);
|
|
978
|
+
|
|
979
|
+
public:
|
|
980
|
+
void ReadData(data_ptr_t buffer, idx_t read_size) override;
|
|
981
|
+
|
|
982
|
+
void SetRemainingData(idx_t remaining_data);
|
|
983
|
+
idx_t RemainingData();
|
|
984
|
+
|
|
985
|
+
private:
|
|
986
|
+
Deserializer &root;
|
|
987
|
+
idx_t remaining_data;
|
|
988
|
+
};
|
|
989
|
+
|
|
990
|
+
class FieldReader {
|
|
991
|
+
public:
|
|
992
|
+
FieldReader(Deserializer &source);
|
|
993
|
+
~FieldReader();
|
|
994
|
+
|
|
995
|
+
public:
|
|
996
|
+
template <class T>
|
|
997
|
+
T ReadRequired() {
|
|
998
|
+
if (field_count >= max_field_count) {
|
|
999
|
+
// field is not there, throw an exception
|
|
1000
|
+
throw SerializationException("Attempting to read a required field, but field is missing");
|
|
1001
|
+
}
|
|
1002
|
+
// field is there, read the actual value
|
|
1003
|
+
AddField();
|
|
1004
|
+
return source.Read<T>();
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
template <class T>
|
|
1008
|
+
T ReadField(T default_value) {
|
|
1009
|
+
if (field_count >= max_field_count) {
|
|
1010
|
+
// field is not there, read the default value
|
|
1011
|
+
return default_value;
|
|
1012
|
+
}
|
|
1013
|
+
// field is there, read the actual value
|
|
1014
|
+
AddField();
|
|
1015
|
+
return source.Read<T>();
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
template <class T>
|
|
1019
|
+
vector<T> ReadRequiredList() {
|
|
1020
|
+
if (field_count >= max_field_count) {
|
|
1021
|
+
// field is not there, throw an exception
|
|
1022
|
+
throw SerializationException("Attempting to read a required field, but field is missing");
|
|
1023
|
+
}
|
|
1024
|
+
AddField();
|
|
1025
|
+
auto result_count = source.Read<uint32_t>();
|
|
1026
|
+
vector<T> result;
|
|
1027
|
+
for (idx_t i = 0; i < result_count; i++) {
|
|
1028
|
+
result.push_back(source.Read<T>());
|
|
1029
|
+
}
|
|
1030
|
+
return result;
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
template <class T>
|
|
1034
|
+
unique_ptr<T> ReadOptional(unique_ptr<T> default_value) {
|
|
1035
|
+
if (field_count >= max_field_count) {
|
|
1036
|
+
// field is not there, read the default value
|
|
1037
|
+
return default_value;
|
|
1038
|
+
}
|
|
1039
|
+
// field is there, read the actual value
|
|
1040
|
+
AddField();
|
|
1041
|
+
return source.template ReadOptional<T>();
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
template <class T, class RETURN_TYPE = unique_ptr<T>>
|
|
1045
|
+
RETURN_TYPE ReadSerializable(RETURN_TYPE default_value) {
|
|
1046
|
+
if (field_count >= max_field_count) {
|
|
1047
|
+
// field is not there, read the default value
|
|
1048
|
+
return default_value;
|
|
1049
|
+
}
|
|
1050
|
+
// field is there, read the actual value
|
|
1051
|
+
AddField();
|
|
1052
|
+
return T::Deserialize(source);
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
template <class T, class RETURN_TYPE = unique_ptr<T>>
|
|
1056
|
+
RETURN_TYPE ReadRequiredSerializable() {
|
|
1057
|
+
if (field_count >= max_field_count) {
|
|
1058
|
+
// field is not there, read the default value
|
|
1059
|
+
throw SerializationException("Attempting to read mandatory field, but field is missing");
|
|
1060
|
+
}
|
|
1061
|
+
// field is there, read the actual value
|
|
1062
|
+
AddField();
|
|
1063
|
+
return T::Deserialize(source);
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
template <class T, class RETURN_TYPE = unique_ptr<T>>
|
|
1067
|
+
vector<RETURN_TYPE> ReadRequiredSerializableList() {
|
|
1068
|
+
if (field_count >= max_field_count) {
|
|
1069
|
+
// field is not there, read the default value
|
|
1070
|
+
throw SerializationException("Attempting to read mandatory field, but field is missing");
|
|
1071
|
+
}
|
|
1072
|
+
// field is there, read the actual value
|
|
1073
|
+
AddField();
|
|
1074
|
+
auto result_count = source.Read<uint32_t>();
|
|
1075
|
+
|
|
1076
|
+
vector<RETURN_TYPE> result;
|
|
1077
|
+
for (idx_t i = 0; i < result_count; i++) {
|
|
1078
|
+
result.push_back(T::Deserialize(source));
|
|
1079
|
+
}
|
|
1080
|
+
return result;
|
|
1081
|
+
}
|
|
1082
|
+
void ReadBlob(data_ptr_t result, idx_t read_size) {
|
|
1083
|
+
if (field_count >= max_field_count) {
|
|
1084
|
+
// field is not there, throw an exception
|
|
1085
|
+
throw SerializationException("Attempting to read a required field, but field is missing");
|
|
1086
|
+
}
|
|
1087
|
+
// field is there, read the actual value
|
|
1088
|
+
AddField();
|
|
1089
|
+
source.ReadData(result, read_size);
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
//! Called after all fields have been read. Should always be called.
|
|
1093
|
+
void Finalize();
|
|
1094
|
+
|
|
1095
|
+
Deserializer &GetSource() {
|
|
1096
|
+
return source;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
private:
|
|
1100
|
+
void AddField() {
|
|
1101
|
+
field_count++;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
private:
|
|
1105
|
+
FieldDeserializer source;
|
|
1106
|
+
idx_t field_count;
|
|
1107
|
+
idx_t max_field_count;
|
|
1108
|
+
idx_t total_size;
|
|
1109
|
+
};
|
|
1110
|
+
|
|
1111
|
+
} // namespace duckdb
|
|
856
1112
|
|
|
857
1113
|
|
|
858
1114
|
namespace duckdb {
|
|
@@ -863,36 +1119,39 @@ MacroCatalogEntry::MacroCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schem
|
|
|
863
1119
|
this->internal = info->internal;
|
|
864
1120
|
}
|
|
865
1121
|
|
|
866
|
-
void MacroCatalogEntry::Serialize(Serializer &
|
|
1122
|
+
void MacroCatalogEntry::Serialize(Serializer &main_serializer) {
|
|
867
1123
|
D_ASSERT(!internal);
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
serializer.Write<uint32_t>((uint32_t)function->default_parameters.size());
|
|
1124
|
+
FieldWriter writer(main_serializer);
|
|
1125
|
+
writer.WriteString(schema->name);
|
|
1126
|
+
writer.WriteString(name);
|
|
1127
|
+
writer.WriteSerializable(*function->expression);
|
|
1128
|
+
writer.WriteSerializableList(function->parameters);
|
|
1129
|
+
writer.WriteField<uint32_t>((uint32_t)function->default_parameters.size());
|
|
1130
|
+
auto &serializer = writer.GetSerializer();
|
|
876
1131
|
for (auto &kv : function->default_parameters) {
|
|
877
1132
|
serializer.WriteString(kv.first);
|
|
878
1133
|
kv.second->Serialize(serializer);
|
|
879
1134
|
}
|
|
1135
|
+
writer.Finalize();
|
|
880
1136
|
}
|
|
881
1137
|
|
|
882
|
-
unique_ptr<CreateMacroInfo> MacroCatalogEntry::Deserialize(Deserializer &
|
|
1138
|
+
unique_ptr<CreateMacroInfo> MacroCatalogEntry::Deserialize(Deserializer &main_source) {
|
|
883
1139
|
auto info = make_unique<CreateMacroInfo>();
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
info->
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
auto default_param_count =
|
|
1140
|
+
|
|
1141
|
+
FieldReader reader(main_source);
|
|
1142
|
+
info->schema = reader.ReadRequired<string>();
|
|
1143
|
+
info->name = reader.ReadRequired<string>();
|
|
1144
|
+
auto expression = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
1145
|
+
info->function = make_unique<MacroFunction>(move(expression));
|
|
1146
|
+
info->function->parameters = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
1147
|
+
auto default_param_count = reader.ReadRequired<uint32_t>();
|
|
1148
|
+
auto &source = reader.GetSource();
|
|
892
1149
|
for (idx_t i = 0; i < default_param_count; i++) {
|
|
893
1150
|
auto name = source.Read<string>();
|
|
894
1151
|
info->function->default_parameters[name] = ParsedExpression::Deserialize(source);
|
|
895
1152
|
}
|
|
1153
|
+
reader.Finalize();
|
|
1154
|
+
|
|
896
1155
|
return info;
|
|
897
1156
|
}
|
|
898
1157
|
|
|
@@ -945,7 +1204,7 @@ public:
|
|
|
945
1204
|
//! Create a TypeCatalogEntry and initialize storage for it
|
|
946
1205
|
TypeCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateTypeInfo *info);
|
|
947
1206
|
|
|
948
|
-
|
|
1207
|
+
LogicalType user_type;
|
|
949
1208
|
|
|
950
1209
|
public:
|
|
951
1210
|
//! Serialize the meta information of the TypeCatalogEntry a serializer
|
|
@@ -1238,12 +1497,18 @@ void SchemaCatalogEntry::Scan(CatalogType type, const std::function<void(Catalog
|
|
|
1238
1497
|
}
|
|
1239
1498
|
|
|
1240
1499
|
void SchemaCatalogEntry::Serialize(Serializer &serializer) {
|
|
1241
|
-
serializer
|
|
1500
|
+
FieldWriter writer(serializer);
|
|
1501
|
+
writer.WriteString(name);
|
|
1502
|
+
writer.Finalize();
|
|
1242
1503
|
}
|
|
1243
1504
|
|
|
1244
1505
|
unique_ptr<CreateSchemaInfo> SchemaCatalogEntry::Deserialize(Deserializer &source) {
|
|
1245
1506
|
auto info = make_unique<CreateSchemaInfo>();
|
|
1246
|
-
|
|
1507
|
+
|
|
1508
|
+
FieldReader reader(source);
|
|
1509
|
+
info->schema = reader.ReadRequired<string>();
|
|
1510
|
+
reader.Finalize();
|
|
1511
|
+
|
|
1247
1512
|
return info;
|
|
1248
1513
|
}
|
|
1249
1514
|
|
|
@@ -1303,28 +1568,32 @@ SequenceCatalogEntry::SequenceCatalogEntry(Catalog *catalog, SchemaCatalogEntry
|
|
|
1303
1568
|
}
|
|
1304
1569
|
|
|
1305
1570
|
void SequenceCatalogEntry::Serialize(Serializer &serializer) {
|
|
1306
|
-
serializer
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1571
|
+
FieldWriter writer(serializer);
|
|
1572
|
+
writer.WriteString(schema->name);
|
|
1573
|
+
writer.WriteString(name);
|
|
1574
|
+
writer.WriteField<uint64_t>(usage_count);
|
|
1575
|
+
writer.WriteField<int64_t>(increment);
|
|
1576
|
+
writer.WriteField<int64_t>(min_value);
|
|
1577
|
+
writer.WriteField<int64_t>(max_value);
|
|
1578
|
+
writer.WriteField<int64_t>(counter);
|
|
1579
|
+
writer.WriteField<bool>(cycle);
|
|
1580
|
+
writer.Finalize();
|
|
1315
1581
|
}
|
|
1316
1582
|
|
|
1317
1583
|
unique_ptr<CreateSequenceInfo> SequenceCatalogEntry::Deserialize(Deserializer &source) {
|
|
1318
1584
|
auto info = make_unique<CreateSequenceInfo>();
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
info->
|
|
1323
|
-
info->
|
|
1324
|
-
info->
|
|
1325
|
-
info->
|
|
1326
|
-
info->
|
|
1327
|
-
info->
|
|
1585
|
+
|
|
1586
|
+
FieldReader reader(source);
|
|
1587
|
+
info->schema = reader.ReadRequired<string>();
|
|
1588
|
+
info->name = reader.ReadRequired<string>();
|
|
1589
|
+
info->usage_count = reader.ReadRequired<uint64_t>();
|
|
1590
|
+
info->increment = reader.ReadRequired<int64_t>();
|
|
1591
|
+
info->min_value = reader.ReadRequired<int64_t>();
|
|
1592
|
+
info->max_value = reader.ReadRequired<int64_t>();
|
|
1593
|
+
info->start_value = reader.ReadRequired<int64_t>();
|
|
1594
|
+
info->cycle = reader.ReadRequired<bool>();
|
|
1595
|
+
reader.Finalize();
|
|
1596
|
+
|
|
1328
1597
|
return info;
|
|
1329
1598
|
}
|
|
1330
1599
|
|
|
@@ -1375,12 +1644,10 @@ public:
|
|
|
1375
1644
|
public:
|
|
1376
1645
|
DUCKDB_API string ToString() const override;
|
|
1377
1646
|
|
|
1378
|
-
DUCKDB_API unique_ptr<Constraint> Copy() override;
|
|
1647
|
+
DUCKDB_API unique_ptr<Constraint> Copy() const override;
|
|
1379
1648
|
|
|
1380
|
-
|
|
1381
|
-
DUCKDB_API
|
|
1382
|
-
//! Deserializes a CheckConstraint
|
|
1383
|
-
DUCKDB_API static unique_ptr<Constraint> Deserialize(Deserializer &source);
|
|
1649
|
+
DUCKDB_API void Serialize(FieldWriter &writer) const override;
|
|
1650
|
+
DUCKDB_API static unique_ptr<Constraint> Deserialize(FieldReader &source);
|
|
1384
1651
|
};
|
|
1385
1652
|
|
|
1386
1653
|
} // namespace duckdb
|
|
@@ -1417,12 +1684,12 @@ public:
|
|
|
1417
1684
|
public:
|
|
1418
1685
|
DUCKDB_API string ToString() const override;
|
|
1419
1686
|
|
|
1420
|
-
DUCKDB_API unique_ptr<Constraint> Copy() override;
|
|
1687
|
+
DUCKDB_API unique_ptr<Constraint> Copy() const override;
|
|
1421
1688
|
|
|
1422
1689
|
//! Serialize to a stand-alone binary blob
|
|
1423
|
-
DUCKDB_API void Serialize(
|
|
1690
|
+
DUCKDB_API void Serialize(FieldWriter &writer) const override;
|
|
1424
1691
|
//! Deserializes a ParsedConstraint
|
|
1425
|
-
DUCKDB_API static unique_ptr<Constraint> Deserialize(
|
|
1692
|
+
DUCKDB_API static unique_ptr<Constraint> Deserialize(FieldReader &source);
|
|
1426
1693
|
};
|
|
1427
1694
|
|
|
1428
1695
|
} // namespace duckdb
|
|
@@ -2398,6 +2665,7 @@ public:
|
|
|
2398
2665
|
} // namespace duckdb
|
|
2399
2666
|
|
|
2400
2667
|
|
|
2668
|
+
|
|
2401
2669
|
#include <algorithm>
|
|
2402
2670
|
#include <sstream>
|
|
2403
2671
|
|
|
@@ -2760,18 +3028,26 @@ vector<LogicalType> TableCatalogEntry::GetTypes() {
|
|
|
2760
3028
|
|
|
2761
3029
|
void TableCatalogEntry::Serialize(Serializer &serializer) {
|
|
2762
3030
|
D_ASSERT(!internal);
|
|
2763
|
-
|
|
2764
|
-
serializer
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
3031
|
+
|
|
3032
|
+
FieldWriter writer(serializer);
|
|
3033
|
+
writer.WriteString(schema->name);
|
|
3034
|
+
writer.WriteString(name);
|
|
3035
|
+
writer.WriteRegularSerializableList(columns);
|
|
3036
|
+
writer.WriteSerializableList(constraints);
|
|
3037
|
+
writer.Finalize();
|
|
3038
|
+
}
|
|
3039
|
+
|
|
3040
|
+
unique_ptr<CreateTableInfo> TableCatalogEntry::Deserialize(Deserializer &source) {
|
|
3041
|
+
auto info = make_unique<CreateTableInfo>();
|
|
3042
|
+
|
|
3043
|
+
FieldReader reader(source);
|
|
3044
|
+
info->schema = reader.ReadRequired<string>();
|
|
3045
|
+
info->table = reader.ReadRequired<string>();
|
|
3046
|
+
info->columns = reader.ReadRequiredSerializableList<ColumnDefinition, ColumnDefinition>();
|
|
3047
|
+
info->constraints = reader.ReadRequiredSerializableList<Constraint>();
|
|
3048
|
+
reader.Finalize();
|
|
3049
|
+
|
|
3050
|
+
return info;
|
|
2775
3051
|
}
|
|
2776
3052
|
|
|
2777
3053
|
string TableCatalogEntry::ToSQL() {
|
|
@@ -2856,26 +3132,6 @@ string TableCatalogEntry::ToSQL() {
|
|
|
2856
3132
|
return ss.str();
|
|
2857
3133
|
}
|
|
2858
3134
|
|
|
2859
|
-
unique_ptr<CreateTableInfo> TableCatalogEntry::Deserialize(Deserializer &source) {
|
|
2860
|
-
auto info = make_unique<CreateTableInfo>();
|
|
2861
|
-
|
|
2862
|
-
info->schema = source.Read<string>();
|
|
2863
|
-
info->table = source.Read<string>();
|
|
2864
|
-
auto column_count = source.Read<uint32_t>();
|
|
2865
|
-
|
|
2866
|
-
for (uint32_t i = 0; i < column_count; i++) {
|
|
2867
|
-
auto column = ColumnDefinition::Deserialize(source);
|
|
2868
|
-
info->columns.push_back(move(column));
|
|
2869
|
-
}
|
|
2870
|
-
auto constraint_count = source.Read<uint32_t>();
|
|
2871
|
-
|
|
2872
|
-
for (uint32_t i = 0; i < constraint_count; i++) {
|
|
2873
|
-
auto constraint = Constraint::Deserialize(source);
|
|
2874
|
-
info->constraints.push_back(move(constraint));
|
|
2875
|
-
}
|
|
2876
|
-
return info;
|
|
2877
|
-
}
|
|
2878
|
-
|
|
2879
3135
|
unique_ptr<CatalogEntry> TableCatalogEntry::Copy(ClientContext &context) {
|
|
2880
3136
|
auto create_info = make_unique<CreateTableInfo>(schema->name, name);
|
|
2881
3137
|
for (idx_t i = 0; i < columns.size(); i++) {
|
|
@@ -2959,30 +3215,35 @@ TableFunctionCatalogEntry::TableFunctionCatalogEntry(Catalog *catalog, SchemaCat
|
|
|
2959
3215
|
namespace duckdb {
|
|
2960
3216
|
|
|
2961
3217
|
TypeCatalogEntry::TypeCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateTypeInfo *info)
|
|
2962
|
-
: StandardEntry(CatalogType::TYPE_ENTRY, schema, catalog, info->name) {
|
|
2963
|
-
user_type = make_unique<LogicalType>(*info->type);
|
|
3218
|
+
: StandardEntry(CatalogType::TYPE_ENTRY, schema, catalog, info->name), user_type(info->type) {
|
|
2964
3219
|
}
|
|
2965
3220
|
|
|
2966
3221
|
void TypeCatalogEntry::Serialize(Serializer &serializer) {
|
|
2967
|
-
serializer
|
|
2968
|
-
|
|
2969
|
-
|
|
3222
|
+
FieldWriter writer(serializer);
|
|
3223
|
+
writer.WriteString(schema->name);
|
|
3224
|
+
writer.WriteString(name);
|
|
3225
|
+
writer.WriteSerializable(user_type);
|
|
3226
|
+
writer.Finalize();
|
|
2970
3227
|
}
|
|
2971
3228
|
|
|
2972
3229
|
unique_ptr<CreateTypeInfo> TypeCatalogEntry::Deserialize(Deserializer &source) {
|
|
2973
3230
|
auto info = make_unique<CreateTypeInfo>();
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
info->
|
|
3231
|
+
|
|
3232
|
+
FieldReader reader(source);
|
|
3233
|
+
info->schema = reader.ReadRequired<string>();
|
|
3234
|
+
info->name = reader.ReadRequired<string>();
|
|
3235
|
+
info->type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
|
|
3236
|
+
reader.Finalize();
|
|
3237
|
+
|
|
2977
3238
|
return info;
|
|
2978
3239
|
}
|
|
2979
3240
|
|
|
2980
3241
|
string TypeCatalogEntry::ToSQL() {
|
|
2981
3242
|
std::stringstream ss;
|
|
2982
|
-
switch (user_type
|
|
3243
|
+
switch (user_type.id()) {
|
|
2983
3244
|
case (LogicalTypeId::ENUM): {
|
|
2984
|
-
Vector values_insert_order(EnumType::GetValuesInsertOrder(
|
|
2985
|
-
idx_t size = EnumType::GetSize(
|
|
3245
|
+
Vector values_insert_order(EnumType::GetValuesInsertOrder(user_type));
|
|
3246
|
+
idx_t size = EnumType::GetSize(user_type);
|
|
2986
3247
|
ss << "CREATE TYPE ";
|
|
2987
3248
|
ss << name;
|
|
2988
3249
|
ss << " AS ENUM ( ";
|
|
@@ -3051,35 +3312,28 @@ unique_ptr<CatalogEntry> ViewCatalogEntry::AlterEntry(ClientContext &context, Al
|
|
|
3051
3312
|
|
|
3052
3313
|
void ViewCatalogEntry::Serialize(Serializer &serializer) {
|
|
3053
3314
|
D_ASSERT(!internal);
|
|
3054
|
-
serializer
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
}
|
|
3063
|
-
serializer.Write<uint32_t>((uint32_t)types.size());
|
|
3064
|
-
for (auto &sql_type : types) {
|
|
3065
|
-
sql_type.Serialize(serializer);
|
|
3066
|
-
}
|
|
3315
|
+
FieldWriter writer(serializer);
|
|
3316
|
+
writer.WriteString(schema->name);
|
|
3317
|
+
writer.WriteString(name);
|
|
3318
|
+
writer.WriteString(sql);
|
|
3319
|
+
writer.WriteSerializable(*query);
|
|
3320
|
+
writer.WriteList<string>(aliases);
|
|
3321
|
+
writer.WriteRegularSerializableList<LogicalType>(types);
|
|
3322
|
+
writer.Finalize();
|
|
3067
3323
|
}
|
|
3068
3324
|
|
|
3069
3325
|
unique_ptr<CreateViewInfo> ViewCatalogEntry::Deserialize(Deserializer &source) {
|
|
3070
3326
|
auto info = make_unique<CreateViewInfo>();
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
info->
|
|
3074
|
-
info->
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
info->types.push_back(LogicalType::Deserialize(source));
|
|
3082
|
-
}
|
|
3327
|
+
|
|
3328
|
+
FieldReader reader(source);
|
|
3329
|
+
info->schema = reader.ReadRequired<string>();
|
|
3330
|
+
info->view_name = reader.ReadRequired<string>();
|
|
3331
|
+
info->sql = reader.ReadRequired<string>();
|
|
3332
|
+
info->query = reader.ReadRequiredSerializable<SelectStatement>();
|
|
3333
|
+
info->aliases = reader.ReadRequiredList<string>();
|
|
3334
|
+
info->types = reader.ReadRequiredSerializableList<LogicalType, LogicalType>();
|
|
3335
|
+
reader.Finalize();
|
|
3336
|
+
|
|
3083
3337
|
return info;
|
|
3084
3338
|
}
|
|
3085
3339
|
|
|
@@ -4265,7 +4519,7 @@ void DependencyManager::AlterObject(ClientContext &context, CatalogEntry *old_ob
|
|
|
4265
4519
|
auto table = (TableCatalogEntry *)new_obj;
|
|
4266
4520
|
bool deleted_dependency = true;
|
|
4267
4521
|
for (auto &column : table->columns) {
|
|
4268
|
-
if (column.type ==
|
|
4522
|
+
if (column.type == user_type->user_type) {
|
|
4269
4523
|
deleted_dependency = false;
|
|
4270
4524
|
break;
|
|
4271
4525
|
}
|
|
@@ -11993,6 +12247,92 @@ string ExceptionFormatValue::Format(const string &msg, vector<ExceptionFormatVal
|
|
|
11993
12247
|
} // namespace duckdb
|
|
11994
12248
|
|
|
11995
12249
|
|
|
12250
|
+
namespace duckdb {
|
|
12251
|
+
|
|
12252
|
+
//===--------------------------------------------------------------------===//
|
|
12253
|
+
// Field Writer
|
|
12254
|
+
//===--------------------------------------------------------------------===//
|
|
12255
|
+
FieldWriter::FieldWriter(Serializer &serializer_p)
|
|
12256
|
+
: serializer(serializer_p), buffer(make_unique<BufferedSerializer>()), field_count(0) {
|
|
12257
|
+
}
|
|
12258
|
+
|
|
12259
|
+
FieldWriter::~FieldWriter() {
|
|
12260
|
+
if (Exception::UncaughtException()) {
|
|
12261
|
+
return;
|
|
12262
|
+
}
|
|
12263
|
+
// finalize should always have been called, unless this is destroyed as part of stack unwinding
|
|
12264
|
+
D_ASSERT(!buffer);
|
|
12265
|
+
}
|
|
12266
|
+
|
|
12267
|
+
void FieldWriter::WriteData(const_data_ptr_t buffer_ptr, idx_t write_size) {
|
|
12268
|
+
D_ASSERT(buffer);
|
|
12269
|
+
buffer->WriteData(buffer_ptr, write_size);
|
|
12270
|
+
}
|
|
12271
|
+
|
|
12272
|
+
template <>
|
|
12273
|
+
void FieldWriter::Write(const string &val) {
|
|
12274
|
+
Write<uint32_t>((uint32_t)val.size());
|
|
12275
|
+
if (!val.empty()) {
|
|
12276
|
+
WriteData((const_data_ptr_t)val.c_str(), val.size());
|
|
12277
|
+
}
|
|
12278
|
+
}
|
|
12279
|
+
|
|
12280
|
+
void FieldWriter::Finalize() {
|
|
12281
|
+
D_ASSERT(buffer);
|
|
12282
|
+
|
|
12283
|
+
serializer.Write<uint32_t>(field_count);
|
|
12284
|
+
serializer.Write<uint64_t>(buffer->blob.size);
|
|
12285
|
+
serializer.WriteData(buffer->blob.data.get(), buffer->blob.size);
|
|
12286
|
+
|
|
12287
|
+
buffer.reset();
|
|
12288
|
+
}
|
|
12289
|
+
|
|
12290
|
+
//===--------------------------------------------------------------------===//
|
|
12291
|
+
// Field Deserializer
|
|
12292
|
+
//===--------------------------------------------------------------------===//
|
|
12293
|
+
FieldDeserializer::FieldDeserializer(Deserializer &root) : root(root), remaining_data(idx_t(-1)) {
|
|
12294
|
+
}
|
|
12295
|
+
|
|
12296
|
+
void FieldDeserializer::ReadData(data_ptr_t buffer, idx_t read_size) {
|
|
12297
|
+
D_ASSERT(remaining_data != idx_t(-1));
|
|
12298
|
+
D_ASSERT(read_size <= remaining_data);
|
|
12299
|
+
root.ReadData(buffer, read_size);
|
|
12300
|
+
remaining_data -= read_size;
|
|
12301
|
+
}
|
|
12302
|
+
|
|
12303
|
+
idx_t FieldDeserializer::RemainingData() {
|
|
12304
|
+
return remaining_data;
|
|
12305
|
+
}
|
|
12306
|
+
|
|
12307
|
+
void FieldDeserializer::SetRemainingData(idx_t remaining_data) {
|
|
12308
|
+
this->remaining_data = remaining_data;
|
|
12309
|
+
}
|
|
12310
|
+
|
|
12311
|
+
//===--------------------------------------------------------------------===//
|
|
12312
|
+
// Field Reader
|
|
12313
|
+
//===--------------------------------------------------------------------===//
|
|
12314
|
+
FieldReader::FieldReader(Deserializer &source_p) : source(source_p), field_count(0) {
|
|
12315
|
+
max_field_count = source_p.Read<uint32_t>();
|
|
12316
|
+
total_size = source_p.Read<uint64_t>();
|
|
12317
|
+
D_ASSERT(max_field_count > 0);
|
|
12318
|
+
source.SetRemainingData(total_size);
|
|
12319
|
+
}
|
|
12320
|
+
|
|
12321
|
+
FieldReader::~FieldReader() {
|
|
12322
|
+
}
|
|
12323
|
+
|
|
12324
|
+
void FieldReader::Finalize() {
|
|
12325
|
+
if (field_count < max_field_count) {
|
|
12326
|
+
// we can handle this case by calling source.ReadData(buffer, source.RemainingData())
|
|
12327
|
+
throw SerializationException("Not all fields were read. This file might have been written with a newer version "
|
|
12328
|
+
"of DuckDB and is incompatible with this version of DuckDB.");
|
|
12329
|
+
}
|
|
12330
|
+
D_ASSERT(source.RemainingData() == 0);
|
|
12331
|
+
}
|
|
12332
|
+
|
|
12333
|
+
} // namespace duckdb
|
|
12334
|
+
|
|
12335
|
+
|
|
11996
12336
|
|
|
11997
12337
|
|
|
11998
12338
|
|
|
@@ -23894,6 +24234,9 @@ namespace duckdb {
|
|
|
23894
24234
|
template <>
|
|
23895
24235
|
string Deserializer::Read() {
|
|
23896
24236
|
uint32_t size = Read<uint32_t>();
|
|
24237
|
+
if (size == 0) {
|
|
24238
|
+
return string();
|
|
24239
|
+
}
|
|
23897
24240
|
auto buffer = unique_ptr<data_t[]>(new data_t[size]);
|
|
23898
24241
|
ReadData(buffer.get(), size);
|
|
23899
24242
|
return string((char *)buffer.get(), size);
|
|
@@ -35503,10 +35846,12 @@ bool Value::TryCastAs(const LogicalType &target_type, bool strict) {
|
|
|
35503
35846
|
return true;
|
|
35504
35847
|
}
|
|
35505
35848
|
|
|
35506
|
-
void Value::Serialize(Serializer &
|
|
35507
|
-
|
|
35508
|
-
|
|
35849
|
+
void Value::Serialize(Serializer &main_serializer) const {
|
|
35850
|
+
FieldWriter writer(main_serializer);
|
|
35851
|
+
writer.WriteSerializable(type_);
|
|
35852
|
+
writer.WriteField<bool>(IsNull());
|
|
35509
35853
|
if (!IsNull()) {
|
|
35854
|
+
auto &serializer = writer.GetSerializer();
|
|
35510
35855
|
switch (type_.InternalType()) {
|
|
35511
35856
|
case PhysicalType::BOOL:
|
|
35512
35857
|
serializer.Write<int8_t>(value_.boolean);
|
|
@@ -35557,16 +35902,19 @@ void Value::Serialize(Serializer &serializer) {
|
|
|
35557
35902
|
}
|
|
35558
35903
|
}
|
|
35559
35904
|
}
|
|
35905
|
+
writer.Finalize();
|
|
35560
35906
|
}
|
|
35561
35907
|
|
|
35562
|
-
Value Value::Deserialize(Deserializer &
|
|
35563
|
-
|
|
35564
|
-
auto
|
|
35908
|
+
Value Value::Deserialize(Deserializer &main_source) {
|
|
35909
|
+
FieldReader reader(main_source);
|
|
35910
|
+
auto type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
|
|
35911
|
+
auto is_null = reader.ReadRequired<bool>();
|
|
35565
35912
|
Value new_value = Value(type);
|
|
35566
35913
|
if (is_null) {
|
|
35567
35914
|
return new_value;
|
|
35568
35915
|
}
|
|
35569
35916
|
new_value.is_null = false;
|
|
35917
|
+
auto &source = reader.GetSource();
|
|
35570
35918
|
switch (type.InternalType()) {
|
|
35571
35919
|
case PhysicalType::BOOL:
|
|
35572
35920
|
new_value.value_.boolean = source.Read<int8_t>();
|
|
@@ -35613,9 +35961,11 @@ Value Value::Deserialize(Deserializer &source) {
|
|
|
35613
35961
|
default: {
|
|
35614
35962
|
Vector v(type);
|
|
35615
35963
|
v.Deserialize(1, source);
|
|
35616
|
-
|
|
35964
|
+
new_value = v.GetValue(0);
|
|
35965
|
+
break;
|
|
35617
35966
|
}
|
|
35618
35967
|
}
|
|
35968
|
+
reader.Finalize();
|
|
35619
35969
|
return new_value;
|
|
35620
35970
|
}
|
|
35621
35971
|
|
|
@@ -35688,8 +36038,6 @@ bool Value::IsValid(double value) {
|
|
|
35688
36038
|
|
|
35689
36039
|
|
|
35690
36040
|
|
|
35691
|
-
|
|
35692
|
-
|
|
35693
36041
|
#include <cstring> // strlen() on Solaris
|
|
35694
36042
|
|
|
35695
36043
|
namespace duckdb {
|
|
@@ -38181,13 +38529,13 @@ struct ExtraTypeInfo {
|
|
|
38181
38529
|
ExtraTypeInfoType type;
|
|
38182
38530
|
|
|
38183
38531
|
public:
|
|
38184
|
-
virtual bool Equals(ExtraTypeInfo *other) = 0;
|
|
38532
|
+
virtual bool Equals(ExtraTypeInfo *other) const = 0;
|
|
38185
38533
|
//! Serializes a ExtraTypeInfo to a stand-alone binary blob
|
|
38186
|
-
virtual void Serialize(
|
|
38534
|
+
virtual void Serialize(FieldWriter &writer) const = 0;
|
|
38187
38535
|
//! Serializes a ExtraTypeInfo to a stand-alone binary blob
|
|
38188
|
-
static void Serialize(ExtraTypeInfo *info,
|
|
38536
|
+
static void Serialize(ExtraTypeInfo *info, FieldWriter &writer);
|
|
38189
38537
|
//! Deserializes a blob back into an ExtraTypeInfo
|
|
38190
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(
|
|
38538
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
|
38191
38539
|
};
|
|
38192
38540
|
|
|
38193
38541
|
//===--------------------------------------------------------------------===//
|
|
@@ -38202,7 +38550,7 @@ struct DecimalTypeInfo : public ExtraTypeInfo {
|
|
|
38202
38550
|
uint8_t scale;
|
|
38203
38551
|
|
|
38204
38552
|
public:
|
|
38205
|
-
bool Equals(ExtraTypeInfo *other_p) override {
|
|
38553
|
+
bool Equals(ExtraTypeInfo *other_p) const override {
|
|
38206
38554
|
if (!other_p) {
|
|
38207
38555
|
return false;
|
|
38208
38556
|
}
|
|
@@ -38213,14 +38561,14 @@ public:
|
|
|
38213
38561
|
return width == other.width && scale == other.scale;
|
|
38214
38562
|
}
|
|
38215
38563
|
|
|
38216
|
-
void Serialize(
|
|
38217
|
-
|
|
38218
|
-
|
|
38564
|
+
void Serialize(FieldWriter &writer) const override {
|
|
38565
|
+
writer.WriteField<uint8_t>(width);
|
|
38566
|
+
writer.WriteField<uint8_t>(scale);
|
|
38219
38567
|
}
|
|
38220
38568
|
|
|
38221
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(
|
|
38222
|
-
auto width =
|
|
38223
|
-
auto scale =
|
|
38569
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader) {
|
|
38570
|
+
auto width = reader.ReadRequired<uint8_t>();
|
|
38571
|
+
auto scale = reader.ReadRequired<uint8_t>();
|
|
38224
38572
|
return make_shared<DecimalTypeInfo>(width, scale);
|
|
38225
38573
|
}
|
|
38226
38574
|
};
|
|
@@ -38255,17 +38603,17 @@ struct StringTypeInfo : public ExtraTypeInfo {
|
|
|
38255
38603
|
string collation;
|
|
38256
38604
|
|
|
38257
38605
|
public:
|
|
38258
|
-
bool Equals(ExtraTypeInfo *other_p) override {
|
|
38606
|
+
bool Equals(ExtraTypeInfo *other_p) const override {
|
|
38259
38607
|
// collation info has no impact on equality
|
|
38260
38608
|
return true;
|
|
38261
38609
|
}
|
|
38262
38610
|
|
|
38263
|
-
void Serialize(
|
|
38264
|
-
|
|
38611
|
+
void Serialize(FieldWriter &writer) const override {
|
|
38612
|
+
writer.WriteString(collation);
|
|
38265
38613
|
}
|
|
38266
38614
|
|
|
38267
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(
|
|
38268
|
-
auto collation =
|
|
38615
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader) {
|
|
38616
|
+
auto collation = reader.ReadRequired<string>();
|
|
38269
38617
|
return make_shared<StringTypeInfo>(move(collation));
|
|
38270
38618
|
}
|
|
38271
38619
|
};
|
|
@@ -38297,7 +38645,7 @@ struct ListTypeInfo : public ExtraTypeInfo {
|
|
|
38297
38645
|
LogicalType child_type;
|
|
38298
38646
|
|
|
38299
38647
|
public:
|
|
38300
|
-
bool Equals(ExtraTypeInfo *other_p) override {
|
|
38648
|
+
bool Equals(ExtraTypeInfo *other_p) const override {
|
|
38301
38649
|
if (!other_p) {
|
|
38302
38650
|
return false;
|
|
38303
38651
|
}
|
|
@@ -38308,12 +38656,12 @@ public:
|
|
|
38308
38656
|
return child_type == other.child_type;
|
|
38309
38657
|
}
|
|
38310
38658
|
|
|
38311
|
-
void Serialize(
|
|
38312
|
-
|
|
38659
|
+
void Serialize(FieldWriter &writer) const override {
|
|
38660
|
+
writer.WriteSerializable(child_type);
|
|
38313
38661
|
}
|
|
38314
38662
|
|
|
38315
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(
|
|
38316
|
-
auto child_type = LogicalType
|
|
38663
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader) {
|
|
38664
|
+
auto child_type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
|
|
38317
38665
|
return make_shared<ListTypeInfo>(move(child_type));
|
|
38318
38666
|
}
|
|
38319
38667
|
};
|
|
@@ -38341,7 +38689,7 @@ struct StructTypeInfo : public ExtraTypeInfo {
|
|
|
38341
38689
|
child_list_t<LogicalType> child_types;
|
|
38342
38690
|
|
|
38343
38691
|
public:
|
|
38344
|
-
bool Equals(ExtraTypeInfo *other_p) override {
|
|
38692
|
+
bool Equals(ExtraTypeInfo *other_p) const override {
|
|
38345
38693
|
if (!other_p) {
|
|
38346
38694
|
return false;
|
|
38347
38695
|
}
|
|
@@ -38352,17 +38700,19 @@ public:
|
|
|
38352
38700
|
return child_types == other.child_types;
|
|
38353
38701
|
}
|
|
38354
38702
|
|
|
38355
|
-
void Serialize(
|
|
38356
|
-
|
|
38703
|
+
void Serialize(FieldWriter &writer) const override {
|
|
38704
|
+
writer.WriteField<uint32_t>(child_types.size());
|
|
38705
|
+
auto &serializer = writer.GetSerializer();
|
|
38357
38706
|
for (idx_t i = 0; i < child_types.size(); i++) {
|
|
38358
38707
|
serializer.WriteString(child_types[i].first);
|
|
38359
38708
|
child_types[i].second.Serialize(serializer);
|
|
38360
38709
|
}
|
|
38361
38710
|
}
|
|
38362
38711
|
|
|
38363
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(
|
|
38712
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader) {
|
|
38364
38713
|
child_list_t<LogicalType> child_list;
|
|
38365
|
-
auto child_types_size =
|
|
38714
|
+
auto child_types_size = reader.ReadRequired<uint32_t>();
|
|
38715
|
+
auto &source = reader.GetSource();
|
|
38366
38716
|
for (uint32_t i = 0; i < child_types_size; i++) {
|
|
38367
38717
|
auto name = source.Read<string>();
|
|
38368
38718
|
auto type = LogicalType::Deserialize(source);
|
|
@@ -38436,7 +38786,7 @@ struct UserTypeInfo : public ExtraTypeInfo {
|
|
|
38436
38786
|
string user_type_name;
|
|
38437
38787
|
|
|
38438
38788
|
public:
|
|
38439
|
-
bool Equals(ExtraTypeInfo *other_p) override {
|
|
38789
|
+
bool Equals(ExtraTypeInfo *other_p) const override {
|
|
38440
38790
|
if (!other_p) {
|
|
38441
38791
|
return false;
|
|
38442
38792
|
}
|
|
@@ -38447,12 +38797,12 @@ public:
|
|
|
38447
38797
|
return other.user_type_name == user_type_name;
|
|
38448
38798
|
}
|
|
38449
38799
|
|
|
38450
|
-
void Serialize(
|
|
38451
|
-
|
|
38800
|
+
void Serialize(FieldWriter &writer) const override {
|
|
38801
|
+
writer.WriteString(user_type_name);
|
|
38452
38802
|
}
|
|
38453
38803
|
|
|
38454
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(
|
|
38455
|
-
auto enum_name =
|
|
38804
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader) {
|
|
38805
|
+
auto enum_name = reader.ReadRequired<string>();
|
|
38456
38806
|
return make_shared<UserTypeInfo>(move(enum_name));
|
|
38457
38807
|
}
|
|
38458
38808
|
};
|
|
@@ -38484,7 +38834,7 @@ struct EnumTypeInfo : public ExtraTypeInfo {
|
|
|
38484
38834
|
|
|
38485
38835
|
public:
|
|
38486
38836
|
// Equalities are only used in enums with different catalog entries
|
|
38487
|
-
bool Equals(ExtraTypeInfo *other_p) override {
|
|
38837
|
+
bool Equals(ExtraTypeInfo *other_p) const override {
|
|
38488
38838
|
if (!other_p) {
|
|
38489
38839
|
return false;
|
|
38490
38840
|
}
|
|
@@ -38508,10 +38858,11 @@ public:
|
|
|
38508
38858
|
}
|
|
38509
38859
|
return true;
|
|
38510
38860
|
}
|
|
38511
|
-
|
|
38512
|
-
|
|
38513
|
-
|
|
38514
|
-
|
|
38861
|
+
|
|
38862
|
+
void Serialize(FieldWriter &writer) const override {
|
|
38863
|
+
writer.WriteField<uint32_t>(size);
|
|
38864
|
+
writer.WriteString(enum_name);
|
|
38865
|
+
((Vector &)values_insert_order).Serialize(size, writer.GetSerializer());
|
|
38515
38866
|
}
|
|
38516
38867
|
};
|
|
38517
38868
|
|
|
@@ -38523,10 +38874,11 @@ struct EnumTypeInfoTemplated : public EnumTypeInfo {
|
|
|
38523
38874
|
values[values_insert_order_p.GetValue(count).ToString()] = count;
|
|
38524
38875
|
}
|
|
38525
38876
|
}
|
|
38526
|
-
|
|
38527
|
-
|
|
38877
|
+
|
|
38878
|
+
static shared_ptr<EnumTypeInfoTemplated> Deserialize(FieldReader &reader, uint32_t size) {
|
|
38879
|
+
auto enum_name = reader.ReadRequired<string>();
|
|
38528
38880
|
Vector values_insert_order(LogicalType::VARCHAR, size);
|
|
38529
|
-
values_insert_order.Deserialize(size,
|
|
38881
|
+
values_insert_order.Deserialize(size, reader.GetSource());
|
|
38530
38882
|
return make_shared<EnumTypeInfoTemplated>(move(enum_name), values_insert_order, size);
|
|
38531
38883
|
}
|
|
38532
38884
|
unordered_map<string, T> values;
|
|
@@ -38630,39 +38982,39 @@ PhysicalType EnumType::GetPhysicalType(idx_t size) {
|
|
|
38630
38982
|
//===--------------------------------------------------------------------===//
|
|
38631
38983
|
// Extra Type Info
|
|
38632
38984
|
//===--------------------------------------------------------------------===//
|
|
38633
|
-
void ExtraTypeInfo::Serialize(ExtraTypeInfo *info,
|
|
38985
|
+
void ExtraTypeInfo::Serialize(ExtraTypeInfo *info, FieldWriter &writer) {
|
|
38634
38986
|
if (!info) {
|
|
38635
|
-
|
|
38987
|
+
writer.WriteField<ExtraTypeInfoType>(ExtraTypeInfoType::INVALID_TYPE_INFO);
|
|
38636
38988
|
} else {
|
|
38637
|
-
|
|
38638
|
-
info->Serialize(
|
|
38989
|
+
writer.WriteField<ExtraTypeInfoType>(info->type);
|
|
38990
|
+
info->Serialize(writer);
|
|
38639
38991
|
}
|
|
38640
38992
|
}
|
|
38641
|
-
shared_ptr<ExtraTypeInfo> ExtraTypeInfo::Deserialize(
|
|
38642
|
-
auto type =
|
|
38993
|
+
shared_ptr<ExtraTypeInfo> ExtraTypeInfo::Deserialize(FieldReader &reader) {
|
|
38994
|
+
auto type = reader.ReadRequired<ExtraTypeInfoType>();
|
|
38643
38995
|
switch (type) {
|
|
38644
38996
|
case ExtraTypeInfoType::INVALID_TYPE_INFO:
|
|
38645
38997
|
return nullptr;
|
|
38646
38998
|
case ExtraTypeInfoType::DECIMAL_TYPE_INFO:
|
|
38647
|
-
return DecimalTypeInfo::Deserialize(
|
|
38999
|
+
return DecimalTypeInfo::Deserialize(reader);
|
|
38648
39000
|
case ExtraTypeInfoType::STRING_TYPE_INFO:
|
|
38649
|
-
return StringTypeInfo::Deserialize(
|
|
39001
|
+
return StringTypeInfo::Deserialize(reader);
|
|
38650
39002
|
case ExtraTypeInfoType::LIST_TYPE_INFO:
|
|
38651
|
-
return ListTypeInfo::Deserialize(
|
|
39003
|
+
return ListTypeInfo::Deserialize(reader);
|
|
38652
39004
|
case ExtraTypeInfoType::STRUCT_TYPE_INFO:
|
|
38653
|
-
return StructTypeInfo::Deserialize(
|
|
39005
|
+
return StructTypeInfo::Deserialize(reader);
|
|
38654
39006
|
case ExtraTypeInfoType::USER_TYPE_INFO:
|
|
38655
|
-
return UserTypeInfo::Deserialize(
|
|
39007
|
+
return UserTypeInfo::Deserialize(reader);
|
|
38656
39008
|
case ExtraTypeInfoType::ENUM_TYPE_INFO: {
|
|
38657
|
-
auto enum_size =
|
|
39009
|
+
auto enum_size = reader.ReadRequired<uint32_t>();
|
|
38658
39010
|
auto enum_internal_type = EnumType::GetPhysicalType(enum_size);
|
|
38659
39011
|
switch (enum_internal_type) {
|
|
38660
39012
|
case PhysicalType::UINT8:
|
|
38661
|
-
return EnumTypeInfoTemplated<uint8_t>::Deserialize(
|
|
39013
|
+
return EnumTypeInfoTemplated<uint8_t>::Deserialize(reader, enum_size);
|
|
38662
39014
|
case PhysicalType::UINT16:
|
|
38663
|
-
return EnumTypeInfoTemplated<uint16_t>::Deserialize(
|
|
39015
|
+
return EnumTypeInfoTemplated<uint16_t>::Deserialize(reader, enum_size);
|
|
38664
39016
|
case PhysicalType::UINT32:
|
|
38665
|
-
return EnumTypeInfoTemplated<uint32_t>::Deserialize(
|
|
39017
|
+
return EnumTypeInfoTemplated<uint32_t>::Deserialize(reader, enum_size);
|
|
38666
39018
|
default:
|
|
38667
39019
|
throw InternalException("Invalid Physical Type for ENUMs");
|
|
38668
39020
|
}
|
|
@@ -38681,13 +39033,18 @@ LogicalType::~LogicalType() {
|
|
|
38681
39033
|
}
|
|
38682
39034
|
|
|
38683
39035
|
void LogicalType::Serialize(Serializer &serializer) const {
|
|
38684
|
-
serializer
|
|
38685
|
-
|
|
39036
|
+
FieldWriter writer(serializer);
|
|
39037
|
+
writer.WriteField<LogicalTypeId>(id_);
|
|
39038
|
+
ExtraTypeInfo::Serialize(type_info_.get(), writer);
|
|
39039
|
+
writer.Finalize();
|
|
38686
39040
|
}
|
|
38687
39041
|
|
|
38688
39042
|
LogicalType LogicalType::Deserialize(Deserializer &source) {
|
|
38689
|
-
|
|
38690
|
-
auto
|
|
39043
|
+
FieldReader reader(source);
|
|
39044
|
+
auto id = reader.ReadRequired<LogicalTypeId>();
|
|
39045
|
+
auto info = ExtraTypeInfo::Deserialize(reader);
|
|
39046
|
+
reader.Finalize();
|
|
39047
|
+
|
|
38691
39048
|
return LogicalType(id, move(info));
|
|
38692
39049
|
}
|
|
38693
39050
|
|
|
@@ -80324,14 +80681,14 @@ public:
|
|
|
80324
80681
|
|
|
80325
80682
|
public:
|
|
80326
80683
|
void Merge(const BaseStatistics &other) override;
|
|
80327
|
-
FilterPropagateResult CheckZonemap(ExpressionType comparison_type, const Value &constant);
|
|
80684
|
+
FilterPropagateResult CheckZonemap(ExpressionType comparison_type, const Value &constant) const;
|
|
80328
80685
|
|
|
80329
|
-
unique_ptr<BaseStatistics> Copy() override;
|
|
80330
|
-
void Serialize(
|
|
80331
|
-
static unique_ptr<BaseStatistics> Deserialize(
|
|
80332
|
-
void Verify(Vector &vector, const SelectionVector &sel, idx_t count) override;
|
|
80686
|
+
unique_ptr<BaseStatistics> Copy() const override;
|
|
80687
|
+
void Serialize(FieldWriter &serializer) const override;
|
|
80688
|
+
static unique_ptr<BaseStatistics> Deserialize(FieldReader &source, LogicalType type);
|
|
80689
|
+
void Verify(Vector &vector, const SelectionVector &sel, idx_t count) const override;
|
|
80333
80690
|
|
|
80334
|
-
string ToString() override;
|
|
80691
|
+
string ToString() const override;
|
|
80335
80692
|
};
|
|
80336
80693
|
|
|
80337
80694
|
} // namespace duckdb
|
|
@@ -89142,14 +89499,14 @@ public:
|
|
|
89142
89499
|
|
|
89143
89500
|
public:
|
|
89144
89501
|
void Merge(const BaseStatistics &other) override;
|
|
89145
|
-
FilterPropagateResult CheckZonemap(ExpressionType comparison_type, const Value &constant);
|
|
89502
|
+
FilterPropagateResult CheckZonemap(ExpressionType comparison_type, const Value &constant) const;
|
|
89146
89503
|
|
|
89147
|
-
unique_ptr<BaseStatistics> Copy() override;
|
|
89148
|
-
void Serialize(
|
|
89149
|
-
static unique_ptr<BaseStatistics> Deserialize(
|
|
89150
|
-
void Verify(Vector &vector, const SelectionVector &sel, idx_t count) override;
|
|
89504
|
+
unique_ptr<BaseStatistics> Copy() const override;
|
|
89505
|
+
void Serialize(FieldWriter &writer) const override;
|
|
89506
|
+
static unique_ptr<BaseStatistics> Deserialize(FieldReader &reader, LogicalType type);
|
|
89507
|
+
void Verify(Vector &vector, const SelectionVector &sel, idx_t count) const override;
|
|
89151
89508
|
|
|
89152
|
-
string ToString() override;
|
|
89509
|
+
string ToString() const override;
|
|
89153
89510
|
};
|
|
89154
89511
|
|
|
89155
89512
|
} // namespace duckdb
|
|
@@ -95682,12 +96039,14 @@ public:
|
|
|
95682
96039
|
public:
|
|
95683
96040
|
bool Equals(const QueryNode *other) const override;
|
|
95684
96041
|
//! Create a copy of this SelectNode
|
|
95685
|
-
unique_ptr<QueryNode> Copy() override;
|
|
95686
|
-
|
|
95687
|
-
|
|
95688
|
-
|
|
95689
|
-
|
|
96042
|
+
unique_ptr<QueryNode> Copy() const override;
|
|
96043
|
+
|
|
96044
|
+
//! Serializes a QueryNode to a stand-alone binary blob
|
|
96045
|
+
void Serialize(FieldWriter &writer) const override;
|
|
96046
|
+
//! Deserializes a blob back into a QueryNode
|
|
96047
|
+
static unique_ptr<QueryNode> Deserialize(FieldReader &reader);
|
|
95690
96048
|
};
|
|
96049
|
+
|
|
95691
96050
|
} // namespace duckdb
|
|
95692
96051
|
|
|
95693
96052
|
|
|
@@ -99068,7 +99427,12 @@ unique_ptr<PendingQueryResult> ClientContext::PendingStatementOrPreparedStatemen
|
|
|
99068
99427
|
auto copied_statement = statement->Copy();
|
|
99069
99428
|
if (statement->type == StatementType::SELECT_STATEMENT) {
|
|
99070
99429
|
// in case this is a select query, we verify the original statement
|
|
99071
|
-
string error
|
|
99430
|
+
string error;
|
|
99431
|
+
try {
|
|
99432
|
+
error = VerifyQuery(lock, query, move(statement));
|
|
99433
|
+
} catch (std::exception &ex) {
|
|
99434
|
+
error = ex.what();
|
|
99435
|
+
}
|
|
99072
99436
|
if (!error.empty()) {
|
|
99073
99437
|
// error in verifying query
|
|
99074
99438
|
return make_unique<PendingQueryResult>(error);
|
|
@@ -110612,12 +110976,12 @@ public:
|
|
|
110612
110976
|
public:
|
|
110613
110977
|
bool Equals(const QueryNode *other) const override;
|
|
110614
110978
|
//! Create a copy of this SelectNode
|
|
110615
|
-
unique_ptr<QueryNode> Copy() override;
|
|
110979
|
+
unique_ptr<QueryNode> Copy() const override;
|
|
110616
110980
|
|
|
110617
|
-
//! Serializes a
|
|
110618
|
-
void Serialize(
|
|
110619
|
-
//! Deserializes a blob back into a
|
|
110620
|
-
static unique_ptr<QueryNode> Deserialize(
|
|
110981
|
+
//! Serializes a QueryNode to a stand-alone binary blob
|
|
110982
|
+
void Serialize(FieldWriter &writer) const override;
|
|
110983
|
+
//! Deserializes a blob back into a QueryNode
|
|
110984
|
+
static unique_ptr<QueryNode> Deserialize(FieldReader &reader);
|
|
110621
110985
|
};
|
|
110622
110986
|
|
|
110623
110987
|
} // namespace duckdb
|
|
@@ -127635,15 +127999,20 @@ ColumnDefinition ColumnDefinition::Copy() const {
|
|
|
127635
127999
|
}
|
|
127636
128000
|
|
|
127637
128001
|
void ColumnDefinition::Serialize(Serializer &serializer) const {
|
|
127638
|
-
serializer
|
|
127639
|
-
|
|
127640
|
-
|
|
128002
|
+
FieldWriter writer(serializer);
|
|
128003
|
+
writer.WriteString(name);
|
|
128004
|
+
writer.WriteSerializable(type);
|
|
128005
|
+
writer.WriteOptional(default_value);
|
|
128006
|
+
writer.Finalize();
|
|
127641
128007
|
}
|
|
127642
128008
|
|
|
127643
128009
|
ColumnDefinition ColumnDefinition::Deserialize(Deserializer &source) {
|
|
127644
|
-
|
|
127645
|
-
auto
|
|
127646
|
-
auto
|
|
128010
|
+
FieldReader reader(source);
|
|
128011
|
+
auto column_name = reader.ReadRequired<string>();
|
|
128012
|
+
auto column_type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
|
|
128013
|
+
auto default_value = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
128014
|
+
reader.Finalize();
|
|
128015
|
+
|
|
127647
128016
|
return ColumnDefinition(column_name, column_type, move(default_value));
|
|
127648
128017
|
}
|
|
127649
128018
|
|
|
@@ -127654,6 +128023,7 @@ ColumnDefinition ColumnDefinition::Deserialize(Deserializer &source) {
|
|
|
127654
128023
|
|
|
127655
128024
|
|
|
127656
128025
|
|
|
128026
|
+
|
|
127657
128027
|
namespace duckdb {
|
|
127658
128028
|
|
|
127659
128029
|
Constraint::Constraint(ConstraintType type) : type(type) {
|
|
@@ -127662,25 +128032,35 @@ Constraint::Constraint(ConstraintType type) : type(type) {
|
|
|
127662
128032
|
Constraint::~Constraint() {
|
|
127663
128033
|
}
|
|
127664
128034
|
|
|
127665
|
-
void Constraint::Serialize(Serializer &serializer) {
|
|
127666
|
-
serializer
|
|
128035
|
+
void Constraint::Serialize(Serializer &serializer) const {
|
|
128036
|
+
FieldWriter writer(serializer);
|
|
128037
|
+
writer.WriteField<ConstraintType>(type);
|
|
128038
|
+
Serialize(writer);
|
|
128039
|
+
writer.Finalize();
|
|
127667
128040
|
}
|
|
127668
128041
|
|
|
127669
128042
|
unique_ptr<Constraint> Constraint::Deserialize(Deserializer &source) {
|
|
127670
|
-
|
|
128043
|
+
FieldReader reader(source);
|
|
128044
|
+
auto type = reader.ReadRequired<ConstraintType>();
|
|
128045
|
+
unique_ptr<Constraint> result;
|
|
127671
128046
|
switch (type) {
|
|
127672
128047
|
case ConstraintType::NOT_NULL:
|
|
127673
|
-
|
|
128048
|
+
result = NotNullConstraint::Deserialize(reader);
|
|
128049
|
+
break;
|
|
127674
128050
|
case ConstraintType::CHECK:
|
|
127675
|
-
|
|
128051
|
+
result = CheckConstraint::Deserialize(reader);
|
|
128052
|
+
break;
|
|
127676
128053
|
case ConstraintType::UNIQUE:
|
|
127677
|
-
|
|
128054
|
+
result = UniqueConstraint::Deserialize(reader);
|
|
128055
|
+
break;
|
|
127678
128056
|
default:
|
|
127679
128057
|
throw InternalException("Unrecognized constraint type for serialization");
|
|
127680
128058
|
}
|
|
128059
|
+
reader.Finalize();
|
|
128060
|
+
return result;
|
|
127681
128061
|
}
|
|
127682
128062
|
|
|
127683
|
-
void Constraint::Print() {
|
|
128063
|
+
void Constraint::Print() const {
|
|
127684
128064
|
Printer::Print(ToString());
|
|
127685
128065
|
}
|
|
127686
128066
|
|
|
@@ -127699,17 +128079,16 @@ string CheckConstraint::ToString() const {
|
|
|
127699
128079
|
return "CHECK(" + expression->ToString() + ")";
|
|
127700
128080
|
}
|
|
127701
128081
|
|
|
127702
|
-
unique_ptr<Constraint> CheckConstraint::Copy() {
|
|
128082
|
+
unique_ptr<Constraint> CheckConstraint::Copy() const {
|
|
127703
128083
|
return make_unique<CheckConstraint>(expression->Copy());
|
|
127704
128084
|
}
|
|
127705
128085
|
|
|
127706
|
-
void CheckConstraint::Serialize(
|
|
127707
|
-
|
|
127708
|
-
expression->Serialize(serializer);
|
|
128086
|
+
void CheckConstraint::Serialize(FieldWriter &writer) const {
|
|
128087
|
+
writer.WriteSerializable(*expression);
|
|
127709
128088
|
}
|
|
127710
128089
|
|
|
127711
|
-
unique_ptr<Constraint> CheckConstraint::Deserialize(
|
|
127712
|
-
auto expression = ParsedExpression
|
|
128090
|
+
unique_ptr<Constraint> CheckConstraint::Deserialize(FieldReader &source) {
|
|
128091
|
+
auto expression = source.ReadRequiredSerializable<ParsedExpression>();
|
|
127713
128092
|
return make_unique<CheckConstraint>(move(expression));
|
|
127714
128093
|
}
|
|
127715
128094
|
|
|
@@ -127730,17 +128109,16 @@ string NotNullConstraint::ToString() const {
|
|
|
127730
128109
|
return "NOT NULL";
|
|
127731
128110
|
}
|
|
127732
128111
|
|
|
127733
|
-
unique_ptr<Constraint> NotNullConstraint::Copy() {
|
|
128112
|
+
unique_ptr<Constraint> NotNullConstraint::Copy() const {
|
|
127734
128113
|
return make_unique<NotNullConstraint>(index);
|
|
127735
128114
|
}
|
|
127736
128115
|
|
|
127737
|
-
void NotNullConstraint::Serialize(
|
|
127738
|
-
|
|
127739
|
-
serializer.Write<idx_t>(index);
|
|
128116
|
+
void NotNullConstraint::Serialize(FieldWriter &writer) const {
|
|
128117
|
+
writer.WriteField<idx_t>(index);
|
|
127740
128118
|
}
|
|
127741
128119
|
|
|
127742
|
-
unique_ptr<Constraint> NotNullConstraint::Deserialize(
|
|
127743
|
-
auto index = source.
|
|
128120
|
+
unique_ptr<Constraint> NotNullConstraint::Deserialize(FieldReader &source) {
|
|
128121
|
+
auto index = source.ReadRequired<idx_t>();
|
|
127744
128122
|
return make_unique_base<Constraint, NotNullConstraint>(index);
|
|
127745
128123
|
}
|
|
127746
128124
|
|
|
@@ -127772,7 +128150,7 @@ string UniqueConstraint::ToString() const {
|
|
|
127772
128150
|
return base + ")";
|
|
127773
128151
|
}
|
|
127774
128152
|
|
|
127775
|
-
unique_ptr<Constraint> UniqueConstraint::Copy() {
|
|
128153
|
+
unique_ptr<Constraint> UniqueConstraint::Copy() const {
|
|
127776
128154
|
if (index == DConstants::INVALID_INDEX) {
|
|
127777
128155
|
return make_unique<UniqueConstraint>(columns, is_primary_key);
|
|
127778
128156
|
} else {
|
|
@@ -127782,26 +128160,17 @@ unique_ptr<Constraint> UniqueConstraint::Copy() {
|
|
|
127782
128160
|
}
|
|
127783
128161
|
}
|
|
127784
128162
|
|
|
127785
|
-
void UniqueConstraint::Serialize(
|
|
127786
|
-
|
|
127787
|
-
|
|
127788
|
-
serializer.Write<uint64_t>(index);
|
|
128163
|
+
void UniqueConstraint::Serialize(FieldWriter &writer) const {
|
|
128164
|
+
writer.WriteField<bool>(is_primary_key);
|
|
128165
|
+
writer.WriteField<uint64_t>(index);
|
|
127789
128166
|
D_ASSERT(columns.size() <= NumericLimits<uint32_t>::Maximum());
|
|
127790
|
-
|
|
127791
|
-
for (auto &column : columns) {
|
|
127792
|
-
serializer.WriteString(column);
|
|
127793
|
-
}
|
|
128167
|
+
writer.WriteList<string>(columns);
|
|
127794
128168
|
}
|
|
127795
128169
|
|
|
127796
|
-
unique_ptr<Constraint> UniqueConstraint::Deserialize(
|
|
127797
|
-
auto is_primary_key = source.
|
|
127798
|
-
auto index = source.
|
|
127799
|
-
auto
|
|
127800
|
-
vector<string> columns;
|
|
127801
|
-
for (uint32_t i = 0; i < column_count; i++) {
|
|
127802
|
-
auto column_name = source.Read<string>();
|
|
127803
|
-
columns.push_back(column_name);
|
|
127804
|
-
}
|
|
128170
|
+
unique_ptr<Constraint> UniqueConstraint::Deserialize(FieldReader &source) {
|
|
128171
|
+
auto is_primary_key = source.ReadRequired<bool>();
|
|
128172
|
+
auto index = source.ReadRequired<uint64_t>();
|
|
128173
|
+
auto columns = source.ReadRequiredList<string>();
|
|
127805
128174
|
|
|
127806
128175
|
if (index != DConstants::INVALID_INDEX) {
|
|
127807
128176
|
// single column parsed constraint
|
|
@@ -127817,6 +128186,7 @@ unique_ptr<Constraint> UniqueConstraint::Deserialize(Deserializer &source) {
|
|
|
127817
128186
|
} // namespace duckdb
|
|
127818
128187
|
|
|
127819
128188
|
|
|
128189
|
+
|
|
127820
128190
|
namespace duckdb {
|
|
127821
128191
|
|
|
127822
128192
|
BetweenExpression::BetweenExpression(unique_ptr<ParsedExpression> input_p, unique_ptr<ParsedExpression> lower_p,
|
|
@@ -127848,17 +128218,16 @@ unique_ptr<ParsedExpression> BetweenExpression::Copy() const {
|
|
|
127848
128218
|
return move(copy);
|
|
127849
128219
|
}
|
|
127850
128220
|
|
|
127851
|
-
void BetweenExpression::Serialize(
|
|
127852
|
-
|
|
127853
|
-
|
|
127854
|
-
|
|
127855
|
-
upper->Serialize(serializer);
|
|
128221
|
+
void BetweenExpression::Serialize(FieldWriter &writer) const {
|
|
128222
|
+
writer.WriteSerializable(*input);
|
|
128223
|
+
writer.WriteSerializable(*lower);
|
|
128224
|
+
writer.WriteSerializable(*upper);
|
|
127856
128225
|
}
|
|
127857
128226
|
|
|
127858
|
-
unique_ptr<ParsedExpression> BetweenExpression::Deserialize(ExpressionType type,
|
|
127859
|
-
auto input = ParsedExpression
|
|
127860
|
-
auto lower = ParsedExpression
|
|
127861
|
-
auto upper = ParsedExpression
|
|
128227
|
+
unique_ptr<ParsedExpression> BetweenExpression::Deserialize(ExpressionType type, FieldReader &source) {
|
|
128228
|
+
auto input = source.ReadRequiredSerializable<ParsedExpression>();
|
|
128229
|
+
auto lower = source.ReadRequiredSerializable<ParsedExpression>();
|
|
128230
|
+
auto upper = source.ReadRequiredSerializable<ParsedExpression>();
|
|
127862
128231
|
return make_unique<BetweenExpression>(move(input), move(lower), move(upper));
|
|
127863
128232
|
}
|
|
127864
128233
|
|
|
@@ -127913,26 +128282,29 @@ unique_ptr<ParsedExpression> CaseExpression::Copy() const {
|
|
|
127913
128282
|
return move(copy);
|
|
127914
128283
|
}
|
|
127915
128284
|
|
|
127916
|
-
void CaseExpression::Serialize(
|
|
127917
|
-
|
|
127918
|
-
|
|
128285
|
+
void CaseExpression::Serialize(FieldWriter &writer) const {
|
|
128286
|
+
auto &serializer = writer.GetSerializer();
|
|
128287
|
+
// we write a list of multiple expressions here
|
|
128288
|
+
// in order to write this as a single field we directly use the field writers' internal serializer
|
|
128289
|
+
writer.WriteField<uint32_t>(case_checks.size());
|
|
127919
128290
|
for (auto &check : case_checks) {
|
|
127920
128291
|
check.when_expr->Serialize(serializer);
|
|
127921
128292
|
check.then_expr->Serialize(serializer);
|
|
127922
128293
|
}
|
|
127923
|
-
else_expr
|
|
128294
|
+
writer.WriteSerializable<ParsedExpression>(*else_expr);
|
|
127924
128295
|
}
|
|
127925
128296
|
|
|
127926
|
-
unique_ptr<ParsedExpression> CaseExpression::Deserialize(ExpressionType type,
|
|
128297
|
+
unique_ptr<ParsedExpression> CaseExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
127927
128298
|
auto result = make_unique<CaseExpression>();
|
|
127928
|
-
auto
|
|
128299
|
+
auto &source = reader.GetSource();
|
|
128300
|
+
auto count = reader.ReadRequired<uint32_t>();
|
|
127929
128301
|
for (idx_t i = 0; i < count; i++) {
|
|
127930
128302
|
CaseCheck new_check;
|
|
127931
128303
|
new_check.when_expr = ParsedExpression::Deserialize(source);
|
|
127932
128304
|
new_check.then_expr = ParsedExpression::Deserialize(source);
|
|
127933
128305
|
result->case_checks.push_back(move(new_check));
|
|
127934
128306
|
}
|
|
127935
|
-
result->else_expr = ParsedExpression
|
|
128307
|
+
result->else_expr = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
127936
128308
|
return move(result);
|
|
127937
128309
|
}
|
|
127938
128310
|
|
|
@@ -127974,17 +128346,16 @@ unique_ptr<ParsedExpression> CastExpression::Copy() const {
|
|
|
127974
128346
|
return move(copy);
|
|
127975
128347
|
}
|
|
127976
128348
|
|
|
127977
|
-
void CastExpression::Serialize(
|
|
127978
|
-
|
|
127979
|
-
|
|
127980
|
-
|
|
127981
|
-
serializer.Write<bool>(try_cast);
|
|
128349
|
+
void CastExpression::Serialize(FieldWriter &writer) const {
|
|
128350
|
+
writer.WriteSerializable(*child);
|
|
128351
|
+
writer.WriteSerializable(cast_type);
|
|
128352
|
+
writer.WriteField<bool>(try_cast);
|
|
127982
128353
|
}
|
|
127983
128354
|
|
|
127984
|
-
unique_ptr<ParsedExpression> CastExpression::Deserialize(ExpressionType type,
|
|
127985
|
-
auto child = ParsedExpression
|
|
127986
|
-
auto cast_type = LogicalType
|
|
127987
|
-
auto try_cast =
|
|
128355
|
+
unique_ptr<ParsedExpression> CastExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128356
|
+
auto child = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
128357
|
+
auto cast_type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
|
|
128358
|
+
auto try_cast = reader.ReadRequired<bool>();
|
|
127988
128359
|
return make_unique_base<ParsedExpression, CastExpression>(cast_type, move(child), try_cast);
|
|
127989
128360
|
}
|
|
127990
128361
|
|
|
@@ -128022,15 +128393,14 @@ unique_ptr<ParsedExpression> CollateExpression::Copy() const {
|
|
|
128022
128393
|
return move(copy);
|
|
128023
128394
|
}
|
|
128024
128395
|
|
|
128025
|
-
void CollateExpression::Serialize(
|
|
128026
|
-
|
|
128027
|
-
|
|
128028
|
-
serializer.WriteString(collation);
|
|
128396
|
+
void CollateExpression::Serialize(FieldWriter &writer) const {
|
|
128397
|
+
writer.WriteSerializable(*child);
|
|
128398
|
+
writer.WriteString(collation);
|
|
128029
128399
|
}
|
|
128030
128400
|
|
|
128031
|
-
unique_ptr<ParsedExpression> CollateExpression::Deserialize(ExpressionType type,
|
|
128032
|
-
auto child = ParsedExpression
|
|
128033
|
-
auto collation =
|
|
128401
|
+
unique_ptr<ParsedExpression> CollateExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128402
|
+
auto child = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
128403
|
+
auto collation = reader.ReadRequired<string>();
|
|
128034
128404
|
return make_unique_base<ParsedExpression, CollateExpression>(collation, move(child));
|
|
128035
128405
|
}
|
|
128036
128406
|
|
|
@@ -128041,7 +128411,6 @@ unique_ptr<ParsedExpression> CollateExpression::Deserialize(ExpressionType type,
|
|
|
128041
128411
|
|
|
128042
128412
|
|
|
128043
128413
|
|
|
128044
|
-
|
|
128045
128414
|
namespace duckdb {
|
|
128046
128415
|
|
|
128047
128416
|
ColumnRefExpression::ColumnRefExpression(string column_name, string table_name)
|
|
@@ -128119,20 +128488,12 @@ unique_ptr<ParsedExpression> ColumnRefExpression::Copy() const {
|
|
|
128119
128488
|
return move(copy);
|
|
128120
128489
|
}
|
|
128121
128490
|
|
|
128122
|
-
void ColumnRefExpression::Serialize(
|
|
128123
|
-
|
|
128124
|
-
serializer.Write<idx_t>(column_names.size());
|
|
128125
|
-
for (auto &column_name : column_names) {
|
|
128126
|
-
serializer.WriteString(column_name);
|
|
128127
|
-
}
|
|
128491
|
+
void ColumnRefExpression::Serialize(FieldWriter &writer) const {
|
|
128492
|
+
writer.WriteList<string>(column_names);
|
|
128128
128493
|
}
|
|
128129
128494
|
|
|
128130
|
-
unique_ptr<ParsedExpression> ColumnRefExpression::Deserialize(ExpressionType type,
|
|
128131
|
-
auto
|
|
128132
|
-
vector<string> column_names;
|
|
128133
|
-
for (idx_t i = 0; i < column_count; i++) {
|
|
128134
|
-
column_names.push_back(source.Read<string>());
|
|
128135
|
-
}
|
|
128495
|
+
unique_ptr<ParsedExpression> ColumnRefExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128496
|
+
auto column_names = reader.ReadRequiredList<string>();
|
|
128136
128497
|
auto expression = make_unique<ColumnRefExpression>(move(column_names));
|
|
128137
128498
|
return move(expression);
|
|
128138
128499
|
}
|
|
@@ -128173,15 +128534,14 @@ unique_ptr<ParsedExpression> ComparisonExpression::Copy() const {
|
|
|
128173
128534
|
return move(copy);
|
|
128174
128535
|
}
|
|
128175
128536
|
|
|
128176
|
-
void ComparisonExpression::Serialize(
|
|
128177
|
-
|
|
128178
|
-
|
|
128179
|
-
right->Serialize(serializer);
|
|
128537
|
+
void ComparisonExpression::Serialize(FieldWriter &writer) const {
|
|
128538
|
+
writer.WriteSerializable(*left);
|
|
128539
|
+
writer.WriteSerializable(*right);
|
|
128180
128540
|
}
|
|
128181
128541
|
|
|
128182
|
-
unique_ptr<ParsedExpression> ComparisonExpression::Deserialize(ExpressionType type,
|
|
128183
|
-
auto left_child = ParsedExpression
|
|
128184
|
-
auto right_child = ParsedExpression
|
|
128542
|
+
unique_ptr<ParsedExpression> ComparisonExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128543
|
+
auto left_child = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
128544
|
+
auto right_child = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
128185
128545
|
return make_unique<ComparisonExpression>(type, move(left_child), move(right_child));
|
|
128186
128546
|
}
|
|
128187
128547
|
|
|
@@ -128280,14 +128640,13 @@ unique_ptr<ParsedExpression> ConjunctionExpression::Copy() const {
|
|
|
128280
128640
|
return move(copy);
|
|
128281
128641
|
}
|
|
128282
128642
|
|
|
128283
|
-
void ConjunctionExpression::Serialize(
|
|
128284
|
-
|
|
128285
|
-
serializer.WriteList<ParsedExpression>(children);
|
|
128643
|
+
void ConjunctionExpression::Serialize(FieldWriter &writer) const {
|
|
128644
|
+
writer.WriteSerializableList(children);
|
|
128286
128645
|
}
|
|
128287
128646
|
|
|
128288
|
-
unique_ptr<ParsedExpression> ConjunctionExpression::Deserialize(ExpressionType type,
|
|
128647
|
+
unique_ptr<ParsedExpression> ConjunctionExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128289
128648
|
auto result = make_unique<ConjunctionExpression>(type);
|
|
128290
|
-
|
|
128649
|
+
result->children = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
128291
128650
|
return move(result);
|
|
128292
128651
|
}
|
|
128293
128652
|
|
|
@@ -128298,6 +128657,7 @@ unique_ptr<ParsedExpression> ConjunctionExpression::Deserialize(ExpressionType t
|
|
|
128298
128657
|
|
|
128299
128658
|
|
|
128300
128659
|
|
|
128660
|
+
|
|
128301
128661
|
namespace duckdb {
|
|
128302
128662
|
|
|
128303
128663
|
ConstantExpression::ConstantExpression(Value val)
|
|
@@ -128322,13 +128682,12 @@ unique_ptr<ParsedExpression> ConstantExpression::Copy() const {
|
|
|
128322
128682
|
return move(copy);
|
|
128323
128683
|
}
|
|
128324
128684
|
|
|
128325
|
-
void ConstantExpression::Serialize(
|
|
128326
|
-
|
|
128327
|
-
value.Serialize(serializer);
|
|
128685
|
+
void ConstantExpression::Serialize(FieldWriter &writer) const {
|
|
128686
|
+
writer.WriteSerializable(value);
|
|
128328
128687
|
}
|
|
128329
128688
|
|
|
128330
|
-
unique_ptr<ParsedExpression> ConstantExpression::Deserialize(ExpressionType type,
|
|
128331
|
-
Value value = Value
|
|
128689
|
+
unique_ptr<ParsedExpression> ConstantExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128690
|
+
Value value = reader.ReadRequiredSerializable<Value, Value>();
|
|
128332
128691
|
return make_unique<ConstantExpression>(move(value));
|
|
128333
128692
|
}
|
|
128334
128693
|
|
|
@@ -128352,7 +128711,10 @@ unique_ptr<ParsedExpression> DefaultExpression::Copy() const {
|
|
|
128352
128711
|
return move(copy);
|
|
128353
128712
|
}
|
|
128354
128713
|
|
|
128355
|
-
|
|
128714
|
+
void DefaultExpression::Serialize(FieldWriter &writer) const {
|
|
128715
|
+
}
|
|
128716
|
+
|
|
128717
|
+
unique_ptr<ParsedExpression> DefaultExpression::Deserialize(ExpressionType type, FieldReader &source) {
|
|
128356
128718
|
return make_unique<DefaultExpression>();
|
|
128357
128719
|
}
|
|
128358
128720
|
|
|
@@ -128466,26 +128828,24 @@ unique_ptr<ParsedExpression> FunctionExpression::Copy() const {
|
|
|
128466
128828
|
return move(copy);
|
|
128467
128829
|
}
|
|
128468
128830
|
|
|
128469
|
-
void FunctionExpression::Serialize(
|
|
128470
|
-
|
|
128471
|
-
|
|
128472
|
-
|
|
128473
|
-
|
|
128474
|
-
|
|
128475
|
-
|
|
128476
|
-
|
|
128477
|
-
|
|
128478
|
-
|
|
128479
|
-
|
|
128480
|
-
|
|
128481
|
-
|
|
128482
|
-
auto
|
|
128483
|
-
auto
|
|
128484
|
-
|
|
128485
|
-
auto
|
|
128486
|
-
|
|
128487
|
-
auto distinct = source.Read<bool>();
|
|
128488
|
-
auto is_operator = source.Read<bool>();
|
|
128831
|
+
void FunctionExpression::Serialize(FieldWriter &writer) const {
|
|
128832
|
+
writer.WriteString(function_name);
|
|
128833
|
+
writer.WriteString(schema);
|
|
128834
|
+
writer.WriteSerializableList(children);
|
|
128835
|
+
writer.WriteOptional(filter);
|
|
128836
|
+
writer.WriteSerializable((ResultModifier &)*order_bys);
|
|
128837
|
+
writer.WriteField<bool>(distinct);
|
|
128838
|
+
writer.WriteField<bool>(is_operator);
|
|
128839
|
+
}
|
|
128840
|
+
|
|
128841
|
+
unique_ptr<ParsedExpression> FunctionExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128842
|
+
auto function_name = reader.ReadRequired<string>();
|
|
128843
|
+
auto schema = reader.ReadRequired<string>();
|
|
128844
|
+
auto children = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
128845
|
+
auto filter = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
128846
|
+
auto order_bys = unique_ptr_cast<ResultModifier, OrderModifier>(reader.ReadRequiredSerializable<ResultModifier>());
|
|
128847
|
+
auto distinct = reader.ReadRequired<bool>();
|
|
128848
|
+
auto is_operator = reader.ReadRequired<bool>();
|
|
128489
128849
|
unique_ptr<FunctionExpression> function;
|
|
128490
128850
|
function = make_unique<FunctionExpression>(function_name, move(children), move(filter), move(order_bys), distinct,
|
|
128491
128851
|
is_operator);
|
|
@@ -128498,7 +128858,6 @@ unique_ptr<ParsedExpression> FunctionExpression::Deserialize(ExpressionType type
|
|
|
128498
128858
|
|
|
128499
128859
|
|
|
128500
128860
|
|
|
128501
|
-
|
|
128502
128861
|
namespace duckdb {
|
|
128503
128862
|
|
|
128504
128863
|
LambdaExpression::LambdaExpression(vector<string> parameters, unique_ptr<ParsedExpression> expression)
|
|
@@ -128545,24 +128904,14 @@ unique_ptr<ParsedExpression> LambdaExpression::Copy() const {
|
|
|
128545
128904
|
return make_unique<LambdaExpression>(parameters, expression->Copy());
|
|
128546
128905
|
}
|
|
128547
128906
|
|
|
128548
|
-
void LambdaExpression::Serialize(
|
|
128549
|
-
|
|
128550
|
-
|
|
128551
|
-
for (auto ¶meter : parameters) {
|
|
128552
|
-
serializer.WriteString(parameter);
|
|
128553
|
-
}
|
|
128554
|
-
expression->Serialize(serializer);
|
|
128907
|
+
void LambdaExpression::Serialize(FieldWriter &writer) const {
|
|
128908
|
+
writer.WriteList<string>(parameters);
|
|
128909
|
+
writer.WriteSerializable(*expression);
|
|
128555
128910
|
}
|
|
128556
128911
|
|
|
128557
|
-
unique_ptr<ParsedExpression> LambdaExpression::Deserialize(ExpressionType type,
|
|
128558
|
-
auto
|
|
128559
|
-
|
|
128560
|
-
parameters.reserve(parameter_count);
|
|
128561
|
-
for (size_t i = 0; i < parameter_count; i++) {
|
|
128562
|
-
parameters.push_back(source.Read<string>());
|
|
128563
|
-
}
|
|
128564
|
-
auto expression = ParsedExpression::Deserialize(source);
|
|
128565
|
-
|
|
128912
|
+
unique_ptr<ParsedExpression> LambdaExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128913
|
+
auto parameters = reader.ReadRequiredList<string>();
|
|
128914
|
+
auto expression = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
128566
128915
|
return make_unique<LambdaExpression>(move(parameters), move(expression));
|
|
128567
128916
|
}
|
|
128568
128917
|
|
|
@@ -128629,14 +128978,13 @@ unique_ptr<ParsedExpression> OperatorExpression::Copy() const {
|
|
|
128629
128978
|
return move(copy);
|
|
128630
128979
|
}
|
|
128631
128980
|
|
|
128632
|
-
void OperatorExpression::Serialize(
|
|
128633
|
-
|
|
128634
|
-
serializer.WriteList(children);
|
|
128981
|
+
void OperatorExpression::Serialize(FieldWriter &writer) const {
|
|
128982
|
+
writer.WriteSerializableList(children);
|
|
128635
128983
|
}
|
|
128636
128984
|
|
|
128637
|
-
unique_ptr<ParsedExpression> OperatorExpression::Deserialize(ExpressionType type,
|
|
128985
|
+
unique_ptr<ParsedExpression> OperatorExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128638
128986
|
auto expression = make_unique<OperatorExpression>(type);
|
|
128639
|
-
|
|
128987
|
+
expression->children = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
128640
128988
|
return move(expression);
|
|
128641
128989
|
}
|
|
128642
128990
|
|
|
@@ -128670,14 +129018,13 @@ hash_t ParameterExpression::Hash() const {
|
|
|
128670
129018
|
return CombineHash(duckdb::Hash(parameter_nr), result);
|
|
128671
129019
|
}
|
|
128672
129020
|
|
|
128673
|
-
void ParameterExpression::Serialize(
|
|
128674
|
-
|
|
128675
|
-
serializer.Write<idx_t>(parameter_nr);
|
|
129021
|
+
void ParameterExpression::Serialize(FieldWriter &writer) const {
|
|
129022
|
+
writer.WriteField<idx_t>(parameter_nr);
|
|
128676
129023
|
}
|
|
128677
129024
|
|
|
128678
|
-
unique_ptr<ParsedExpression> ParameterExpression::Deserialize(ExpressionType type,
|
|
129025
|
+
unique_ptr<ParsedExpression> ParameterExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
128679
129026
|
auto expression = make_unique<ParameterExpression>();
|
|
128680
|
-
expression->parameter_nr =
|
|
129027
|
+
expression->parameter_nr = reader.ReadRequired<idx_t>();
|
|
128681
129028
|
return move(expression);
|
|
128682
129029
|
}
|
|
128683
129030
|
|
|
@@ -128715,13 +129062,12 @@ hash_t PositionalReferenceExpression::Hash() const {
|
|
|
128715
129062
|
return CombineHash(duckdb::Hash(index), result);
|
|
128716
129063
|
}
|
|
128717
129064
|
|
|
128718
|
-
void PositionalReferenceExpression::Serialize(
|
|
128719
|
-
|
|
128720
|
-
serializer.Write<idx_t>(index);
|
|
129065
|
+
void PositionalReferenceExpression::Serialize(FieldWriter &writer) const {
|
|
129066
|
+
writer.WriteField<idx_t>(index);
|
|
128721
129067
|
}
|
|
128722
129068
|
|
|
128723
|
-
unique_ptr<ParsedExpression> PositionalReferenceExpression::Deserialize(ExpressionType type,
|
|
128724
|
-
auto expression = make_unique<PositionalReferenceExpression>(
|
|
129069
|
+
unique_ptr<ParsedExpression> PositionalReferenceExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
129070
|
+
auto expression = make_unique<PositionalReferenceExpression>(reader.ReadRequired<idx_t>());
|
|
128725
129071
|
return move(expression);
|
|
128726
129072
|
}
|
|
128727
129073
|
|
|
@@ -128787,28 +129133,34 @@ bool StarExpression::Equals(const StarExpression *a, const StarExpression *b) {
|
|
|
128787
129133
|
return true;
|
|
128788
129134
|
}
|
|
128789
129135
|
|
|
128790
|
-
void StarExpression::Serialize(
|
|
128791
|
-
|
|
128792
|
-
|
|
128793
|
-
|
|
129136
|
+
void StarExpression::Serialize(FieldWriter &writer) const {
|
|
129137
|
+
auto &serializer = writer.GetSerializer();
|
|
129138
|
+
|
|
129139
|
+
writer.WriteString(relation_name);
|
|
129140
|
+
|
|
129141
|
+
// in order to write the exclude_list/replace_list as single fields we directly use the field writers' internal
|
|
129142
|
+
// serializer
|
|
129143
|
+
writer.WriteField<uint32_t>(exclude_list.size());
|
|
128794
129144
|
for (auto &exclusion : exclude_list) {
|
|
128795
129145
|
serializer.WriteString(exclusion);
|
|
128796
129146
|
}
|
|
128797
|
-
|
|
129147
|
+
writer.WriteField<uint32_t>(replace_list.size());
|
|
128798
129148
|
for (auto &entry : replace_list) {
|
|
128799
129149
|
serializer.WriteString(entry.first);
|
|
128800
129150
|
entry.second->Serialize(serializer);
|
|
128801
129151
|
}
|
|
128802
129152
|
}
|
|
128803
129153
|
|
|
128804
|
-
unique_ptr<ParsedExpression> StarExpression::Deserialize(ExpressionType type,
|
|
129154
|
+
unique_ptr<ParsedExpression> StarExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
129155
|
+
auto &source = reader.GetSource();
|
|
129156
|
+
|
|
128805
129157
|
auto result = make_unique<StarExpression>();
|
|
128806
|
-
result->relation_name =
|
|
128807
|
-
auto exclusion_count =
|
|
129158
|
+
result->relation_name = reader.ReadRequired<string>();
|
|
129159
|
+
auto exclusion_count = reader.ReadRequired<uint32_t>();
|
|
128808
129160
|
for (idx_t i = 0; i < exclusion_count; i++) {
|
|
128809
129161
|
result->exclude_list.insert(source.Read<string>());
|
|
128810
129162
|
}
|
|
128811
|
-
auto replace_count =
|
|
129163
|
+
auto replace_count = reader.ReadRequired<uint32_t>();
|
|
128812
129164
|
for (idx_t i = 0; i < replace_count; i++) {
|
|
128813
129165
|
auto name = source.Read<string>();
|
|
128814
129166
|
auto expr = ParsedExpression::Deserialize(source);
|
|
@@ -128865,23 +129217,28 @@ unique_ptr<ParsedExpression> SubqueryExpression::Copy() const {
|
|
|
128865
129217
|
return move(copy);
|
|
128866
129218
|
}
|
|
128867
129219
|
|
|
128868
|
-
void SubqueryExpression::Serialize(
|
|
128869
|
-
|
|
128870
|
-
|
|
129220
|
+
void SubqueryExpression::Serialize(FieldWriter &writer) const {
|
|
129221
|
+
auto &serializer = writer.GetSerializer();
|
|
129222
|
+
|
|
129223
|
+
writer.WriteField<SubqueryType>(subquery_type);
|
|
129224
|
+
// FIXME: this shouldn't use a serializer (probably)?
|
|
128871
129225
|
subquery->Serialize(serializer);
|
|
128872
|
-
|
|
128873
|
-
|
|
129226
|
+
writer.WriteOptional(child);
|
|
129227
|
+
writer.WriteField<ExpressionType>(comparison_type);
|
|
128874
129228
|
}
|
|
128875
129229
|
|
|
128876
|
-
unique_ptr<ParsedExpression> SubqueryExpression::Deserialize(ExpressionType type,
|
|
128877
|
-
|
|
129230
|
+
unique_ptr<ParsedExpression> SubqueryExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
129231
|
+
// FIXME: this shouldn't use a source
|
|
129232
|
+
auto &source = reader.GetSource();
|
|
129233
|
+
|
|
129234
|
+
auto subquery_type = reader.ReadRequired<SubqueryType>();
|
|
128878
129235
|
auto subquery = SelectStatement::Deserialize(source);
|
|
128879
129236
|
|
|
128880
129237
|
auto expression = make_unique<SubqueryExpression>();
|
|
128881
129238
|
expression->subquery_type = subquery_type;
|
|
128882
129239
|
expression->subquery = move(subquery);
|
|
128883
|
-
expression->child =
|
|
128884
|
-
expression->comparison_type =
|
|
129240
|
+
expression->child = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
129241
|
+
expression->comparison_type = reader.ReadRequired<ExpressionType>();
|
|
128885
129242
|
return move(expression);
|
|
128886
129243
|
}
|
|
128887
129244
|
|
|
@@ -129112,46 +129469,49 @@ unique_ptr<ParsedExpression> WindowExpression::Copy() const {
|
|
|
129112
129469
|
return move(new_window);
|
|
129113
129470
|
}
|
|
129114
129471
|
|
|
129115
|
-
void WindowExpression::Serialize(
|
|
129116
|
-
|
|
129117
|
-
|
|
129118
|
-
|
|
129119
|
-
|
|
129120
|
-
|
|
129472
|
+
void WindowExpression::Serialize(FieldWriter &writer) const {
|
|
129473
|
+
auto &serializer = writer.GetSerializer();
|
|
129474
|
+
|
|
129475
|
+
writer.WriteString(function_name);
|
|
129476
|
+
writer.WriteString(schema);
|
|
129477
|
+
writer.WriteSerializableList(children);
|
|
129478
|
+
writer.WriteSerializableList(partitions);
|
|
129479
|
+
// FIXME: should not use serializer here (probably)?
|
|
129121
129480
|
D_ASSERT(orders.size() <= NumericLimits<uint32_t>::Maximum());
|
|
129122
|
-
|
|
129481
|
+
writer.WriteField<uint32_t>((uint32_t)orders.size());
|
|
129123
129482
|
for (auto &order : orders) {
|
|
129124
129483
|
order.Serialize(serializer);
|
|
129125
129484
|
}
|
|
129126
|
-
|
|
129127
|
-
|
|
129485
|
+
writer.WriteField<WindowBoundary>(start);
|
|
129486
|
+
writer.WriteField<WindowBoundary>(end);
|
|
129128
129487
|
|
|
129129
|
-
|
|
129130
|
-
|
|
129131
|
-
|
|
129132
|
-
|
|
129133
|
-
|
|
129488
|
+
writer.WriteOptional(start_expr);
|
|
129489
|
+
writer.WriteOptional(end_expr);
|
|
129490
|
+
writer.WriteOptional(offset_expr);
|
|
129491
|
+
writer.WriteOptional(default_expr);
|
|
129492
|
+
writer.WriteField<bool>(ignore_nulls);
|
|
129134
129493
|
}
|
|
129135
129494
|
|
|
129136
|
-
unique_ptr<ParsedExpression> WindowExpression::Deserialize(ExpressionType type,
|
|
129137
|
-
auto function_name =
|
|
129138
|
-
auto schema =
|
|
129495
|
+
unique_ptr<ParsedExpression> WindowExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
|
129496
|
+
auto function_name = reader.ReadRequired<string>();
|
|
129497
|
+
auto schema = reader.ReadRequired<string>();
|
|
129139
129498
|
auto expr = make_unique<WindowExpression>(type, schema, function_name);
|
|
129140
|
-
|
|
129141
|
-
|
|
129499
|
+
expr->children = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
129500
|
+
expr->partitions = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
129142
129501
|
|
|
129143
|
-
auto order_count =
|
|
129502
|
+
auto order_count = reader.ReadRequired<uint32_t>();
|
|
129503
|
+
auto &source = reader.GetSource();
|
|
129144
129504
|
for (idx_t i = 0; i < order_count; i++) {
|
|
129145
129505
|
expr->orders.push_back(OrderByNode::Deserialize((source)));
|
|
129146
129506
|
}
|
|
129147
|
-
expr->start =
|
|
129148
|
-
expr->end =
|
|
129507
|
+
expr->start = reader.ReadRequired<WindowBoundary>();
|
|
129508
|
+
expr->end = reader.ReadRequired<WindowBoundary>();
|
|
129149
129509
|
|
|
129150
|
-
expr->start_expr =
|
|
129151
|
-
expr->end_expr =
|
|
129152
|
-
expr->offset_expr =
|
|
129153
|
-
expr->default_expr =
|
|
129154
|
-
expr->ignore_nulls =
|
|
129510
|
+
expr->start_expr = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
129511
|
+
expr->end_expr = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
129512
|
+
expr->offset_expr = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
129513
|
+
expr->default_expr = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
129514
|
+
expr->ignore_nulls = reader.ReadRequired<bool>();
|
|
129155
129515
|
return move(expr);
|
|
129156
129516
|
}
|
|
129157
129517
|
|
|
@@ -129266,27 +129626,50 @@ string KeywordHelper::WriteOptionallyQuoted(const string &text) {
|
|
|
129266
129626
|
|
|
129267
129627
|
namespace duckdb {
|
|
129268
129628
|
|
|
129269
|
-
|
|
129270
|
-
|
|
129629
|
+
AlterInfo::AlterInfo(AlterType type, string schema_p, string name_p)
|
|
129630
|
+
: type(type), schema(move(schema_p)), name(move(name_p)) {
|
|
129631
|
+
}
|
|
129632
|
+
|
|
129633
|
+
AlterInfo::~AlterInfo() {
|
|
129634
|
+
}
|
|
129635
|
+
|
|
129636
|
+
void AlterInfo::Serialize(Serializer &serializer) const {
|
|
129637
|
+
FieldWriter writer(serializer);
|
|
129638
|
+
writer.WriteField<AlterType>(type);
|
|
129639
|
+
Serialize(writer);
|
|
129640
|
+
writer.Finalize();
|
|
129271
129641
|
}
|
|
129272
129642
|
|
|
129273
129643
|
unique_ptr<AlterInfo> AlterInfo::Deserialize(Deserializer &source) {
|
|
129274
|
-
|
|
129644
|
+
FieldReader reader(source);
|
|
129645
|
+
auto type = reader.ReadRequired<AlterType>();
|
|
129646
|
+
|
|
129647
|
+
unique_ptr<AlterInfo> result;
|
|
129275
129648
|
switch (type) {
|
|
129276
129649
|
case AlterType::ALTER_TABLE:
|
|
129277
|
-
|
|
129650
|
+
result = AlterTableInfo::Deserialize(reader);
|
|
129651
|
+
break;
|
|
129278
129652
|
case AlterType::ALTER_VIEW:
|
|
129279
|
-
|
|
129653
|
+
result = AlterViewInfo::Deserialize(reader);
|
|
129654
|
+
break;
|
|
129280
129655
|
default:
|
|
129281
129656
|
throw SerializationException("Unknown alter type for deserialization!");
|
|
129282
129657
|
}
|
|
129658
|
+
reader.Finalize();
|
|
129659
|
+
|
|
129660
|
+
return result;
|
|
129283
129661
|
}
|
|
129284
129662
|
|
|
129285
129663
|
//===--------------------------------------------------------------------===//
|
|
129286
129664
|
// ChangeOwnershipInfo
|
|
129287
129665
|
//===--------------------------------------------------------------------===//
|
|
129666
|
+
ChangeOwnershipInfo::ChangeOwnershipInfo(CatalogType entry_catalog_type, string entry_schema_p, string entry_name_p,
|
|
129667
|
+
string owner_schema_p, string owner_name_p)
|
|
129668
|
+
: AlterInfo(AlterType::CHANGE_OWNERSHIP, move(entry_schema_p), move(entry_name_p)),
|
|
129669
|
+
entry_catalog_type(entry_catalog_type), owner_schema(move(owner_schema_p)), owner_name(move(owner_name_p)) {
|
|
129670
|
+
}
|
|
129288
129671
|
|
|
129289
|
-
CatalogType ChangeOwnershipInfo::GetCatalogType() {
|
|
129672
|
+
CatalogType ChangeOwnershipInfo::GetCatalogType() const {
|
|
129290
129673
|
return entry_catalog_type;
|
|
129291
129674
|
}
|
|
129292
129675
|
|
|
@@ -129294,35 +129677,48 @@ unique_ptr<AlterInfo> ChangeOwnershipInfo::Copy() const {
|
|
|
129294
129677
|
return make_unique_base<AlterInfo, ChangeOwnershipInfo>(entry_catalog_type, schema, name, owner_schema, owner_name);
|
|
129295
129678
|
}
|
|
129296
129679
|
|
|
129680
|
+
void ChangeOwnershipInfo::Serialize(FieldWriter &writer) const {
|
|
129681
|
+
throw InternalException("ChangeOwnershipInfo cannot be serialized");
|
|
129682
|
+
}
|
|
129683
|
+
|
|
129297
129684
|
//===--------------------------------------------------------------------===//
|
|
129298
129685
|
// AlterTableInfo
|
|
129299
129686
|
//===--------------------------------------------------------------------===//
|
|
129687
|
+
AlterTableInfo::AlterTableInfo(AlterTableType type, string schema_p, string table_p)
|
|
129688
|
+
: AlterInfo(AlterType::ALTER_TABLE, move(move(schema_p)), move(table_p)), alter_table_type(type) {
|
|
129689
|
+
}
|
|
129690
|
+
AlterTableInfo::~AlterTableInfo() {
|
|
129691
|
+
}
|
|
129300
129692
|
|
|
129301
|
-
|
|
129302
|
-
|
|
129303
|
-
serializer.Write<AlterTableType>(alter_table_type);
|
|
129304
|
-
serializer.WriteString(schema);
|
|
129305
|
-
serializer.WriteString(name);
|
|
129693
|
+
CatalogType AlterTableInfo::GetCatalogType() const {
|
|
129694
|
+
return CatalogType::TABLE_ENTRY;
|
|
129306
129695
|
}
|
|
129307
129696
|
|
|
129308
|
-
|
|
129309
|
-
|
|
129310
|
-
|
|
129311
|
-
|
|
129697
|
+
void AlterTableInfo::Serialize(FieldWriter &writer) const {
|
|
129698
|
+
writer.WriteField<AlterTableType>(alter_table_type);
|
|
129699
|
+
writer.WriteString(schema);
|
|
129700
|
+
writer.WriteString(name);
|
|
129701
|
+
SerializeAlterTable(writer);
|
|
129702
|
+
}
|
|
129703
|
+
|
|
129704
|
+
unique_ptr<AlterInfo> AlterTableInfo::Deserialize(FieldReader &reader) {
|
|
129705
|
+
auto type = reader.ReadRequired<AlterTableType>();
|
|
129706
|
+
auto schema = reader.ReadRequired<string>();
|
|
129707
|
+
auto table = reader.ReadRequired<string>();
|
|
129312
129708
|
unique_ptr<AlterTableInfo> info;
|
|
129313
129709
|
switch (type) {
|
|
129314
129710
|
case AlterTableType::RENAME_COLUMN:
|
|
129315
|
-
return RenameColumnInfo::Deserialize(
|
|
129711
|
+
return RenameColumnInfo::Deserialize(reader, schema, table);
|
|
129316
129712
|
case AlterTableType::RENAME_TABLE:
|
|
129317
|
-
return RenameTableInfo::Deserialize(
|
|
129713
|
+
return RenameTableInfo::Deserialize(reader, schema, table);
|
|
129318
129714
|
case AlterTableType::ADD_COLUMN:
|
|
129319
|
-
return AddColumnInfo::Deserialize(
|
|
129715
|
+
return AddColumnInfo::Deserialize(reader, schema, table);
|
|
129320
129716
|
case AlterTableType::REMOVE_COLUMN:
|
|
129321
|
-
return RemoveColumnInfo::Deserialize(
|
|
129717
|
+
return RemoveColumnInfo::Deserialize(reader, schema, table);
|
|
129322
129718
|
case AlterTableType::ALTER_COLUMN_TYPE:
|
|
129323
|
-
return ChangeColumnTypeInfo::Deserialize(
|
|
129719
|
+
return ChangeColumnTypeInfo::Deserialize(reader, schema, table);
|
|
129324
129720
|
case AlterTableType::SET_DEFAULT:
|
|
129325
|
-
return SetDefaultInfo::Deserialize(
|
|
129721
|
+
return SetDefaultInfo::Deserialize(reader, schema, table);
|
|
129326
129722
|
default:
|
|
129327
129723
|
throw SerializationException("Unknown alter table type for deserialization!");
|
|
129328
129724
|
}
|
|
@@ -129331,94 +129727,123 @@ unique_ptr<AlterInfo> AlterTableInfo::Deserialize(Deserializer &source) {
|
|
|
129331
129727
|
//===--------------------------------------------------------------------===//
|
|
129332
129728
|
// RenameColumnInfo
|
|
129333
129729
|
//===--------------------------------------------------------------------===//
|
|
129730
|
+
RenameColumnInfo::RenameColumnInfo(string schema_p, string table_p, string old_name_p, string new_name_p)
|
|
129731
|
+
: AlterTableInfo(AlterTableType::RENAME_COLUMN, move(schema_p), move(table_p)), old_name(move(old_name_p)),
|
|
129732
|
+
new_name(move(new_name_p)) {
|
|
129733
|
+
}
|
|
129734
|
+
RenameColumnInfo::~RenameColumnInfo() {
|
|
129735
|
+
}
|
|
129736
|
+
|
|
129334
129737
|
unique_ptr<AlterInfo> RenameColumnInfo::Copy() const {
|
|
129335
129738
|
return make_unique_base<AlterInfo, RenameColumnInfo>(schema, name, old_name, new_name);
|
|
129336
129739
|
}
|
|
129337
129740
|
|
|
129338
|
-
void RenameColumnInfo::
|
|
129339
|
-
|
|
129340
|
-
|
|
129341
|
-
serializer.WriteString(new_name);
|
|
129741
|
+
void RenameColumnInfo::SerializeAlterTable(FieldWriter &writer) const {
|
|
129742
|
+
writer.WriteString(old_name);
|
|
129743
|
+
writer.WriteString(new_name);
|
|
129342
129744
|
}
|
|
129343
129745
|
|
|
129344
|
-
unique_ptr<AlterInfo> RenameColumnInfo::Deserialize(
|
|
129345
|
-
auto old_name =
|
|
129346
|
-
auto new_name =
|
|
129746
|
+
unique_ptr<AlterInfo> RenameColumnInfo::Deserialize(FieldReader &reader, string schema, string table) {
|
|
129747
|
+
auto old_name = reader.ReadRequired<string>();
|
|
129748
|
+
auto new_name = reader.ReadRequired<string>();
|
|
129347
129749
|
return make_unique<RenameColumnInfo>(move(schema), move(table), old_name, new_name);
|
|
129348
129750
|
}
|
|
129349
129751
|
|
|
129350
129752
|
//===--------------------------------------------------------------------===//
|
|
129351
129753
|
// RenameTableInfo
|
|
129352
129754
|
//===--------------------------------------------------------------------===//
|
|
129755
|
+
RenameTableInfo::RenameTableInfo(string schema_p, string table_p, string new_name_p)
|
|
129756
|
+
: AlterTableInfo(AlterTableType::RENAME_TABLE, move(schema_p), move(table_p)), new_table_name(move(new_name_p)) {
|
|
129757
|
+
}
|
|
129758
|
+
RenameTableInfo::~RenameTableInfo() {
|
|
129759
|
+
}
|
|
129760
|
+
|
|
129353
129761
|
unique_ptr<AlterInfo> RenameTableInfo::Copy() const {
|
|
129354
129762
|
return make_unique_base<AlterInfo, RenameTableInfo>(schema, name, new_table_name);
|
|
129355
129763
|
}
|
|
129356
129764
|
|
|
129357
|
-
void RenameTableInfo::
|
|
129358
|
-
|
|
129359
|
-
serializer.WriteString(new_table_name);
|
|
129765
|
+
void RenameTableInfo::SerializeAlterTable(FieldWriter &writer) const {
|
|
129766
|
+
writer.WriteString(new_table_name);
|
|
129360
129767
|
}
|
|
129361
129768
|
|
|
129362
|
-
unique_ptr<AlterInfo> RenameTableInfo::Deserialize(
|
|
129363
|
-
auto new_name =
|
|
129769
|
+
unique_ptr<AlterInfo> RenameTableInfo::Deserialize(FieldReader &reader, string schema, string table) {
|
|
129770
|
+
auto new_name = reader.ReadRequired<string>();
|
|
129364
129771
|
return make_unique<RenameTableInfo>(move(schema), move(table), new_name);
|
|
129365
129772
|
}
|
|
129366
129773
|
|
|
129367
129774
|
//===--------------------------------------------------------------------===//
|
|
129368
129775
|
// AddColumnInfo
|
|
129369
129776
|
//===--------------------------------------------------------------------===//
|
|
129777
|
+
AddColumnInfo::AddColumnInfo(string schema_p, string table_p, ColumnDefinition new_column)
|
|
129778
|
+
: AlterTableInfo(AlterTableType::ADD_COLUMN, move(schema_p), move(table_p)), new_column(move(new_column)) {
|
|
129779
|
+
}
|
|
129780
|
+
AddColumnInfo::~AddColumnInfo() {
|
|
129781
|
+
}
|
|
129782
|
+
|
|
129370
129783
|
unique_ptr<AlterInfo> AddColumnInfo::Copy() const {
|
|
129371
129784
|
return make_unique_base<AlterInfo, AddColumnInfo>(schema, name, new_column.Copy());
|
|
129372
129785
|
}
|
|
129373
129786
|
|
|
129374
|
-
void AddColumnInfo::
|
|
129375
|
-
|
|
129376
|
-
new_column.Serialize(serializer);
|
|
129787
|
+
void AddColumnInfo::SerializeAlterTable(FieldWriter &writer) const {
|
|
129788
|
+
writer.WriteSerializable(new_column);
|
|
129377
129789
|
}
|
|
129378
129790
|
|
|
129379
|
-
unique_ptr<AlterInfo> AddColumnInfo::Deserialize(
|
|
129380
|
-
auto new_column = ColumnDefinition
|
|
129791
|
+
unique_ptr<AlterInfo> AddColumnInfo::Deserialize(FieldReader &reader, string schema, string table) {
|
|
129792
|
+
auto new_column = reader.ReadRequiredSerializable<ColumnDefinition, ColumnDefinition>();
|
|
129381
129793
|
return make_unique<AddColumnInfo>(move(schema), move(table), move(new_column));
|
|
129382
129794
|
}
|
|
129383
129795
|
|
|
129384
129796
|
//===--------------------------------------------------------------------===//
|
|
129385
129797
|
// RemoveColumnInfo
|
|
129386
129798
|
//===--------------------------------------------------------------------===//
|
|
129799
|
+
RemoveColumnInfo::RemoveColumnInfo(string schema_p, string table_p, string removed_column, bool if_exists)
|
|
129800
|
+
: AlterTableInfo(AlterTableType::REMOVE_COLUMN, move(schema_p), move(table_p)),
|
|
129801
|
+
removed_column(move(removed_column)), if_exists(if_exists) {
|
|
129802
|
+
}
|
|
129803
|
+
RemoveColumnInfo::~RemoveColumnInfo() {
|
|
129804
|
+
}
|
|
129805
|
+
|
|
129387
129806
|
unique_ptr<AlterInfo> RemoveColumnInfo::Copy() const {
|
|
129388
129807
|
return make_unique_base<AlterInfo, RemoveColumnInfo>(schema, name, removed_column, if_exists);
|
|
129389
129808
|
}
|
|
129390
129809
|
|
|
129391
|
-
void RemoveColumnInfo::
|
|
129392
|
-
|
|
129393
|
-
|
|
129394
|
-
serializer.Write<bool>(if_exists);
|
|
129810
|
+
void RemoveColumnInfo::SerializeAlterTable(FieldWriter &writer) const {
|
|
129811
|
+
writer.WriteString(removed_column);
|
|
129812
|
+
writer.WriteField<bool>(if_exists);
|
|
129395
129813
|
}
|
|
129396
129814
|
|
|
129397
|
-
unique_ptr<AlterInfo> RemoveColumnInfo::Deserialize(
|
|
129398
|
-
auto new_name =
|
|
129399
|
-
auto if_exists =
|
|
129815
|
+
unique_ptr<AlterInfo> RemoveColumnInfo::Deserialize(FieldReader &reader, string schema, string table) {
|
|
129816
|
+
auto new_name = reader.ReadRequired<string>();
|
|
129817
|
+
auto if_exists = reader.ReadRequired<bool>();
|
|
129400
129818
|
return make_unique<RemoveColumnInfo>(move(schema), move(table), new_name, if_exists);
|
|
129401
129819
|
}
|
|
129402
129820
|
|
|
129403
129821
|
//===--------------------------------------------------------------------===//
|
|
129404
129822
|
// ChangeColumnTypeInfo
|
|
129405
129823
|
//===--------------------------------------------------------------------===//
|
|
129824
|
+
ChangeColumnTypeInfo::ChangeColumnTypeInfo(string schema_p, string table_p, string column_name, LogicalType target_type,
|
|
129825
|
+
unique_ptr<ParsedExpression> expression)
|
|
129826
|
+
: AlterTableInfo(AlterTableType::ALTER_COLUMN_TYPE, move(schema_p), move(table_p)), column_name(move(column_name)),
|
|
129827
|
+
target_type(move(target_type)), expression(move(expression)) {
|
|
129828
|
+
}
|
|
129829
|
+
ChangeColumnTypeInfo::~ChangeColumnTypeInfo() {
|
|
129830
|
+
}
|
|
129831
|
+
|
|
129406
129832
|
unique_ptr<AlterInfo> ChangeColumnTypeInfo::Copy() const {
|
|
129407
129833
|
return make_unique_base<AlterInfo, ChangeColumnTypeInfo>(schema, name, column_name, target_type,
|
|
129408
129834
|
expression->Copy());
|
|
129409
129835
|
}
|
|
129410
129836
|
|
|
129411
|
-
void ChangeColumnTypeInfo::
|
|
129412
|
-
|
|
129413
|
-
|
|
129414
|
-
|
|
129415
|
-
serializer.WriteOptional(expression);
|
|
129837
|
+
void ChangeColumnTypeInfo::SerializeAlterTable(FieldWriter &writer) const {
|
|
129838
|
+
writer.WriteString(column_name);
|
|
129839
|
+
writer.WriteSerializable(target_type);
|
|
129840
|
+
writer.WriteOptional(expression);
|
|
129416
129841
|
}
|
|
129417
129842
|
|
|
129418
|
-
unique_ptr<AlterInfo> ChangeColumnTypeInfo::Deserialize(
|
|
129419
|
-
auto column_name =
|
|
129420
|
-
auto target_type = LogicalType
|
|
129421
|
-
auto expression =
|
|
129843
|
+
unique_ptr<AlterInfo> ChangeColumnTypeInfo::Deserialize(FieldReader &reader, string schema, string table) {
|
|
129844
|
+
auto column_name = reader.ReadRequired<string>();
|
|
129845
|
+
auto target_type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
|
|
129846
|
+
auto expression = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
129422
129847
|
return make_unique<ChangeColumnTypeInfo>(move(schema), move(table), move(column_name), move(target_type),
|
|
129423
129848
|
move(expression));
|
|
129424
129849
|
}
|
|
@@ -129426,41 +129851,58 @@ unique_ptr<AlterInfo> ChangeColumnTypeInfo::Deserialize(Deserializer &source, st
|
|
|
129426
129851
|
//===--------------------------------------------------------------------===//
|
|
129427
129852
|
// SetDefaultInfo
|
|
129428
129853
|
//===--------------------------------------------------------------------===//
|
|
129854
|
+
SetDefaultInfo::SetDefaultInfo(string schema_p, string table_p, string column_name_p,
|
|
129855
|
+
unique_ptr<ParsedExpression> new_default)
|
|
129856
|
+
: AlterTableInfo(AlterTableType::SET_DEFAULT, move(schema_p), move(table_p)), column_name(move(column_name_p)),
|
|
129857
|
+
expression(move(new_default)) {
|
|
129858
|
+
}
|
|
129859
|
+
SetDefaultInfo::~SetDefaultInfo() {
|
|
129860
|
+
}
|
|
129861
|
+
|
|
129429
129862
|
unique_ptr<AlterInfo> SetDefaultInfo::Copy() const {
|
|
129430
129863
|
return make_unique_base<AlterInfo, SetDefaultInfo>(schema, name, column_name,
|
|
129431
129864
|
expression ? expression->Copy() : nullptr);
|
|
129432
129865
|
}
|
|
129433
129866
|
|
|
129434
|
-
void SetDefaultInfo::
|
|
129435
|
-
|
|
129436
|
-
|
|
129437
|
-
serializer.WriteOptional(expression);
|
|
129867
|
+
void SetDefaultInfo::SerializeAlterTable(FieldWriter &writer) const {
|
|
129868
|
+
writer.WriteString(column_name);
|
|
129869
|
+
writer.WriteOptional(expression);
|
|
129438
129870
|
}
|
|
129439
129871
|
|
|
129440
|
-
unique_ptr<AlterInfo> SetDefaultInfo::Deserialize(
|
|
129441
|
-
auto column_name =
|
|
129442
|
-
auto new_default =
|
|
129872
|
+
unique_ptr<AlterInfo> SetDefaultInfo::Deserialize(FieldReader &reader, string schema, string table) {
|
|
129873
|
+
auto column_name = reader.ReadRequired<string>();
|
|
129874
|
+
auto new_default = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
129443
129875
|
return make_unique<SetDefaultInfo>(move(schema), move(table), move(column_name), move(new_default));
|
|
129444
129876
|
}
|
|
129445
129877
|
|
|
129446
129878
|
//===--------------------------------------------------------------------===//
|
|
129447
129879
|
// Alter View
|
|
129448
129880
|
//===--------------------------------------------------------------------===//
|
|
129449
|
-
|
|
129450
|
-
|
|
129451
|
-
|
|
129452
|
-
|
|
129453
|
-
serializer.WriteString(name);
|
|
129881
|
+
AlterViewInfo::AlterViewInfo(AlterViewType type, string schema_p, string view_p)
|
|
129882
|
+
: AlterInfo(AlterType::ALTER_VIEW, move(schema_p), move(view_p)), alter_view_type(type) {
|
|
129883
|
+
}
|
|
129884
|
+
AlterViewInfo::~AlterViewInfo() {
|
|
129454
129885
|
}
|
|
129455
129886
|
|
|
129456
|
-
|
|
129457
|
-
|
|
129458
|
-
|
|
129459
|
-
|
|
129887
|
+
CatalogType AlterViewInfo::GetCatalogType() const {
|
|
129888
|
+
return CatalogType::VIEW_ENTRY;
|
|
129889
|
+
}
|
|
129890
|
+
|
|
129891
|
+
void AlterViewInfo::Serialize(FieldWriter &writer) const {
|
|
129892
|
+
writer.WriteField<AlterViewType>(alter_view_type);
|
|
129893
|
+
writer.WriteString(schema);
|
|
129894
|
+
writer.WriteString(name);
|
|
129895
|
+
SerializeAlterView(writer);
|
|
129896
|
+
}
|
|
129897
|
+
|
|
129898
|
+
unique_ptr<AlterInfo> AlterViewInfo::Deserialize(FieldReader &reader) {
|
|
129899
|
+
auto type = reader.ReadRequired<AlterViewType>();
|
|
129900
|
+
auto schema = reader.ReadRequired<string>();
|
|
129901
|
+
auto view = reader.ReadRequired<string>();
|
|
129460
129902
|
unique_ptr<AlterViewInfo> info;
|
|
129461
129903
|
switch (type) {
|
|
129462
129904
|
case AlterViewType::RENAME_VIEW:
|
|
129463
|
-
return RenameViewInfo::Deserialize(
|
|
129905
|
+
return RenameViewInfo::Deserialize(reader, schema, view);
|
|
129464
129906
|
default:
|
|
129465
129907
|
throw SerializationException("Unknown alter view type for deserialization!");
|
|
129466
129908
|
}
|
|
@@ -129469,17 +129911,22 @@ unique_ptr<AlterInfo> AlterViewInfo::Deserialize(Deserializer &source) {
|
|
|
129469
129911
|
//===--------------------------------------------------------------------===//
|
|
129470
129912
|
// RenameViewInfo
|
|
129471
129913
|
//===--------------------------------------------------------------------===//
|
|
129914
|
+
RenameViewInfo::RenameViewInfo(string schema_p, string view_p, string new_name_p)
|
|
129915
|
+
: AlterViewInfo(AlterViewType::RENAME_VIEW, move(schema_p), move(view_p)), new_view_name(move(new_name_p)) {
|
|
129916
|
+
}
|
|
129917
|
+
RenameViewInfo::~RenameViewInfo() {
|
|
129918
|
+
}
|
|
129919
|
+
|
|
129472
129920
|
unique_ptr<AlterInfo> RenameViewInfo::Copy() const {
|
|
129473
129921
|
return make_unique_base<AlterInfo, RenameViewInfo>(schema, name, new_view_name);
|
|
129474
129922
|
}
|
|
129475
129923
|
|
|
129476
|
-
void RenameViewInfo::
|
|
129477
|
-
|
|
129478
|
-
serializer.WriteString(new_view_name);
|
|
129924
|
+
void RenameViewInfo::SerializeAlterView(FieldWriter &writer) const {
|
|
129925
|
+
writer.WriteString(new_view_name);
|
|
129479
129926
|
}
|
|
129480
129927
|
|
|
129481
|
-
unique_ptr<AlterInfo> RenameViewInfo::Deserialize(
|
|
129482
|
-
auto new_name =
|
|
129928
|
+
unique_ptr<AlterInfo> RenameViewInfo::Deserialize(FieldReader &reader, string schema, string view) {
|
|
129929
|
+
auto new_name = reader.ReadRequired<string>();
|
|
129483
129930
|
return make_unique<RenameViewInfo>(move(schema), move(view), new_name);
|
|
129484
129931
|
}
|
|
129485
129932
|
} // namespace duckdb
|
|
@@ -129502,18 +129949,24 @@ string SampleMethodToString(SampleMethod method) {
|
|
|
129502
129949
|
}
|
|
129503
129950
|
|
|
129504
129951
|
void SampleOptions::Serialize(Serializer &serializer) {
|
|
129505
|
-
|
|
129506
|
-
|
|
129507
|
-
|
|
129508
|
-
|
|
129952
|
+
FieldWriter writer(serializer);
|
|
129953
|
+
writer.WriteSerializable(sample_size);
|
|
129954
|
+
writer.WriteField<bool>(is_percentage);
|
|
129955
|
+
writer.WriteField<SampleMethod>(method);
|
|
129956
|
+
writer.WriteField<int64_t>(seed);
|
|
129957
|
+
writer.Finalize();
|
|
129509
129958
|
}
|
|
129510
129959
|
|
|
129511
129960
|
unique_ptr<SampleOptions> SampleOptions::Deserialize(Deserializer &source) {
|
|
129512
129961
|
auto result = make_unique<SampleOptions>();
|
|
129513
|
-
|
|
129514
|
-
|
|
129515
|
-
result->
|
|
129516
|
-
result->
|
|
129962
|
+
|
|
129963
|
+
FieldReader reader(source);
|
|
129964
|
+
result->sample_size = reader.ReadRequiredSerializable<Value, Value>();
|
|
129965
|
+
result->is_percentage = reader.ReadRequired<bool>();
|
|
129966
|
+
result->method = reader.ReadRequired<SampleMethod>();
|
|
129967
|
+
result->seed = reader.ReadRequired<int64_t>();
|
|
129968
|
+
reader.Finalize();
|
|
129969
|
+
|
|
129517
129970
|
return result;
|
|
129518
129971
|
}
|
|
129519
129972
|
|
|
@@ -129640,73 +130093,78 @@ hash_t ParsedExpression::Hash() const {
|
|
|
129640
130093
|
return hash;
|
|
129641
130094
|
}
|
|
129642
130095
|
|
|
129643
|
-
void ParsedExpression::Serialize(Serializer &serializer) {
|
|
129644
|
-
serializer
|
|
129645
|
-
|
|
129646
|
-
|
|
130096
|
+
void ParsedExpression::Serialize(Serializer &serializer) const {
|
|
130097
|
+
FieldWriter writer(serializer);
|
|
130098
|
+
writer.WriteField<ExpressionClass>(GetExpressionClass());
|
|
130099
|
+
writer.WriteField<ExpressionType>(type);
|
|
130100
|
+
writer.WriteString(alias);
|
|
130101
|
+
Serialize(writer);
|
|
130102
|
+
writer.Finalize();
|
|
129647
130103
|
}
|
|
129648
130104
|
|
|
129649
130105
|
unique_ptr<ParsedExpression> ParsedExpression::Deserialize(Deserializer &source) {
|
|
129650
|
-
|
|
129651
|
-
auto
|
|
129652
|
-
auto
|
|
130106
|
+
FieldReader reader(source);
|
|
130107
|
+
auto expression_class = reader.ReadRequired<ExpressionClass>();
|
|
130108
|
+
auto type = reader.ReadRequired<ExpressionType>();
|
|
130109
|
+
auto alias = reader.ReadRequired<string>();
|
|
129653
130110
|
unique_ptr<ParsedExpression> result;
|
|
129654
130111
|
switch (expression_class) {
|
|
129655
130112
|
case ExpressionClass::BETWEEN:
|
|
129656
|
-
result = BetweenExpression::Deserialize(type,
|
|
130113
|
+
result = BetweenExpression::Deserialize(type, reader);
|
|
129657
130114
|
break;
|
|
129658
130115
|
case ExpressionClass::CASE:
|
|
129659
|
-
result = CaseExpression::Deserialize(type,
|
|
130116
|
+
result = CaseExpression::Deserialize(type, reader);
|
|
129660
130117
|
break;
|
|
129661
130118
|
case ExpressionClass::CAST:
|
|
129662
|
-
result = CastExpression::Deserialize(type,
|
|
130119
|
+
result = CastExpression::Deserialize(type, reader);
|
|
129663
130120
|
break;
|
|
129664
130121
|
case ExpressionClass::COLLATE:
|
|
129665
|
-
result = CollateExpression::Deserialize(type,
|
|
130122
|
+
result = CollateExpression::Deserialize(type, reader);
|
|
129666
130123
|
break;
|
|
129667
130124
|
case ExpressionClass::COLUMN_REF:
|
|
129668
|
-
result = ColumnRefExpression::Deserialize(type,
|
|
130125
|
+
result = ColumnRefExpression::Deserialize(type, reader);
|
|
129669
130126
|
break;
|
|
129670
130127
|
case ExpressionClass::COMPARISON:
|
|
129671
|
-
result = ComparisonExpression::Deserialize(type,
|
|
130128
|
+
result = ComparisonExpression::Deserialize(type, reader);
|
|
129672
130129
|
break;
|
|
129673
130130
|
case ExpressionClass::CONJUNCTION:
|
|
129674
|
-
result = ConjunctionExpression::Deserialize(type,
|
|
130131
|
+
result = ConjunctionExpression::Deserialize(type, reader);
|
|
129675
130132
|
break;
|
|
129676
130133
|
case ExpressionClass::CONSTANT:
|
|
129677
|
-
result = ConstantExpression::Deserialize(type,
|
|
130134
|
+
result = ConstantExpression::Deserialize(type, reader);
|
|
129678
130135
|
break;
|
|
129679
130136
|
case ExpressionClass::DEFAULT:
|
|
129680
|
-
result = DefaultExpression::Deserialize(type,
|
|
130137
|
+
result = DefaultExpression::Deserialize(type, reader);
|
|
129681
130138
|
break;
|
|
129682
130139
|
case ExpressionClass::FUNCTION:
|
|
129683
|
-
result = FunctionExpression::Deserialize(type,
|
|
130140
|
+
result = FunctionExpression::Deserialize(type, reader);
|
|
129684
130141
|
break;
|
|
129685
130142
|
case ExpressionClass::LAMBDA:
|
|
129686
|
-
result = LambdaExpression::Deserialize(type,
|
|
130143
|
+
result = LambdaExpression::Deserialize(type, reader);
|
|
129687
130144
|
break;
|
|
129688
130145
|
case ExpressionClass::OPERATOR:
|
|
129689
|
-
result = OperatorExpression::Deserialize(type,
|
|
130146
|
+
result = OperatorExpression::Deserialize(type, reader);
|
|
129690
130147
|
break;
|
|
129691
130148
|
case ExpressionClass::PARAMETER:
|
|
129692
|
-
result = ParameterExpression::Deserialize(type,
|
|
130149
|
+
result = ParameterExpression::Deserialize(type, reader);
|
|
129693
130150
|
break;
|
|
129694
130151
|
case ExpressionClass::POSITIONAL_REFERENCE:
|
|
129695
|
-
result = PositionalReferenceExpression::Deserialize(type,
|
|
130152
|
+
result = PositionalReferenceExpression::Deserialize(type, reader);
|
|
129696
130153
|
break;
|
|
129697
130154
|
case ExpressionClass::STAR:
|
|
129698
|
-
result = StarExpression::Deserialize(type,
|
|
130155
|
+
result = StarExpression::Deserialize(type, reader);
|
|
129699
130156
|
break;
|
|
129700
130157
|
case ExpressionClass::SUBQUERY:
|
|
129701
|
-
result = SubqueryExpression::Deserialize(type,
|
|
130158
|
+
result = SubqueryExpression::Deserialize(type, reader);
|
|
129702
130159
|
break;
|
|
129703
130160
|
case ExpressionClass::WINDOW:
|
|
129704
|
-
result = WindowExpression::Deserialize(type,
|
|
130161
|
+
result = WindowExpression::Deserialize(type, reader);
|
|
129705
130162
|
break;
|
|
129706
130163
|
default:
|
|
129707
130164
|
throw SerializationException("Unsupported type for expression deserialization!");
|
|
129708
130165
|
}
|
|
129709
130166
|
result->alias = alias;
|
|
130167
|
+
reader.Finalize();
|
|
129710
130168
|
return result;
|
|
129711
130169
|
}
|
|
129712
130170
|
|
|
@@ -129752,12 +130210,12 @@ public:
|
|
|
129752
130210
|
public:
|
|
129753
130211
|
bool Equals(const QueryNode *other) const override;
|
|
129754
130212
|
//! Create a copy of this SelectNode
|
|
129755
|
-
unique_ptr<QueryNode> Copy() override;
|
|
130213
|
+
unique_ptr<QueryNode> Copy() const override;
|
|
129756
130214
|
|
|
129757
|
-
//! Serializes a
|
|
129758
|
-
void Serialize(
|
|
129759
|
-
//! Deserializes a blob back into a
|
|
129760
|
-
static unique_ptr<QueryNode> Deserialize(
|
|
130215
|
+
//! Serializes a QueryNode to a stand-alone binary blob
|
|
130216
|
+
void Serialize(FieldWriter &writer) const override;
|
|
130217
|
+
//! Deserializes a blob back into a QueryNode
|
|
130218
|
+
static unique_ptr<QueryNode> Deserialize(FieldReader &reader);
|
|
129761
130219
|
};
|
|
129762
130220
|
|
|
129763
130221
|
} // namespace duckdb
|
|
@@ -135715,6 +136173,7 @@ string QueryErrorContext::FormatErrorRecursive(const string &msg, vector<Excepti
|
|
|
135715
136173
|
} // namespace duckdb
|
|
135716
136174
|
|
|
135717
136175
|
|
|
136176
|
+
|
|
135718
136177
|
namespace duckdb {
|
|
135719
136178
|
|
|
135720
136179
|
bool RecursiveCTENode::Equals(const QueryNode *other_p) const {
|
|
@@ -135738,7 +136197,7 @@ bool RecursiveCTENode::Equals(const QueryNode *other_p) const {
|
|
|
135738
136197
|
return true;
|
|
135739
136198
|
}
|
|
135740
136199
|
|
|
135741
|
-
unique_ptr<QueryNode> RecursiveCTENode::Copy() {
|
|
136200
|
+
unique_ptr<QueryNode> RecursiveCTENode::Copy() const {
|
|
135742
136201
|
auto result = make_unique<RecursiveCTENode>();
|
|
135743
136202
|
result->ctename = ctename;
|
|
135744
136203
|
result->union_all = union_all;
|
|
@@ -135749,22 +136208,21 @@ unique_ptr<QueryNode> RecursiveCTENode::Copy() {
|
|
|
135749
136208
|
return move(result);
|
|
135750
136209
|
}
|
|
135751
136210
|
|
|
135752
|
-
void RecursiveCTENode::Serialize(
|
|
135753
|
-
|
|
135754
|
-
|
|
135755
|
-
|
|
135756
|
-
|
|
135757
|
-
|
|
135758
|
-
serializer.WriteStringVector(aliases);
|
|
136211
|
+
void RecursiveCTENode::Serialize(FieldWriter &writer) const {
|
|
136212
|
+
writer.WriteString(ctename);
|
|
136213
|
+
writer.WriteField<bool>(union_all);
|
|
136214
|
+
writer.WriteSerializable(*left);
|
|
136215
|
+
writer.WriteSerializable(*right);
|
|
136216
|
+
writer.WriteList<string>(aliases);
|
|
135759
136217
|
}
|
|
135760
136218
|
|
|
135761
|
-
unique_ptr<QueryNode> RecursiveCTENode::Deserialize(
|
|
136219
|
+
unique_ptr<QueryNode> RecursiveCTENode::Deserialize(FieldReader &reader) {
|
|
135762
136220
|
auto result = make_unique<RecursiveCTENode>();
|
|
135763
|
-
result->ctename =
|
|
135764
|
-
result->union_all =
|
|
135765
|
-
result->left = QueryNode
|
|
135766
|
-
result->right = QueryNode
|
|
135767
|
-
|
|
136221
|
+
result->ctename = reader.ReadRequired<string>();
|
|
136222
|
+
result->union_all = reader.ReadRequired<bool>();
|
|
136223
|
+
result->left = reader.ReadRequiredSerializable<QueryNode>();
|
|
136224
|
+
result->right = reader.ReadRequiredSerializable<QueryNode>();
|
|
136225
|
+
result->aliases = reader.ReadRequiredList<string>();
|
|
135768
136226
|
return move(result);
|
|
135769
136227
|
}
|
|
135770
136228
|
|
|
@@ -135772,6 +136230,7 @@ unique_ptr<QueryNode> RecursiveCTENode::Deserialize(Deserializer &source) {
|
|
|
135772
136230
|
|
|
135773
136231
|
|
|
135774
136232
|
|
|
136233
|
+
|
|
135775
136234
|
namespace duckdb {
|
|
135776
136235
|
|
|
135777
136236
|
SelectNode::SelectNode()
|
|
@@ -135827,7 +136286,7 @@ bool SelectNode::Equals(const QueryNode *other_p) const {
|
|
|
135827
136286
|
return true;
|
|
135828
136287
|
}
|
|
135829
136288
|
|
|
135830
|
-
unique_ptr<QueryNode> SelectNode::Copy() {
|
|
136289
|
+
unique_ptr<QueryNode> SelectNode::Copy() const {
|
|
135831
136290
|
auto result = make_unique<SelectNode>();
|
|
135832
136291
|
for (auto &child : select_list) {
|
|
135833
136292
|
result->select_list.push_back(child->Copy());
|
|
@@ -135847,42 +136306,34 @@ unique_ptr<QueryNode> SelectNode::Copy() {
|
|
|
135847
136306
|
return move(result);
|
|
135848
136307
|
}
|
|
135849
136308
|
|
|
135850
|
-
void SelectNode::Serialize(
|
|
135851
|
-
|
|
135852
|
-
|
|
135853
|
-
|
|
135854
|
-
|
|
135855
|
-
|
|
135856
|
-
|
|
135857
|
-
serializer.WriteOptional(where_clause);
|
|
135858
|
-
// group by
|
|
135859
|
-
serializer.WriteList(groups.group_expressions);
|
|
135860
|
-
serializer.Write<idx_t>(groups.grouping_sets.size());
|
|
136309
|
+
void SelectNode::Serialize(FieldWriter &writer) const {
|
|
136310
|
+
writer.WriteSerializableList(select_list);
|
|
136311
|
+
writer.WriteOptional(from_table);
|
|
136312
|
+
writer.WriteOptional(where_clause);
|
|
136313
|
+
writer.WriteSerializableList(groups.group_expressions);
|
|
136314
|
+
writer.WriteField<uint32_t>(groups.grouping_sets.size());
|
|
136315
|
+
auto &serializer = writer.GetSerializer();
|
|
135861
136316
|
for (auto &grouping_set : groups.grouping_sets) {
|
|
135862
136317
|
serializer.Write<idx_t>(grouping_set.size());
|
|
135863
136318
|
for (auto &idx : grouping_set) {
|
|
135864
136319
|
serializer.Write<idx_t>(idx);
|
|
135865
136320
|
}
|
|
135866
136321
|
}
|
|
135867
|
-
|
|
135868
|
-
|
|
135869
|
-
|
|
135870
|
-
|
|
135871
|
-
// qualify
|
|
135872
|
-
serializer.WriteOptional(qualify);
|
|
136322
|
+
writer.WriteField<AggregateHandling>(aggregate_handling);
|
|
136323
|
+
writer.WriteOptional(having);
|
|
136324
|
+
writer.WriteOptional(sample);
|
|
136325
|
+
writer.WriteOptional(qualify);
|
|
135873
136326
|
}
|
|
135874
136327
|
|
|
135875
|
-
unique_ptr<QueryNode> SelectNode::Deserialize(
|
|
136328
|
+
unique_ptr<QueryNode> SelectNode::Deserialize(FieldReader &reader) {
|
|
135876
136329
|
auto result = make_unique<SelectNode>();
|
|
135877
|
-
|
|
135878
|
-
|
|
135879
|
-
|
|
135880
|
-
result->
|
|
135881
|
-
|
|
135882
|
-
|
|
135883
|
-
|
|
135884
|
-
source.ReadList<ParsedExpression>(result->groups.group_expressions);
|
|
135885
|
-
auto grouping_set_count = source.Read<idx_t>();
|
|
136330
|
+
result->select_list = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
136331
|
+
result->from_table = reader.ReadOptional<TableRef>(nullptr);
|
|
136332
|
+
result->where_clause = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
136333
|
+
result->groups.group_expressions = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
136334
|
+
|
|
136335
|
+
auto grouping_set_count = reader.ReadRequired<uint32_t>();
|
|
136336
|
+
auto &source = reader.GetSource();
|
|
135886
136337
|
for (idx_t set_idx = 0; set_idx < grouping_set_count; set_idx++) {
|
|
135887
136338
|
auto set_entries = source.Read<idx_t>();
|
|
135888
136339
|
GroupingSet grouping_set;
|
|
@@ -135891,19 +136342,17 @@ unique_ptr<QueryNode> SelectNode::Deserialize(Deserializer &source) {
|
|
|
135891
136342
|
}
|
|
135892
136343
|
result->groups.grouping_sets.push_back(grouping_set);
|
|
135893
136344
|
}
|
|
135894
|
-
result->aggregate_handling =
|
|
135895
|
-
|
|
135896
|
-
|
|
135897
|
-
result->
|
|
135898
|
-
result->sample = source.ReadOptional<SampleOptions>();
|
|
135899
|
-
// qualify
|
|
135900
|
-
result->qualify = source.ReadOptional<ParsedExpression>();
|
|
136345
|
+
result->aggregate_handling = reader.ReadRequired<AggregateHandling>();
|
|
136346
|
+
result->having = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
136347
|
+
result->sample = reader.ReadOptional<SampleOptions>(nullptr);
|
|
136348
|
+
result->qualify = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
135901
136349
|
return move(result);
|
|
135902
136350
|
}
|
|
135903
136351
|
|
|
135904
136352
|
} // namespace duckdb
|
|
135905
136353
|
|
|
135906
136354
|
|
|
136355
|
+
|
|
135907
136356
|
namespace duckdb {
|
|
135908
136357
|
|
|
135909
136358
|
bool SetOperationNode::Equals(const QueryNode *other_p) const {
|
|
@@ -135926,7 +136375,7 @@ bool SetOperationNode::Equals(const QueryNode *other_p) const {
|
|
|
135926
136375
|
return true;
|
|
135927
136376
|
}
|
|
135928
136377
|
|
|
135929
|
-
unique_ptr<QueryNode> SetOperationNode::Copy() {
|
|
136378
|
+
unique_ptr<QueryNode> SetOperationNode::Copy() const {
|
|
135930
136379
|
auto result = make_unique<SetOperationNode>();
|
|
135931
136380
|
result->setop_type = setop_type;
|
|
135932
136381
|
result->left = left->Copy();
|
|
@@ -135935,18 +136384,17 @@ unique_ptr<QueryNode> SetOperationNode::Copy() {
|
|
|
135935
136384
|
return move(result);
|
|
135936
136385
|
}
|
|
135937
136386
|
|
|
135938
|
-
void SetOperationNode::Serialize(
|
|
135939
|
-
|
|
135940
|
-
|
|
135941
|
-
|
|
135942
|
-
right->Serialize(serializer);
|
|
136387
|
+
void SetOperationNode::Serialize(FieldWriter &writer) const {
|
|
136388
|
+
writer.WriteField<SetOperationType>(setop_type);
|
|
136389
|
+
writer.WriteSerializable(*left);
|
|
136390
|
+
writer.WriteSerializable(*right);
|
|
135943
136391
|
}
|
|
135944
136392
|
|
|
135945
|
-
unique_ptr<QueryNode> SetOperationNode::Deserialize(
|
|
136393
|
+
unique_ptr<QueryNode> SetOperationNode::Deserialize(FieldReader &reader) {
|
|
135946
136394
|
auto result = make_unique<SetOperationNode>();
|
|
135947
|
-
result->setop_type =
|
|
135948
|
-
result->left = QueryNode
|
|
135949
|
-
result->right = QueryNode
|
|
136395
|
+
result->setop_type = reader.ReadRequired<SetOperationType>();
|
|
136396
|
+
result->left = reader.ReadRequiredSerializable<QueryNode>();
|
|
136397
|
+
result->right = reader.ReadRequiredSerializable<QueryNode>();
|
|
135950
136398
|
return move(result);
|
|
135951
136399
|
}
|
|
135952
136400
|
|
|
@@ -135958,6 +136406,7 @@ unique_ptr<QueryNode> SetOperationNode::Deserialize(Deserializer &source) {
|
|
|
135958
136406
|
|
|
135959
136407
|
|
|
135960
136408
|
|
|
136409
|
+
|
|
135961
136410
|
namespace duckdb {
|
|
135962
136411
|
|
|
135963
136412
|
bool QueryNode::Equals(const QueryNode *other) const {
|
|
@@ -136011,32 +136460,30 @@ void QueryNode::CopyProperties(QueryNode &other) const {
|
|
|
136011
136460
|
}
|
|
136012
136461
|
}
|
|
136013
136462
|
|
|
136014
|
-
void QueryNode::Serialize(Serializer &
|
|
136015
|
-
|
|
136016
|
-
|
|
136017
|
-
|
|
136018
|
-
modifiers[i]->Serialize(serializer);
|
|
136019
|
-
}
|
|
136463
|
+
void QueryNode::Serialize(Serializer &main_serializer) const {
|
|
136464
|
+
FieldWriter writer(main_serializer);
|
|
136465
|
+
writer.WriteField<QueryNodeType>(type);
|
|
136466
|
+
writer.WriteSerializableList(modifiers);
|
|
136020
136467
|
// cte_map
|
|
136021
|
-
|
|
136022
|
-
serializer.
|
|
136468
|
+
writer.WriteField<uint32_t>((uint32_t)cte_map.size());
|
|
136469
|
+
auto &serializer = writer.GetSerializer();
|
|
136023
136470
|
for (auto &cte : cte_map) {
|
|
136024
136471
|
serializer.WriteString(cte.first);
|
|
136025
136472
|
serializer.WriteStringVector(cte.second->aliases);
|
|
136026
136473
|
cte.second->query->Serialize(serializer);
|
|
136027
136474
|
}
|
|
136475
|
+
Serialize(writer);
|
|
136476
|
+
writer.Finalize();
|
|
136028
136477
|
}
|
|
136029
136478
|
|
|
136030
|
-
unique_ptr<QueryNode> QueryNode::Deserialize(Deserializer &
|
|
136031
|
-
|
|
136032
|
-
|
|
136033
|
-
auto
|
|
136034
|
-
|
|
136035
|
-
for (idx_t i = 0; i < modifier_count; i++) {
|
|
136036
|
-
modifiers.push_back(ResultModifier::Deserialize(source));
|
|
136037
|
-
}
|
|
136479
|
+
unique_ptr<QueryNode> QueryNode::Deserialize(Deserializer &main_source) {
|
|
136480
|
+
FieldReader reader(main_source);
|
|
136481
|
+
|
|
136482
|
+
auto type = reader.ReadRequired<QueryNodeType>();
|
|
136483
|
+
auto modifiers = reader.ReadRequiredSerializableList<ResultModifier>();
|
|
136038
136484
|
// cte_map
|
|
136039
|
-
auto cte_count =
|
|
136485
|
+
auto cte_count = reader.ReadRequired<uint32_t>();
|
|
136486
|
+
auto &source = reader.GetSource();
|
|
136040
136487
|
unordered_map<string, unique_ptr<CommonTableExpressionInfo>> cte_map;
|
|
136041
136488
|
for (idx_t i = 0; i < cte_count; i++) {
|
|
136042
136489
|
auto name = source.Read<string>();
|
|
@@ -136045,15 +136492,17 @@ unique_ptr<QueryNode> QueryNode::Deserialize(Deserializer &source) {
|
|
|
136045
136492
|
info->query = SelectStatement::Deserialize(source);
|
|
136046
136493
|
cte_map[name] = move(info);
|
|
136047
136494
|
}
|
|
136495
|
+
|
|
136496
|
+
unique_ptr<QueryNode> result;
|
|
136048
136497
|
switch (type) {
|
|
136049
136498
|
case QueryNodeType::SELECT_NODE:
|
|
136050
|
-
result = SelectNode::Deserialize(
|
|
136499
|
+
result = SelectNode::Deserialize(reader);
|
|
136051
136500
|
break;
|
|
136052
136501
|
case QueryNodeType::SET_OPERATION_NODE:
|
|
136053
|
-
result = SetOperationNode::Deserialize(
|
|
136502
|
+
result = SetOperationNode::Deserialize(reader);
|
|
136054
136503
|
break;
|
|
136055
136504
|
case QueryNodeType::RECURSIVE_CTE_NODE:
|
|
136056
|
-
result = RecursiveCTENode::Deserialize(
|
|
136505
|
+
result = RecursiveCTENode::Deserialize(reader);
|
|
136057
136506
|
break;
|
|
136058
136507
|
default:
|
|
136059
136508
|
throw SerializationException("Could not deserialize Query Node: unknown type!");
|
|
@@ -136077,24 +136526,35 @@ bool ResultModifier::Equals(const ResultModifier *other) const {
|
|
|
136077
136526
|
return type == other->type;
|
|
136078
136527
|
}
|
|
136079
136528
|
|
|
136080
|
-
void ResultModifier::Serialize(Serializer &serializer) {
|
|
136081
|
-
serializer
|
|
136529
|
+
void ResultModifier::Serialize(Serializer &serializer) const {
|
|
136530
|
+
FieldWriter writer(serializer);
|
|
136531
|
+
writer.WriteField<ResultModifierType>(type);
|
|
136532
|
+
Serialize(writer);
|
|
136533
|
+
writer.Finalize();
|
|
136082
136534
|
}
|
|
136083
136535
|
|
|
136084
136536
|
unique_ptr<ResultModifier> ResultModifier::Deserialize(Deserializer &source) {
|
|
136085
|
-
|
|
136537
|
+
FieldReader reader(source);
|
|
136538
|
+
auto type = reader.ReadRequired<ResultModifierType>();
|
|
136539
|
+
|
|
136540
|
+
unique_ptr<ResultModifier> result;
|
|
136086
136541
|
switch (type) {
|
|
136087
136542
|
case ResultModifierType::LIMIT_MODIFIER:
|
|
136088
|
-
|
|
136543
|
+
result = LimitModifier::Deserialize(reader);
|
|
136544
|
+
break;
|
|
136089
136545
|
case ResultModifierType::ORDER_MODIFIER:
|
|
136090
|
-
|
|
136546
|
+
result = OrderModifier::Deserialize(reader);
|
|
136547
|
+
break;
|
|
136091
136548
|
case ResultModifierType::DISTINCT_MODIFIER:
|
|
136092
|
-
|
|
136549
|
+
result = DistinctModifier::Deserialize(reader);
|
|
136550
|
+
break;
|
|
136093
136551
|
case ResultModifierType::LIMIT_PERCENT_MODIFIER:
|
|
136094
|
-
|
|
136552
|
+
result = LimitPercentModifier::Deserialize(reader);
|
|
136553
|
+
break;
|
|
136095
136554
|
default:
|
|
136096
136555
|
throw InternalException("Unrecognized ResultModifierType for Deserialization");
|
|
136097
136556
|
}
|
|
136557
|
+
return result;
|
|
136098
136558
|
}
|
|
136099
136559
|
|
|
136100
136560
|
bool LimitModifier::Equals(const ResultModifier *other_p) const {
|
|
@@ -136111,7 +136571,7 @@ bool LimitModifier::Equals(const ResultModifier *other_p) const {
|
|
|
136111
136571
|
return true;
|
|
136112
136572
|
}
|
|
136113
136573
|
|
|
136114
|
-
unique_ptr<ResultModifier> LimitModifier::Copy() {
|
|
136574
|
+
unique_ptr<ResultModifier> LimitModifier::Copy() const {
|
|
136115
136575
|
auto copy = make_unique<LimitModifier>();
|
|
136116
136576
|
if (limit) {
|
|
136117
136577
|
copy->limit = limit->Copy();
|
|
@@ -136122,16 +136582,15 @@ unique_ptr<ResultModifier> LimitModifier::Copy() {
|
|
|
136122
136582
|
return move(copy);
|
|
136123
136583
|
}
|
|
136124
136584
|
|
|
136125
|
-
void LimitModifier::Serialize(
|
|
136126
|
-
|
|
136127
|
-
|
|
136128
|
-
serializer.WriteOptional(offset);
|
|
136585
|
+
void LimitModifier::Serialize(FieldWriter &writer) const {
|
|
136586
|
+
writer.WriteOptional(limit);
|
|
136587
|
+
writer.WriteOptional(offset);
|
|
136129
136588
|
}
|
|
136130
136589
|
|
|
136131
|
-
unique_ptr<ResultModifier> LimitModifier::Deserialize(
|
|
136590
|
+
unique_ptr<ResultModifier> LimitModifier::Deserialize(FieldReader &reader) {
|
|
136132
136591
|
auto mod = make_unique<LimitModifier>();
|
|
136133
|
-
mod->limit =
|
|
136134
|
-
mod->offset =
|
|
136592
|
+
mod->limit = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
136593
|
+
mod->offset = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
136135
136594
|
return move(mod);
|
|
136136
136595
|
}
|
|
136137
136596
|
|
|
@@ -136146,7 +136605,7 @@ bool DistinctModifier::Equals(const ResultModifier *other_p) const {
|
|
|
136146
136605
|
return true;
|
|
136147
136606
|
}
|
|
136148
136607
|
|
|
136149
|
-
unique_ptr<ResultModifier> DistinctModifier::Copy() {
|
|
136608
|
+
unique_ptr<ResultModifier> DistinctModifier::Copy() const {
|
|
136150
136609
|
auto copy = make_unique<DistinctModifier>();
|
|
136151
136610
|
for (auto &expr : distinct_on_targets) {
|
|
136152
136611
|
copy->distinct_on_targets.push_back(expr->Copy());
|
|
@@ -136154,14 +136613,13 @@ unique_ptr<ResultModifier> DistinctModifier::Copy() {
|
|
|
136154
136613
|
return move(copy);
|
|
136155
136614
|
}
|
|
136156
136615
|
|
|
136157
|
-
void DistinctModifier::Serialize(
|
|
136158
|
-
|
|
136159
|
-
serializer.WriteList(distinct_on_targets);
|
|
136616
|
+
void DistinctModifier::Serialize(FieldWriter &writer) const {
|
|
136617
|
+
writer.WriteSerializableList(distinct_on_targets);
|
|
136160
136618
|
}
|
|
136161
136619
|
|
|
136162
|
-
unique_ptr<ResultModifier> DistinctModifier::Deserialize(
|
|
136620
|
+
unique_ptr<ResultModifier> DistinctModifier::Deserialize(FieldReader &reader) {
|
|
136163
136621
|
auto mod = make_unique<DistinctModifier>();
|
|
136164
|
-
|
|
136622
|
+
mod->distinct_on_targets = reader.ReadRequiredSerializableList<ParsedExpression>();
|
|
136165
136623
|
return move(mod);
|
|
136166
136624
|
}
|
|
136167
136625
|
|
|
@@ -136184,7 +136642,7 @@ bool OrderModifier::Equals(const ResultModifier *other_p) const {
|
|
|
136184
136642
|
return true;
|
|
136185
136643
|
}
|
|
136186
136644
|
|
|
136187
|
-
unique_ptr<ResultModifier> OrderModifier::Copy() {
|
|
136645
|
+
unique_ptr<ResultModifier> OrderModifier::Copy() const {
|
|
136188
136646
|
auto copy = make_unique<OrderModifier>();
|
|
136189
136647
|
for (auto &order : orders) {
|
|
136190
136648
|
copy->orders.emplace_back(order.type, order.null_order, order.expression->Copy());
|
|
@@ -136218,33 +136676,29 @@ string OrderByNode::ToString() const {
|
|
|
136218
136676
|
return str;
|
|
136219
136677
|
}
|
|
136220
136678
|
|
|
136221
|
-
void OrderByNode::Serialize(Serializer &serializer) {
|
|
136222
|
-
serializer
|
|
136223
|
-
|
|
136224
|
-
|
|
136679
|
+
void OrderByNode::Serialize(Serializer &serializer) const {
|
|
136680
|
+
FieldWriter writer(serializer);
|
|
136681
|
+
writer.WriteField<OrderType>(type);
|
|
136682
|
+
writer.WriteField<OrderByNullType>(null_order);
|
|
136683
|
+
writer.WriteSerializable(*expression);
|
|
136684
|
+
writer.Finalize();
|
|
136225
136685
|
}
|
|
136226
136686
|
|
|
136227
136687
|
OrderByNode OrderByNode::Deserialize(Deserializer &source) {
|
|
136228
|
-
|
|
136229
|
-
auto
|
|
136230
|
-
auto
|
|
136688
|
+
FieldReader reader(source);
|
|
136689
|
+
auto type = reader.ReadRequired<OrderType>();
|
|
136690
|
+
auto null_order = reader.ReadRequired<OrderByNullType>();
|
|
136691
|
+
auto expression = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
136231
136692
|
return OrderByNode(type, null_order, move(expression));
|
|
136232
136693
|
}
|
|
136233
136694
|
|
|
136234
|
-
void OrderModifier::Serialize(
|
|
136235
|
-
|
|
136236
|
-
serializer.Write<int64_t>(orders.size());
|
|
136237
|
-
for (auto &order : orders) {
|
|
136238
|
-
order.Serialize(serializer);
|
|
136239
|
-
}
|
|
136695
|
+
void OrderModifier::Serialize(FieldWriter &writer) const {
|
|
136696
|
+
writer.WriteRegularSerializableList(orders);
|
|
136240
136697
|
}
|
|
136241
136698
|
|
|
136242
|
-
unique_ptr<ResultModifier> OrderModifier::Deserialize(
|
|
136699
|
+
unique_ptr<ResultModifier> OrderModifier::Deserialize(FieldReader &reader) {
|
|
136243
136700
|
auto mod = make_unique<OrderModifier>();
|
|
136244
|
-
|
|
136245
|
-
for (int64_t i = 0; i < order_count; i++) {
|
|
136246
|
-
mod->orders.push_back(OrderByNode::Deserialize((source)));
|
|
136247
|
-
}
|
|
136701
|
+
mod->orders = reader.ReadRequiredSerializableList<OrderByNode, OrderByNode>();
|
|
136248
136702
|
return move(mod);
|
|
136249
136703
|
}
|
|
136250
136704
|
|
|
@@ -136262,7 +136716,7 @@ bool LimitPercentModifier::Equals(const ResultModifier *other_p) const {
|
|
|
136262
136716
|
return true;
|
|
136263
136717
|
}
|
|
136264
136718
|
|
|
136265
|
-
unique_ptr<ResultModifier> LimitPercentModifier::Copy() {
|
|
136719
|
+
unique_ptr<ResultModifier> LimitPercentModifier::Copy() const {
|
|
136266
136720
|
auto copy = make_unique<LimitPercentModifier>();
|
|
136267
136721
|
if (limit) {
|
|
136268
136722
|
copy->limit = limit->Copy();
|
|
@@ -136273,16 +136727,15 @@ unique_ptr<ResultModifier> LimitPercentModifier::Copy() {
|
|
|
136273
136727
|
return move(copy);
|
|
136274
136728
|
}
|
|
136275
136729
|
|
|
136276
|
-
void LimitPercentModifier::Serialize(
|
|
136277
|
-
|
|
136278
|
-
|
|
136279
|
-
serializer.WriteOptional(offset);
|
|
136730
|
+
void LimitPercentModifier::Serialize(FieldWriter &writer) const {
|
|
136731
|
+
writer.WriteOptional(limit);
|
|
136732
|
+
writer.WriteOptional(offset);
|
|
136280
136733
|
}
|
|
136281
136734
|
|
|
136282
|
-
unique_ptr<ResultModifier> LimitPercentModifier::Deserialize(
|
|
136735
|
+
unique_ptr<ResultModifier> LimitPercentModifier::Deserialize(FieldReader &reader) {
|
|
136283
136736
|
auto mod = make_unique<LimitPercentModifier>();
|
|
136284
|
-
mod->limit =
|
|
136285
|
-
mod->offset =
|
|
136737
|
+
mod->limit = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
136738
|
+
mod->offset = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
136286
136739
|
return move(mod);
|
|
136287
136740
|
}
|
|
136288
136741
|
|
|
@@ -136618,7 +137071,7 @@ unique_ptr<SQLStatement> SelectStatement::Copy() const {
|
|
|
136618
137071
|
return move(result);
|
|
136619
137072
|
}
|
|
136620
137073
|
|
|
136621
|
-
void SelectStatement::Serialize(Serializer &serializer) {
|
|
137074
|
+
void SelectStatement::Serialize(Serializer &serializer) const {
|
|
136622
137075
|
node->Serialize(serializer);
|
|
136623
137076
|
}
|
|
136624
137077
|
|
|
@@ -136838,20 +137291,18 @@ bool BaseTableRef::Equals(const TableRef *other_p) const {
|
|
|
136838
137291
|
column_name_alias == other->column_name_alias;
|
|
136839
137292
|
}
|
|
136840
137293
|
|
|
136841
|
-
void BaseTableRef::Serialize(
|
|
136842
|
-
|
|
136843
|
-
|
|
136844
|
-
|
|
136845
|
-
serializer.WriteString(table_name);
|
|
136846
|
-
serializer.WriteStringVector(column_name_alias);
|
|
137294
|
+
void BaseTableRef::Serialize(FieldWriter &writer) const {
|
|
137295
|
+
writer.WriteString(schema_name);
|
|
137296
|
+
writer.WriteString(table_name);
|
|
137297
|
+
writer.WriteList<string>(column_name_alias);
|
|
136847
137298
|
}
|
|
136848
137299
|
|
|
136849
|
-
unique_ptr<TableRef> BaseTableRef::Deserialize(
|
|
137300
|
+
unique_ptr<TableRef> BaseTableRef::Deserialize(FieldReader &reader) {
|
|
136850
137301
|
auto result = make_unique<BaseTableRef>();
|
|
136851
137302
|
|
|
136852
|
-
result->schema_name =
|
|
136853
|
-
result->table_name =
|
|
136854
|
-
|
|
137303
|
+
result->schema_name = reader.ReadRequired<string>();
|
|
137304
|
+
result->table_name = reader.ReadRequired<string>();
|
|
137305
|
+
result->column_name_alias = reader.ReadRequiredList<string>();
|
|
136855
137306
|
|
|
136856
137307
|
return move(result);
|
|
136857
137308
|
}
|
|
@@ -136889,22 +137340,18 @@ unique_ptr<TableRef> CrossProductRef::Copy() {
|
|
|
136889
137340
|
return move(copy);
|
|
136890
137341
|
}
|
|
136891
137342
|
|
|
136892
|
-
void CrossProductRef::Serialize(
|
|
136893
|
-
|
|
136894
|
-
|
|
136895
|
-
left->Serialize(serializer);
|
|
136896
|
-
right->Serialize(serializer);
|
|
137343
|
+
void CrossProductRef::Serialize(FieldWriter &writer) const {
|
|
137344
|
+
writer.WriteSerializable(*left);
|
|
137345
|
+
writer.WriteSerializable(*right);
|
|
136897
137346
|
}
|
|
136898
137347
|
|
|
136899
|
-
unique_ptr<TableRef> CrossProductRef::Deserialize(
|
|
137348
|
+
unique_ptr<TableRef> CrossProductRef::Deserialize(FieldReader &reader) {
|
|
136900
137349
|
auto result = make_unique<CrossProductRef>();
|
|
136901
137350
|
|
|
136902
|
-
result->left = TableRef
|
|
136903
|
-
result->right = TableRef
|
|
136904
|
-
|
|
136905
|
-
|
|
136906
|
-
return nullptr;
|
|
136907
|
-
}
|
|
137351
|
+
result->left = reader.ReadRequiredSerializable<TableRef>();
|
|
137352
|
+
result->right = reader.ReadRequiredSerializable<TableRef>();
|
|
137353
|
+
D_ASSERT(result->left);
|
|
137354
|
+
D_ASSERT(result->right);
|
|
136908
137355
|
|
|
136909
137356
|
return move(result);
|
|
136910
137357
|
}
|
|
@@ -136924,11 +137371,10 @@ unique_ptr<TableRef> EmptyTableRef::Copy() {
|
|
|
136924
137371
|
return make_unique<EmptyTableRef>();
|
|
136925
137372
|
}
|
|
136926
137373
|
|
|
136927
|
-
void EmptyTableRef::Serialize(
|
|
136928
|
-
TableRef::Serialize(serializer);
|
|
137374
|
+
void EmptyTableRef::Serialize(FieldWriter &writer) const {
|
|
136929
137375
|
}
|
|
136930
137376
|
|
|
136931
|
-
unique_ptr<TableRef> EmptyTableRef::Deserialize(
|
|
137377
|
+
unique_ptr<TableRef> EmptyTableRef::Deserialize(FieldReader &reader) {
|
|
136932
137378
|
return make_unique<EmptyTableRef>();
|
|
136933
137379
|
}
|
|
136934
137380
|
|
|
@@ -136977,34 +137423,23 @@ unique_ptr<TableRef> ExpressionListRef::Copy() {
|
|
|
136977
137423
|
return move(result);
|
|
136978
137424
|
}
|
|
136979
137425
|
|
|
136980
|
-
void ExpressionListRef::Serialize(
|
|
136981
|
-
|
|
136982
|
-
|
|
136983
|
-
|
|
136984
|
-
|
|
136985
|
-
}
|
|
136986
|
-
serializer.Write<idx_t>(expected_types.size());
|
|
136987
|
-
for (idx_t i = 0; i < expected_types.size(); i++) {
|
|
136988
|
-
expected_types[i].Serialize(serializer);
|
|
136989
|
-
}
|
|
136990
|
-
serializer.Write<idx_t>(values.size());
|
|
137426
|
+
void ExpressionListRef::Serialize(FieldWriter &writer) const {
|
|
137427
|
+
writer.WriteList<string>(expected_names);
|
|
137428
|
+
writer.WriteRegularSerializableList<LogicalType>(expected_types);
|
|
137429
|
+
auto &serializer = writer.GetSerializer();
|
|
137430
|
+
writer.WriteField<uint32_t>(values.size());
|
|
136991
137431
|
for (idx_t i = 0; i < values.size(); i++) {
|
|
136992
137432
|
serializer.WriteList(values[i]);
|
|
136993
137433
|
}
|
|
136994
137434
|
}
|
|
136995
137435
|
|
|
136996
|
-
unique_ptr<TableRef> ExpressionListRef::Deserialize(
|
|
137436
|
+
unique_ptr<TableRef> ExpressionListRef::Deserialize(FieldReader &reader) {
|
|
136997
137437
|
auto result = make_unique<ExpressionListRef>();
|
|
136998
137438
|
// value list
|
|
136999
|
-
|
|
137000
|
-
|
|
137001
|
-
|
|
137002
|
-
|
|
137003
|
-
auto type_count = source.Read<idx_t>();
|
|
137004
|
-
for (idx_t i = 0; i < type_count; i++) {
|
|
137005
|
-
result->expected_types.push_back(LogicalType::Deserialize(source));
|
|
137006
|
-
}
|
|
137007
|
-
idx_t value_list_size = source.Read<idx_t>();
|
|
137439
|
+
result->expected_names = reader.ReadRequiredList<string>();
|
|
137440
|
+
result->expected_types = reader.ReadRequiredSerializableList<LogicalType, LogicalType>();
|
|
137441
|
+
idx_t value_list_size = reader.ReadRequired<uint32_t>();
|
|
137442
|
+
auto &source = reader.GetSource();
|
|
137008
137443
|
for (idx_t i = 0; i < value_list_size; i++) {
|
|
137009
137444
|
vector<unique_ptr<ParsedExpression>> value_list;
|
|
137010
137445
|
source.ReadList<ParsedExpression>(value_list);
|
|
@@ -137052,33 +137487,23 @@ unique_ptr<TableRef> JoinRef::Copy() {
|
|
|
137052
137487
|
return move(copy);
|
|
137053
137488
|
}
|
|
137054
137489
|
|
|
137055
|
-
void JoinRef::Serialize(
|
|
137056
|
-
|
|
137057
|
-
|
|
137058
|
-
|
|
137059
|
-
|
|
137060
|
-
|
|
137061
|
-
|
|
137062
|
-
serializer.Write<bool>(is_natural);
|
|
137063
|
-
D_ASSERT(using_columns.size() <= NumericLimits<uint32_t>::Maximum());
|
|
137064
|
-
serializer.Write<uint32_t>((uint32_t)using_columns.size());
|
|
137065
|
-
for (auto &using_column : using_columns) {
|
|
137066
|
-
serializer.WriteString(using_column);
|
|
137067
|
-
}
|
|
137490
|
+
void JoinRef::Serialize(FieldWriter &writer) const {
|
|
137491
|
+
writer.WriteSerializable(*left);
|
|
137492
|
+
writer.WriteSerializable(*right);
|
|
137493
|
+
writer.WriteOptional(condition);
|
|
137494
|
+
writer.WriteField<JoinType>(type);
|
|
137495
|
+
writer.WriteField<bool>(is_natural);
|
|
137496
|
+
writer.WriteList<string>(using_columns);
|
|
137068
137497
|
}
|
|
137069
137498
|
|
|
137070
|
-
unique_ptr<TableRef> JoinRef::Deserialize(
|
|
137499
|
+
unique_ptr<TableRef> JoinRef::Deserialize(FieldReader &reader) {
|
|
137071
137500
|
auto result = make_unique<JoinRef>();
|
|
137072
|
-
|
|
137073
|
-
result->
|
|
137074
|
-
result->
|
|
137075
|
-
result->
|
|
137076
|
-
result->
|
|
137077
|
-
result->
|
|
137078
|
-
auto count = source.Read<uint32_t>();
|
|
137079
|
-
for (idx_t i = 0; i < count; i++) {
|
|
137080
|
-
result->using_columns.push_back(source.Read<string>());
|
|
137081
|
-
}
|
|
137501
|
+
result->left = reader.ReadRequiredSerializable<TableRef>();
|
|
137502
|
+
result->right = reader.ReadRequiredSerializable<TableRef>();
|
|
137503
|
+
result->condition = reader.ReadOptional<ParsedExpression>(nullptr);
|
|
137504
|
+
result->type = reader.ReadRequired<JoinType>();
|
|
137505
|
+
result->is_natural = reader.ReadRequired<bool>();
|
|
137506
|
+
result->using_columns = reader.ReadRequiredList<string>();
|
|
137082
137507
|
return move(result);
|
|
137083
137508
|
}
|
|
137084
137509
|
|
|
@@ -137110,19 +137535,15 @@ unique_ptr<TableRef> SubqueryRef::Copy() {
|
|
|
137110
137535
|
return move(copy);
|
|
137111
137536
|
}
|
|
137112
137537
|
|
|
137113
|
-
void SubqueryRef::Serialize(
|
|
137114
|
-
|
|
137115
|
-
|
|
137116
|
-
serializer.WriteStringVector(column_name_alias);
|
|
137538
|
+
void SubqueryRef::Serialize(FieldWriter &writer) const {
|
|
137539
|
+
writer.WriteSerializable(*subquery);
|
|
137540
|
+
writer.WriteList<string>(column_name_alias);
|
|
137117
137541
|
}
|
|
137118
137542
|
|
|
137119
|
-
unique_ptr<TableRef> SubqueryRef::Deserialize(
|
|
137120
|
-
auto subquery = SelectStatement
|
|
137121
|
-
if (!subquery) {
|
|
137122
|
-
return nullptr;
|
|
137123
|
-
}
|
|
137543
|
+
unique_ptr<TableRef> SubqueryRef::Deserialize(FieldReader &reader) {
|
|
137544
|
+
auto subquery = reader.ReadRequiredSerializable<SelectStatement>();
|
|
137124
137545
|
auto result = make_unique<SubqueryRef>(move(subquery));
|
|
137125
|
-
|
|
137546
|
+
result->column_name_alias = reader.ReadRequiredList<string>();
|
|
137126
137547
|
return move(result);
|
|
137127
137548
|
}
|
|
137128
137549
|
|
|
@@ -137145,20 +137566,17 @@ bool TableFunctionRef::Equals(const TableRef *other_p) const {
|
|
|
137145
137566
|
return function->Equals(other->function.get());
|
|
137146
137567
|
}
|
|
137147
137568
|
|
|
137148
|
-
void TableFunctionRef::Serialize(
|
|
137149
|
-
|
|
137150
|
-
|
|
137151
|
-
|
|
137152
|
-
serializer.WriteStringVector(column_name_alias);
|
|
137569
|
+
void TableFunctionRef::Serialize(FieldWriter &writer) const {
|
|
137570
|
+
writer.WriteSerializable(*function);
|
|
137571
|
+
writer.WriteString(alias);
|
|
137572
|
+
writer.WriteList<string>(column_name_alias);
|
|
137153
137573
|
}
|
|
137154
137574
|
|
|
137155
|
-
unique_ptr<TableRef> TableFunctionRef::Deserialize(
|
|
137575
|
+
unique_ptr<TableRef> TableFunctionRef::Deserialize(FieldReader &reader) {
|
|
137156
137576
|
auto result = make_unique<TableFunctionRef>();
|
|
137157
|
-
|
|
137158
|
-
result->
|
|
137159
|
-
result->
|
|
137160
|
-
source.ReadStringVector(result->column_name_alias);
|
|
137161
|
-
|
|
137577
|
+
result->function = reader.ReadRequiredSerializable<ParsedExpression>();
|
|
137578
|
+
result->alias = reader.ReadRequired<string>();
|
|
137579
|
+
result->column_name_alias = reader.ReadRequiredList<string>();
|
|
137162
137580
|
return move(result);
|
|
137163
137581
|
}
|
|
137164
137582
|
|
|
@@ -137190,44 +137608,50 @@ bool TableRef::Equals(const TableRef *other) const {
|
|
|
137190
137608
|
SampleOptions::Equals(sample.get(), other->sample.get());
|
|
137191
137609
|
}
|
|
137192
137610
|
|
|
137193
|
-
void TableRef::Serialize(Serializer &serializer) {
|
|
137194
|
-
serializer
|
|
137195
|
-
|
|
137196
|
-
|
|
137611
|
+
void TableRef::Serialize(Serializer &serializer) const {
|
|
137612
|
+
FieldWriter writer(serializer);
|
|
137613
|
+
writer.WriteField<TableReferenceType>(type);
|
|
137614
|
+
writer.WriteString(alias);
|
|
137615
|
+
writer.WriteOptional(sample);
|
|
137616
|
+
Serialize(writer);
|
|
137617
|
+
writer.Finalize();
|
|
137197
137618
|
}
|
|
137198
137619
|
|
|
137199
|
-
//! Deserializes a blob back into an TableRef
|
|
137200
137620
|
unique_ptr<TableRef> TableRef::Deserialize(Deserializer &source) {
|
|
137201
|
-
|
|
137202
|
-
|
|
137203
|
-
auto
|
|
137621
|
+
FieldReader reader(source);
|
|
137622
|
+
|
|
137623
|
+
auto type = reader.ReadRequired<TableReferenceType>();
|
|
137624
|
+
auto alias = reader.ReadRequired<string>();
|
|
137625
|
+
auto sample = reader.ReadOptional<SampleOptions>(nullptr);
|
|
137204
137626
|
unique_ptr<TableRef> result;
|
|
137205
137627
|
switch (type) {
|
|
137206
137628
|
case TableReferenceType::BASE_TABLE:
|
|
137207
|
-
result = BaseTableRef::Deserialize(
|
|
137629
|
+
result = BaseTableRef::Deserialize(reader);
|
|
137208
137630
|
break;
|
|
137209
137631
|
case TableReferenceType::CROSS_PRODUCT:
|
|
137210
|
-
result = CrossProductRef::Deserialize(
|
|
137632
|
+
result = CrossProductRef::Deserialize(reader);
|
|
137211
137633
|
break;
|
|
137212
137634
|
case TableReferenceType::JOIN:
|
|
137213
|
-
result = JoinRef::Deserialize(
|
|
137635
|
+
result = JoinRef::Deserialize(reader);
|
|
137214
137636
|
break;
|
|
137215
137637
|
case TableReferenceType::SUBQUERY:
|
|
137216
|
-
result = SubqueryRef::Deserialize(
|
|
137638
|
+
result = SubqueryRef::Deserialize(reader);
|
|
137217
137639
|
break;
|
|
137218
137640
|
case TableReferenceType::TABLE_FUNCTION:
|
|
137219
|
-
result = TableFunctionRef::Deserialize(
|
|
137641
|
+
result = TableFunctionRef::Deserialize(reader);
|
|
137220
137642
|
break;
|
|
137221
137643
|
case TableReferenceType::EMPTY:
|
|
137222
|
-
result = EmptyTableRef::Deserialize(
|
|
137644
|
+
result = EmptyTableRef::Deserialize(reader);
|
|
137223
137645
|
break;
|
|
137224
137646
|
case TableReferenceType::EXPRESSION_LIST:
|
|
137225
|
-
result = ExpressionListRef::Deserialize(
|
|
137647
|
+
result = ExpressionListRef::Deserialize(reader);
|
|
137226
137648
|
break;
|
|
137227
137649
|
case TableReferenceType::CTE:
|
|
137228
137650
|
case TableReferenceType::INVALID:
|
|
137229
137651
|
throw InternalException("Unsupported type for TableRef::Deserialize");
|
|
137230
137652
|
}
|
|
137653
|
+
reader.Finalize();
|
|
137654
|
+
|
|
137231
137655
|
result->alias = alias;
|
|
137232
137656
|
result->sample = move(sample);
|
|
137233
137657
|
return result;
|
|
@@ -140278,7 +140702,7 @@ unique_ptr<CreateStatement> Transformer::TransformCreateEnum(duckdb_libpgquery::
|
|
|
140278
140702
|
info->name = ReadPgListToString(stmt->typeName)[0];
|
|
140279
140703
|
idx_t size = 0;
|
|
140280
140704
|
auto ordered_array = ReadPgListToVector(stmt->vals, size);
|
|
140281
|
-
info->type =
|
|
140705
|
+
info->type = LogicalType::ENUM(info->name, ordered_array, size);
|
|
140282
140706
|
result->info = move(info);
|
|
140283
140707
|
return result;
|
|
140284
140708
|
}
|
|
@@ -143720,11 +144144,14 @@ public:
|
|
|
143720
144144
|
unique_ptr<SelectStatement> subquery;
|
|
143721
144145
|
|
|
143722
144146
|
const vector<unique_ptr<ParsedExpression>> &GetSelectList() const override {
|
|
143723
|
-
throw
|
|
144147
|
+
throw InternalException("Cannot get select list of bound subquery node");
|
|
143724
144148
|
}
|
|
143725
144149
|
|
|
143726
|
-
unique_ptr<QueryNode> Copy() override {
|
|
143727
|
-
throw
|
|
144150
|
+
unique_ptr<QueryNode> Copy() const override {
|
|
144151
|
+
throw InternalException("Cannot copy bound subquery node");
|
|
144152
|
+
}
|
|
144153
|
+
void Serialize(FieldWriter &writer) const override {
|
|
144154
|
+
throw InternalException("Cannot copy bound subquery node");
|
|
143728
144155
|
}
|
|
143729
144156
|
};
|
|
143730
144157
|
|
|
@@ -146177,7 +146604,7 @@ void Binder::BindLogicalType(ClientContext &context, LogicalType &type, const st
|
|
|
146177
146604
|
if (!user_type_catalog) {
|
|
146178
146605
|
throw NotImplementedException("DataType %s not supported yet...\n", user_type_name);
|
|
146179
146606
|
}
|
|
146180
|
-
type =
|
|
146607
|
+
type = user_type_catalog->user_type;
|
|
146181
146608
|
EnumType::SetCatalog(type, user_type_catalog);
|
|
146182
146609
|
} else if (type.id() == LogicalTypeId::ENUM) {
|
|
146183
146610
|
auto &enum_type_name = EnumType::GetTypeName(type);
|
|
@@ -160946,6 +161373,7 @@ private:
|
|
|
160946
161373
|
|
|
160947
161374
|
|
|
160948
161375
|
|
|
161376
|
+
|
|
160949
161377
|
#include <algorithm>
|
|
160950
161378
|
#include <cstring>
|
|
160951
161379
|
|
|
@@ -160956,9 +161384,11 @@ const char MainHeader::MAGIC_BYTES[] = "DUCK";
|
|
|
160956
161384
|
void MainHeader::Serialize(Serializer &ser) {
|
|
160957
161385
|
ser.WriteData((data_ptr_t)MAGIC_BYTES, MAGIC_BYTE_SIZE);
|
|
160958
161386
|
ser.Write<uint64_t>(version_number);
|
|
161387
|
+
FieldWriter writer(ser);
|
|
160959
161388
|
for (idx_t i = 0; i < FLAG_COUNT; i++) {
|
|
160960
|
-
|
|
161389
|
+
writer.WriteField<uint64_t>(flags[i]);
|
|
160961
161390
|
}
|
|
161391
|
+
writer.Finalize();
|
|
160962
161392
|
}
|
|
160963
161393
|
|
|
160964
161394
|
void MainHeader::CheckMagicBytes(FileHandle &handle) {
|
|
@@ -160981,9 +161411,11 @@ MainHeader MainHeader::Deserialize(Deserializer &source) {
|
|
|
160981
161411
|
}
|
|
160982
161412
|
header.version_number = source.Read<uint64_t>();
|
|
160983
161413
|
// read the flags
|
|
161414
|
+
FieldReader reader(source);
|
|
160984
161415
|
for (idx_t i = 0; i < FLAG_COUNT; i++) {
|
|
160985
|
-
header.flags[i] =
|
|
161416
|
+
header.flags[i] = reader.ReadRequired<uint64_t>();
|
|
160986
161417
|
}
|
|
161418
|
+
reader.Finalize();
|
|
160987
161419
|
return header;
|
|
160988
161420
|
}
|
|
160989
161421
|
|
|
@@ -161350,7 +161782,7 @@ BaseStatistics::BaseStatistics(LogicalType type) : type(move(type)) {
|
|
|
161350
161782
|
BaseStatistics::~BaseStatistics() {
|
|
161351
161783
|
}
|
|
161352
161784
|
|
|
161353
|
-
bool BaseStatistics::CanHaveNull() {
|
|
161785
|
+
bool BaseStatistics::CanHaveNull() const {
|
|
161354
161786
|
if (!validity_stats) {
|
|
161355
161787
|
// we don't know
|
|
161356
161788
|
// solid maybe
|
|
@@ -161359,7 +161791,7 @@ bool BaseStatistics::CanHaveNull() {
|
|
|
161359
161791
|
return ((ValidityStatistics &)*validity_stats).has_null;
|
|
161360
161792
|
}
|
|
161361
161793
|
|
|
161362
|
-
bool BaseStatistics::CanHaveNoNull() {
|
|
161794
|
+
bool BaseStatistics::CanHaveNoNull() const {
|
|
161363
161795
|
if (!validity_stats) {
|
|
161364
161796
|
// we don't know
|
|
161365
161797
|
// solid maybe
|
|
@@ -161368,14 +161800,6 @@ bool BaseStatistics::CanHaveNoNull() {
|
|
|
161368
161800
|
return ((ValidityStatistics &)*validity_stats).has_no_null;
|
|
161369
161801
|
}
|
|
161370
161802
|
|
|
161371
|
-
unique_ptr<BaseStatistics> BaseStatistics::Copy() {
|
|
161372
|
-
auto statistics = make_unique<BaseStatistics>(type);
|
|
161373
|
-
if (validity_stats) {
|
|
161374
|
-
statistics->validity_stats = validity_stats->Copy();
|
|
161375
|
-
}
|
|
161376
|
-
return statistics;
|
|
161377
|
-
}
|
|
161378
|
-
|
|
161379
161803
|
void BaseStatistics::Merge(const BaseStatistics &other) {
|
|
161380
161804
|
D_ASSERT(type == other.type);
|
|
161381
161805
|
if (other.validity_stats) {
|
|
@@ -161418,18 +161842,33 @@ unique_ptr<BaseStatistics> BaseStatistics::CreateEmpty(LogicalType type) {
|
|
|
161418
161842
|
}
|
|
161419
161843
|
}
|
|
161420
161844
|
|
|
161421
|
-
|
|
161422
|
-
|
|
161423
|
-
|
|
161845
|
+
unique_ptr<BaseStatistics> BaseStatistics::Copy() const {
|
|
161846
|
+
auto statistics = make_unique<BaseStatistics>(type);
|
|
161847
|
+
if (validity_stats) {
|
|
161848
|
+
statistics->validity_stats = validity_stats->Copy();
|
|
161849
|
+
}
|
|
161850
|
+
return statistics;
|
|
161851
|
+
}
|
|
161852
|
+
|
|
161853
|
+
void BaseStatistics::Serialize(Serializer &serializer) const {
|
|
161854
|
+
FieldWriter writer(serializer);
|
|
161855
|
+
writer.WriteField<bool>(CanHaveNull());
|
|
161856
|
+
writer.WriteField<bool>(CanHaveNoNull());
|
|
161857
|
+
Serialize(writer);
|
|
161858
|
+
writer.Finalize();
|
|
161859
|
+
}
|
|
161860
|
+
|
|
161861
|
+
void BaseStatistics::Serialize(FieldWriter &writer) const {
|
|
161424
161862
|
}
|
|
161425
161863
|
|
|
161426
161864
|
unique_ptr<BaseStatistics> BaseStatistics::Deserialize(Deserializer &source, LogicalType type) {
|
|
161427
|
-
|
|
161428
|
-
bool
|
|
161865
|
+
FieldReader reader(source);
|
|
161866
|
+
bool can_have_null = reader.ReadRequired<bool>();
|
|
161867
|
+
bool can_have_no_null = reader.ReadRequired<bool>();
|
|
161429
161868
|
unique_ptr<BaseStatistics> result;
|
|
161430
161869
|
switch (type.InternalType()) {
|
|
161431
161870
|
case PhysicalType::BIT:
|
|
161432
|
-
return ValidityStatistics::Deserialize(
|
|
161871
|
+
return ValidityStatistics::Deserialize(reader);
|
|
161433
161872
|
case PhysicalType::BOOL:
|
|
161434
161873
|
case PhysicalType::INT8:
|
|
161435
161874
|
case PhysicalType::INT16:
|
|
@@ -161442,16 +161881,16 @@ unique_ptr<BaseStatistics> BaseStatistics::Deserialize(Deserializer &source, Log
|
|
|
161442
161881
|
case PhysicalType::INT128:
|
|
161443
161882
|
case PhysicalType::FLOAT:
|
|
161444
161883
|
case PhysicalType::DOUBLE:
|
|
161445
|
-
result = NumericStatistics::Deserialize(
|
|
161884
|
+
result = NumericStatistics::Deserialize(reader, move(type));
|
|
161446
161885
|
break;
|
|
161447
161886
|
case PhysicalType::VARCHAR:
|
|
161448
|
-
result = StringStatistics::Deserialize(
|
|
161887
|
+
result = StringStatistics::Deserialize(reader, move(type));
|
|
161449
161888
|
break;
|
|
161450
161889
|
case PhysicalType::STRUCT:
|
|
161451
|
-
result = StructStatistics::Deserialize(
|
|
161890
|
+
result = StructStatistics::Deserialize(reader, move(type));
|
|
161452
161891
|
break;
|
|
161453
161892
|
case PhysicalType::LIST:
|
|
161454
|
-
result = ListStatistics::Deserialize(
|
|
161893
|
+
result = ListStatistics::Deserialize(reader, move(type));
|
|
161455
161894
|
break;
|
|
161456
161895
|
case PhysicalType::INTERVAL:
|
|
161457
161896
|
result = make_unique<BaseStatistics>(move(type));
|
|
@@ -161463,18 +161902,18 @@ unique_ptr<BaseStatistics> BaseStatistics::Deserialize(Deserializer &source, Log
|
|
|
161463
161902
|
return result;
|
|
161464
161903
|
}
|
|
161465
161904
|
|
|
161466
|
-
string BaseStatistics::ToString() {
|
|
161905
|
+
string BaseStatistics::ToString() const {
|
|
161467
161906
|
return StringUtil::Format("Base Statistics %s", validity_stats ? validity_stats->ToString() : "[]");
|
|
161468
161907
|
}
|
|
161469
161908
|
|
|
161470
|
-
void BaseStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) {
|
|
161909
|
+
void BaseStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) const {
|
|
161471
161910
|
D_ASSERT(vector.GetType() == this->type);
|
|
161472
161911
|
if (validity_stats) {
|
|
161473
161912
|
validity_stats->Verify(vector, sel, count);
|
|
161474
161913
|
}
|
|
161475
161914
|
}
|
|
161476
161915
|
|
|
161477
|
-
void BaseStatistics::Verify(Vector &vector, idx_t count) {
|
|
161916
|
+
void BaseStatistics::Verify(Vector &vector, idx_t count) const {
|
|
161478
161917
|
SelectionVector owned_sel;
|
|
161479
161918
|
auto sel = FlatVector::IncrementalSelectionVector(count, owned_sel);
|
|
161480
161919
|
Verify(vector, *sel, count);
|
|
@@ -161484,6 +161923,7 @@ void BaseStatistics::Verify(Vector &vector, idx_t count) {
|
|
|
161484
161923
|
|
|
161485
161924
|
|
|
161486
161925
|
|
|
161926
|
+
|
|
161487
161927
|
namespace duckdb {
|
|
161488
161928
|
|
|
161489
161929
|
ListStatistics::ListStatistics(LogicalType type_p) : BaseStatistics(move(type_p)) {
|
|
@@ -161506,32 +161946,32 @@ void ListStatistics::Merge(const BaseStatistics &other_p) {
|
|
|
161506
161946
|
}
|
|
161507
161947
|
|
|
161508
161948
|
// LCOV_EXCL_START
|
|
161509
|
-
FilterPropagateResult ListStatistics::CheckZonemap(ExpressionType comparison_type, const Value &constant) {
|
|
161949
|
+
FilterPropagateResult ListStatistics::CheckZonemap(ExpressionType comparison_type, const Value &constant) const {
|
|
161510
161950
|
throw InternalException("List zonemaps are not supported yet");
|
|
161511
161951
|
}
|
|
161512
161952
|
// LCOV_EXCL_STOP
|
|
161513
161953
|
|
|
161514
|
-
unique_ptr<BaseStatistics> ListStatistics::Copy() {
|
|
161954
|
+
unique_ptr<BaseStatistics> ListStatistics::Copy() const {
|
|
161515
161955
|
auto copy = make_unique<ListStatistics>(type);
|
|
161516
161956
|
copy->validity_stats = validity_stats ? validity_stats->Copy() : nullptr;
|
|
161517
161957
|
copy->child_stats = child_stats ? child_stats->Copy() : nullptr;
|
|
161518
161958
|
return move(copy);
|
|
161519
161959
|
}
|
|
161520
161960
|
|
|
161521
|
-
void ListStatistics::Serialize(
|
|
161522
|
-
|
|
161523
|
-
child_stats->Serialize(serializer);
|
|
161961
|
+
void ListStatistics::Serialize(FieldWriter &writer) const {
|
|
161962
|
+
writer.WriteSerializable(*child_stats);
|
|
161524
161963
|
}
|
|
161525
161964
|
|
|
161526
|
-
unique_ptr<BaseStatistics> ListStatistics::Deserialize(
|
|
161965
|
+
unique_ptr<BaseStatistics> ListStatistics::Deserialize(FieldReader &reader, LogicalType type) {
|
|
161527
161966
|
D_ASSERT(type.InternalType() == PhysicalType::LIST);
|
|
161528
161967
|
auto result = make_unique<ListStatistics>(move(type));
|
|
161529
161968
|
auto &child_type = ListType::GetChildType(result->type);
|
|
161969
|
+
auto &source = reader.GetSource();
|
|
161530
161970
|
result->child_stats = BaseStatistics::Deserialize(source, child_type);
|
|
161531
161971
|
return move(result);
|
|
161532
161972
|
}
|
|
161533
161973
|
|
|
161534
|
-
string ListStatistics::ToString() {
|
|
161974
|
+
string ListStatistics::ToString() const {
|
|
161535
161975
|
string result;
|
|
161536
161976
|
result += " [";
|
|
161537
161977
|
result += child_stats ? child_stats->ToString() : "No Stats";
|
|
@@ -161540,7 +161980,7 @@ string ListStatistics::ToString() {
|
|
|
161540
161980
|
return result;
|
|
161541
161981
|
}
|
|
161542
161982
|
|
|
161543
|
-
void ListStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) {
|
|
161983
|
+
void ListStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) const {
|
|
161544
161984
|
BaseStatistics::Verify(vector, sel, count);
|
|
161545
161985
|
|
|
161546
161986
|
if (child_stats) {
|
|
@@ -161582,6 +162022,7 @@ void ListStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t co
|
|
|
161582
162022
|
|
|
161583
162023
|
|
|
161584
162024
|
|
|
162025
|
+
|
|
161585
162026
|
namespace duckdb {
|
|
161586
162027
|
|
|
161587
162028
|
template <>
|
|
@@ -161617,7 +162058,7 @@ void NumericStatistics::Merge(const BaseStatistics &other_p) {
|
|
|
161617
162058
|
}
|
|
161618
162059
|
}
|
|
161619
162060
|
|
|
161620
|
-
FilterPropagateResult NumericStatistics::CheckZonemap(ExpressionType comparison_type, const Value &constant) {
|
|
162061
|
+
FilterPropagateResult NumericStatistics::CheckZonemap(ExpressionType comparison_type, const Value &constant) const {
|
|
161621
162062
|
if (constant.IsNull()) {
|
|
161622
162063
|
return FilterPropagateResult::FILTER_ALWAYS_FALSE;
|
|
161623
162064
|
}
|
|
@@ -161690,7 +162131,7 @@ FilterPropagateResult NumericStatistics::CheckZonemap(ExpressionType comparison_
|
|
|
161690
162131
|
}
|
|
161691
162132
|
}
|
|
161692
162133
|
|
|
161693
|
-
unique_ptr<BaseStatistics> NumericStatistics::Copy() {
|
|
162134
|
+
unique_ptr<BaseStatistics> NumericStatistics::Copy() const {
|
|
161694
162135
|
auto stats = make_unique<NumericStatistics>(type, min, max);
|
|
161695
162136
|
if (validity_stats) {
|
|
161696
162137
|
stats->validity_stats = validity_stats->Copy();
|
|
@@ -161698,29 +162139,28 @@ unique_ptr<BaseStatistics> NumericStatistics::Copy() {
|
|
|
161698
162139
|
return move(stats);
|
|
161699
162140
|
}
|
|
161700
162141
|
|
|
161701
|
-
bool NumericStatistics::IsConstant() {
|
|
162142
|
+
bool NumericStatistics::IsConstant() const {
|
|
161702
162143
|
return max <= min;
|
|
161703
162144
|
}
|
|
161704
162145
|
|
|
161705
|
-
void NumericStatistics::Serialize(
|
|
161706
|
-
|
|
161707
|
-
|
|
161708
|
-
max.Serialize(serializer);
|
|
162146
|
+
void NumericStatistics::Serialize(FieldWriter &writer) const {
|
|
162147
|
+
writer.WriteSerializable(min);
|
|
162148
|
+
writer.WriteSerializable(max);
|
|
161709
162149
|
}
|
|
161710
162150
|
|
|
161711
|
-
unique_ptr<BaseStatistics> NumericStatistics::Deserialize(
|
|
161712
|
-
auto min = Value
|
|
161713
|
-
auto max = Value
|
|
162151
|
+
unique_ptr<BaseStatistics> NumericStatistics::Deserialize(FieldReader &reader, LogicalType type) {
|
|
162152
|
+
auto min = reader.ReadRequiredSerializable<Value, Value>();
|
|
162153
|
+
auto max = reader.ReadRequiredSerializable<Value, Value>();
|
|
161714
162154
|
return make_unique_base<BaseStatistics, NumericStatistics>(move(type), min, max);
|
|
161715
162155
|
}
|
|
161716
162156
|
|
|
161717
|
-
string NumericStatistics::ToString() {
|
|
162157
|
+
string NumericStatistics::ToString() const {
|
|
161718
162158
|
return StringUtil::Format("[Min: %s, Max: %s]%s", min.ToString(), max.ToString(),
|
|
161719
162159
|
validity_stats ? validity_stats->ToString() : "");
|
|
161720
162160
|
}
|
|
161721
162161
|
|
|
161722
162162
|
template <class T>
|
|
161723
|
-
void NumericStatistics::TemplatedVerify(Vector &vector, const SelectionVector &sel, idx_t count) {
|
|
162163
|
+
void NumericStatistics::TemplatedVerify(Vector &vector, const SelectionVector &sel, idx_t count) const {
|
|
161724
162164
|
VectorData vdata;
|
|
161725
162165
|
vector.Orrify(count, vdata);
|
|
161726
162166
|
|
|
@@ -161742,7 +162182,7 @@ void NumericStatistics::TemplatedVerify(Vector &vector, const SelectionVector &s
|
|
|
161742
162182
|
}
|
|
161743
162183
|
}
|
|
161744
162184
|
|
|
161745
|
-
void NumericStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) {
|
|
162185
|
+
void NumericStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) const {
|
|
161746
162186
|
BaseStatistics::Verify(vector, sel, count);
|
|
161747
162187
|
|
|
161748
162188
|
switch (type.InternalType()) {
|
|
@@ -161831,7 +162271,7 @@ StringStatistics::StringStatistics(LogicalType type_p) : BaseStatistics(move(typ
|
|
|
161831
162271
|
validity_stats = make_unique<ValidityStatistics>(false);
|
|
161832
162272
|
}
|
|
161833
162273
|
|
|
161834
|
-
unique_ptr<BaseStatistics> StringStatistics::Copy() {
|
|
162274
|
+
unique_ptr<BaseStatistics> StringStatistics::Copy() const {
|
|
161835
162275
|
auto stats = make_unique<StringStatistics>(type);
|
|
161836
162276
|
memcpy(stats->min, min, MAX_STRING_MINMAX_SIZE);
|
|
161837
162277
|
memcpy(stats->max, max, MAX_STRING_MINMAX_SIZE);
|
|
@@ -161843,22 +162283,21 @@ unique_ptr<BaseStatistics> StringStatistics::Copy() {
|
|
|
161843
162283
|
return move(stats);
|
|
161844
162284
|
}
|
|
161845
162285
|
|
|
161846
|
-
void StringStatistics::Serialize(
|
|
161847
|
-
|
|
161848
|
-
|
|
161849
|
-
|
|
161850
|
-
|
|
161851
|
-
|
|
161852
|
-
serializer.Write<bool>(has_overflow_strings);
|
|
162286
|
+
void StringStatistics::Serialize(FieldWriter &writer) const {
|
|
162287
|
+
writer.WriteBlob(min, MAX_STRING_MINMAX_SIZE);
|
|
162288
|
+
writer.WriteBlob(max, MAX_STRING_MINMAX_SIZE);
|
|
162289
|
+
writer.WriteField<bool>(has_unicode);
|
|
162290
|
+
writer.WriteField<uint32_t>(max_string_length);
|
|
162291
|
+
writer.WriteField<bool>(has_overflow_strings);
|
|
161853
162292
|
}
|
|
161854
162293
|
|
|
161855
|
-
unique_ptr<BaseStatistics> StringStatistics::Deserialize(
|
|
162294
|
+
unique_ptr<BaseStatistics> StringStatistics::Deserialize(FieldReader &reader, LogicalType type) {
|
|
161856
162295
|
auto stats = make_unique<StringStatistics>(move(type));
|
|
161857
|
-
|
|
161858
|
-
|
|
161859
|
-
stats->has_unicode =
|
|
161860
|
-
stats->max_string_length =
|
|
161861
|
-
stats->has_overflow_strings =
|
|
162296
|
+
reader.ReadBlob(stats->min, MAX_STRING_MINMAX_SIZE);
|
|
162297
|
+
reader.ReadBlob(stats->max, MAX_STRING_MINMAX_SIZE);
|
|
162298
|
+
stats->has_unicode = reader.ReadRequired<bool>();
|
|
162299
|
+
stats->max_string_length = reader.ReadRequired<uint32_t>();
|
|
162300
|
+
stats->has_overflow_strings = reader.ReadRequired<bool>();
|
|
161862
162301
|
return move(stats);
|
|
161863
162302
|
}
|
|
161864
162303
|
|
|
@@ -161926,7 +162365,7 @@ void StringStatistics::Merge(const BaseStatistics &other_p) {
|
|
|
161926
162365
|
has_overflow_strings = has_overflow_strings || other.has_overflow_strings;
|
|
161927
162366
|
}
|
|
161928
162367
|
|
|
161929
|
-
FilterPropagateResult StringStatistics::CheckZonemap(ExpressionType comparison_type, const string &constant) {
|
|
162368
|
+
FilterPropagateResult StringStatistics::CheckZonemap(ExpressionType comparison_type, const string &constant) const {
|
|
161930
162369
|
auto data = (const_data_ptr_t)constant.c_str();
|
|
161931
162370
|
auto size = constant.size();
|
|
161932
162371
|
|
|
@@ -161964,7 +162403,7 @@ FilterPropagateResult StringStatistics::CheckZonemap(ExpressionType comparison_t
|
|
|
161964
162403
|
}
|
|
161965
162404
|
}
|
|
161966
162405
|
|
|
161967
|
-
static idx_t GetValidMinMaxSubstring(
|
|
162406
|
+
static idx_t GetValidMinMaxSubstring(const_data_ptr_t data) {
|
|
161968
162407
|
for (idx_t i = 0; i < StringStatistics::MAX_STRING_MINMAX_SIZE; i++) {
|
|
161969
162408
|
if (data[i] == '\0') {
|
|
161970
162409
|
return i;
|
|
@@ -161976,7 +162415,7 @@ static idx_t GetValidMinMaxSubstring(data_ptr_t data) {
|
|
|
161976
162415
|
return StringStatistics::MAX_STRING_MINMAX_SIZE;
|
|
161977
162416
|
}
|
|
161978
162417
|
|
|
161979
|
-
string StringStatistics::ToString() {
|
|
162418
|
+
string StringStatistics::ToString() const {
|
|
161980
162419
|
idx_t min_len = GetValidMinMaxSubstring(min);
|
|
161981
162420
|
idx_t max_len = GetValidMinMaxSubstring(max);
|
|
161982
162421
|
return StringUtil::Format("[Min: %s, Max: %s, Has Unicode: %s, Max String Length: %lld]%s",
|
|
@@ -161985,7 +162424,7 @@ string StringStatistics::ToString() {
|
|
|
161985
162424
|
validity_stats ? validity_stats->ToString() : "");
|
|
161986
162425
|
}
|
|
161987
162426
|
|
|
161988
|
-
void StringStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) {
|
|
162427
|
+
void StringStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) const {
|
|
161989
162428
|
BaseStatistics::Verify(vector, sel, count);
|
|
161990
162429
|
|
|
161991
162430
|
string_t min_string((const char *)min, MAX_STRING_MINMAX_SIZE);
|
|
@@ -162064,12 +162503,12 @@ void StructStatistics::Merge(const BaseStatistics &other_p) {
|
|
|
162064
162503
|
}
|
|
162065
162504
|
|
|
162066
162505
|
// LCOV_EXCL_START
|
|
162067
|
-
FilterPropagateResult StructStatistics::CheckZonemap(ExpressionType comparison_type, const Value &constant) {
|
|
162506
|
+
FilterPropagateResult StructStatistics::CheckZonemap(ExpressionType comparison_type, const Value &constant) const {
|
|
162068
162507
|
throw InternalException("Struct zonemaps are not supported yet");
|
|
162069
162508
|
}
|
|
162070
162509
|
// LCOV_EXCL_STOP
|
|
162071
162510
|
|
|
162072
|
-
unique_ptr<BaseStatistics> StructStatistics::Copy() {
|
|
162511
|
+
unique_ptr<BaseStatistics> StructStatistics::Copy() const {
|
|
162073
162512
|
auto copy = make_unique<StructStatistics>(type);
|
|
162074
162513
|
if (validity_stats) {
|
|
162075
162514
|
copy->validity_stats = validity_stats->Copy();
|
|
@@ -162080,8 +162519,9 @@ unique_ptr<BaseStatistics> StructStatistics::Copy() {
|
|
|
162080
162519
|
return move(copy);
|
|
162081
162520
|
}
|
|
162082
162521
|
|
|
162083
|
-
void StructStatistics::Serialize(
|
|
162084
|
-
|
|
162522
|
+
void StructStatistics::Serialize(FieldWriter &writer) const {
|
|
162523
|
+
writer.WriteField<uint32_t>(child_stats.size());
|
|
162524
|
+
auto &serializer = writer.GetSerializer();
|
|
162085
162525
|
for (idx_t i = 0; i < child_stats.size(); i++) {
|
|
162086
162526
|
serializer.Write<bool>(child_stats[i] ? true : false);
|
|
162087
162527
|
if (child_stats[i]) {
|
|
@@ -162090,10 +162530,16 @@ void StructStatistics::Serialize(Serializer &serializer) {
|
|
|
162090
162530
|
}
|
|
162091
162531
|
}
|
|
162092
162532
|
|
|
162093
|
-
unique_ptr<BaseStatistics> StructStatistics::Deserialize(
|
|
162533
|
+
unique_ptr<BaseStatistics> StructStatistics::Deserialize(FieldReader &reader, LogicalType type) {
|
|
162094
162534
|
D_ASSERT(type.InternalType() == PhysicalType::STRUCT);
|
|
162095
162535
|
auto result = make_unique<StructStatistics>(move(type));
|
|
162096
162536
|
auto &child_types = StructType::GetChildTypes(result->type);
|
|
162537
|
+
|
|
162538
|
+
auto child_type_count = reader.ReadRequired<uint32_t>();
|
|
162539
|
+
if (child_types.size() != child_type_count) {
|
|
162540
|
+
throw InternalException("Struct stats deserialization failure: child count does not match type count!");
|
|
162541
|
+
}
|
|
162542
|
+
auto &source = reader.GetSource();
|
|
162097
162543
|
for (idx_t i = 0; i < child_types.size(); i++) {
|
|
162098
162544
|
auto has_child = source.Read<bool>();
|
|
162099
162545
|
if (has_child) {
|
|
@@ -162105,7 +162551,7 @@ unique_ptr<BaseStatistics> StructStatistics::Deserialize(Deserializer &source, L
|
|
|
162105
162551
|
return move(result);
|
|
162106
162552
|
}
|
|
162107
162553
|
|
|
162108
|
-
string StructStatistics::ToString() {
|
|
162554
|
+
string StructStatistics::ToString() const {
|
|
162109
162555
|
string result;
|
|
162110
162556
|
result += " {";
|
|
162111
162557
|
auto &child_types = StructType::GetChildTypes(type);
|
|
@@ -162120,7 +162566,7 @@ string StructStatistics::ToString() {
|
|
|
162120
162566
|
return result;
|
|
162121
162567
|
}
|
|
162122
162568
|
|
|
162123
|
-
void StructStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) {
|
|
162569
|
+
void StructStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) const {
|
|
162124
162570
|
BaseStatistics::Verify(vector, sel, count);
|
|
162125
162571
|
|
|
162126
162572
|
auto &child_entries = StructVector::GetEntries(vector);
|
|
@@ -162158,7 +162604,7 @@ unique_ptr<BaseStatistics> ValidityStatistics::Combine(const unique_ptr<BaseStat
|
|
|
162158
162604
|
}
|
|
162159
162605
|
}
|
|
162160
162606
|
|
|
162161
|
-
bool ValidityStatistics::IsConstant() {
|
|
162607
|
+
bool ValidityStatistics::IsConstant() const {
|
|
162162
162608
|
if (!has_null) {
|
|
162163
162609
|
return true;
|
|
162164
162610
|
}
|
|
@@ -162174,23 +162620,22 @@ void ValidityStatistics::Merge(const BaseStatistics &other_p) {
|
|
|
162174
162620
|
has_no_null = has_no_null || other.has_no_null;
|
|
162175
162621
|
}
|
|
162176
162622
|
|
|
162177
|
-
unique_ptr<BaseStatistics> ValidityStatistics::Copy() {
|
|
162623
|
+
unique_ptr<BaseStatistics> ValidityStatistics::Copy() const {
|
|
162178
162624
|
return make_unique<ValidityStatistics>(has_null, has_no_null);
|
|
162179
162625
|
}
|
|
162180
162626
|
|
|
162181
|
-
void ValidityStatistics::Serialize(
|
|
162182
|
-
|
|
162183
|
-
|
|
162184
|
-
serializer.Write<bool>(has_no_null);
|
|
162627
|
+
void ValidityStatistics::Serialize(FieldWriter &writer) const {
|
|
162628
|
+
writer.WriteField<bool>(has_null);
|
|
162629
|
+
writer.WriteField<bool>(has_no_null);
|
|
162185
162630
|
}
|
|
162186
162631
|
|
|
162187
|
-
unique_ptr<BaseStatistics> ValidityStatistics::Deserialize(
|
|
162188
|
-
bool has_null =
|
|
162189
|
-
bool has_no_null =
|
|
162632
|
+
unique_ptr<BaseStatistics> ValidityStatistics::Deserialize(FieldReader &reader) {
|
|
162633
|
+
bool has_null = reader.ReadRequired<bool>();
|
|
162634
|
+
bool has_no_null = reader.ReadRequired<bool>();
|
|
162190
162635
|
return make_unique<ValidityStatistics>(has_null, has_no_null);
|
|
162191
162636
|
}
|
|
162192
162637
|
|
|
162193
|
-
void ValidityStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) {
|
|
162638
|
+
void ValidityStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_t count) const {
|
|
162194
162639
|
if (has_null && has_no_null) {
|
|
162195
162640
|
// nothing to verify
|
|
162196
162641
|
return;
|
|
@@ -162214,7 +162659,7 @@ void ValidityStatistics::Verify(Vector &vector, const SelectionVector &sel, idx_
|
|
|
162214
162659
|
}
|
|
162215
162660
|
}
|
|
162216
162661
|
|
|
162217
|
-
string ValidityStatistics::ToString() {
|
|
162662
|
+
string ValidityStatistics::ToString() const {
|
|
162218
162663
|
return has_null ? "[Has Null: true]" : "[Has Null: false]";
|
|
162219
162664
|
}
|
|
162220
162665
|
|
|
@@ -164673,6 +165118,7 @@ PersistentTableData::~PersistentTableData() {
|
|
|
164673
165118
|
|
|
164674
165119
|
|
|
164675
165120
|
|
|
165121
|
+
|
|
164676
165122
|
namespace duckdb {
|
|
164677
165123
|
|
|
164678
165124
|
constexpr const idx_t RowGroup::ROW_GROUP_VECTOR_COUNT;
|
|
@@ -165390,9 +165836,11 @@ shared_ptr<VersionNode> RowGroup::DeserializeDeletes(Deserializer &source) {
|
|
|
165390
165836
|
return version_info;
|
|
165391
165837
|
}
|
|
165392
165838
|
|
|
165393
|
-
void RowGroup::Serialize(RowGroupPointer &pointer, Serializer &
|
|
165394
|
-
|
|
165395
|
-
|
|
165839
|
+
void RowGroup::Serialize(RowGroupPointer &pointer, Serializer &main_serializer) {
|
|
165840
|
+
FieldWriter writer(main_serializer);
|
|
165841
|
+
writer.WriteField<uint64_t>(pointer.row_start);
|
|
165842
|
+
writer.WriteField<uint64_t>(pointer.tuple_count);
|
|
165843
|
+
auto &serializer = writer.GetSerializer();
|
|
165396
165844
|
for (auto &stats : pointer.statistics) {
|
|
165397
165845
|
stats->Serialize(serializer);
|
|
165398
165846
|
}
|
|
@@ -165401,16 +165849,20 @@ void RowGroup::Serialize(RowGroupPointer &pointer, Serializer &serializer) {
|
|
|
165401
165849
|
serializer.Write<uint64_t>(data_pointer.offset);
|
|
165402
165850
|
}
|
|
165403
165851
|
CheckpointDeletes(pointer.versions.get(), serializer);
|
|
165852
|
+
writer.Finalize();
|
|
165404
165853
|
}
|
|
165405
165854
|
|
|
165406
|
-
RowGroupPointer RowGroup::Deserialize(Deserializer &
|
|
165855
|
+
RowGroupPointer RowGroup::Deserialize(Deserializer &main_source, const vector<ColumnDefinition> &columns) {
|
|
165407
165856
|
RowGroupPointer result;
|
|
165408
|
-
|
|
165409
|
-
|
|
165857
|
+
|
|
165858
|
+
FieldReader reader(main_source);
|
|
165859
|
+
result.row_start = reader.ReadRequired<uint64_t>();
|
|
165860
|
+
result.tuple_count = reader.ReadRequired<uint64_t>();
|
|
165410
165861
|
|
|
165411
165862
|
result.data_pointers.reserve(columns.size());
|
|
165412
165863
|
result.statistics.reserve(columns.size());
|
|
165413
165864
|
|
|
165865
|
+
auto &source = reader.GetSource();
|
|
165414
165866
|
for (idx_t i = 0; i < columns.size(); i++) {
|
|
165415
165867
|
auto stats = BaseStatistics::Deserialize(source, columns[i].type);
|
|
165416
165868
|
result.statistics.push_back(move(stats));
|
|
@@ -165422,6 +165874,8 @@ RowGroupPointer RowGroup::Deserialize(Deserializer &source, const vector<ColumnD
|
|
|
165422
165874
|
result.data_pointers.push_back(pointer);
|
|
165423
165875
|
}
|
|
165424
165876
|
result.versions = DeserializeDeletes(source);
|
|
165877
|
+
|
|
165878
|
+
reader.Finalize();
|
|
165425
165879
|
return result;
|
|
165426
165880
|
}
|
|
165427
165881
|
|
|
@@ -167384,8 +167838,11 @@ bool ValidityColumnData::CheckZonemap(ColumnScanState &state, TableFilter &filte
|
|
|
167384
167838
|
|
|
167385
167839
|
|
|
167386
167840
|
|
|
167841
|
+
|
|
167842
|
+
|
|
167387
167843
|
|
|
167388
167844
|
namespace duckdb {
|
|
167845
|
+
|
|
167389
167846
|
class ReplayState {
|
|
167390
167847
|
public:
|
|
167391
167848
|
ReplayState(DatabaseInstance &db, ClientContext &context, Deserializer &source)
|
|
@@ -167681,18 +168138,13 @@ void ReplayState::ReplayDropSchema() {
|
|
|
167681
168138
|
// Replay Custom Type
|
|
167682
168139
|
//===--------------------------------------------------------------------===//
|
|
167683
168140
|
void ReplayState::ReplayCreateType() {
|
|
167684
|
-
|
|
167685
|
-
|
|
167686
|
-
info.schema = source.Read<string>();
|
|
167687
|
-
info.name = source.Read<string>();
|
|
167688
|
-
info.type = make_unique<LogicalType>(LogicalType::Deserialize(source));
|
|
167689
|
-
|
|
168141
|
+
auto info = TypeCatalogEntry::Deserialize(source);
|
|
167690
168142
|
if (deserialize_only) {
|
|
167691
168143
|
return;
|
|
167692
168144
|
}
|
|
167693
168145
|
|
|
167694
168146
|
auto &catalog = Catalog::GetCatalog(context);
|
|
167695
|
-
catalog.CreateType(context,
|
|
168147
|
+
catalog.CreateType(context, info.get());
|
|
167696
168148
|
}
|
|
167697
168149
|
|
|
167698
168150
|
void ReplayState::ReplayDropType() {
|