72371 {
72372 ExtraTypeInfo::Serialize(serializer);
72373
72374 if (serializer.ShouldSerialize(7)) {
72375 serializer.WritePropertyWithDefault<unique_ptr<ParsedExpression>>(204, "expr", expr);
72376 return;
72377 }
72378
72379
72380 if (expr->type != ExpressionType::TYPE) {
72381 throw SerializationException(
72382 "Cannot serialize non-type type expression when targeting database storage version '%s'",
72383 serializer.GetOptions().serialization_compatibility.duckdb_version);
72384 }
72385
72386 auto &type_expr = expr->Cast<TypeExpression>();
72387 serializer.WritePropertyWithDefault<string>(200, "name", type_expr.GetTypeName());
72388 serializer.WritePropertyWithDefault<string>(201, "catalog", type_expr.GetCatalog());
72389 serializer.WritePropertyWithDefault<string>(202, "schema", type_expr.GetSchema());
72390
72391
72392 vector<Value> user_type_mods;
72393 for (auto ¶m : type_expr.GetChildren()) {
72394 if (param->type != ExpressionType::VALUE_CONSTANT) {
72395 throw SerializationException(
72396 "Cannot serialize non-constant type parameter when targeting serialization version %s",
72397 serializer.GetOptions().serialization_compatibility.duckdb_version);
72398 }
72399
72400 auto &const_expr = param->Cast<ConstantExpression>();
72401 user_type_mods.push_back(const_expr.value);
72402 }
72403
72404 serializer.WritePropertyWithDefault<vector<Value>>(203, "user_type_modifiers", user_type_mods);
72405}