diff --git a/src/duckdb/extension/core_functions/aggregate/holistic/approx_top_k.cpp b/src/duckdb/extension/core_functions/aggregate/holistic/approx_top_k.cpp index 990124038..ab354bb1a 100644 --- a/src/duckdb/extension/core_functions/aggregate/holistic/approx_top_k.cpp +++ b/src/duckdb/extension/core_functions/aggregate/holistic/approx_top_k.cpp @@ -538,6 +538,13 @@ void ApproxTopKImportState(AggregateImportInputData &input) { throw InvalidInputException("Invalid approx_top_k state - the state values must be unique"); } val.count = count_data[idx]; + if (val.count == 0) { + throw InvalidInputException("Invalid approx_top_k state - the state values must have a count > 0"); + } + if (value_idx > 0 && val.count > target.values[value_idx - 1].get().count) { + throw InvalidInputException( + "Invalid approx_top_k state - the state values must be ordered by descending count"); + } } for (idx_t filter_idx = 0; filter_idx < filter_entries[i].length; filter_idx++) { target.filter[filter_idx] = filter_data[filter_entries[i].offset + filter_idx]; diff --git a/src/duckdb/extension/core_functions/scalar/array/array_functions.cpp b/src/duckdb/extension/core_functions/scalar/array/array_functions.cpp index d36d30082..db6ba59c5 100644 --- a/src/duckdb/extension/core_functions/scalar/array/array_functions.cpp +++ b/src/duckdb/extension/core_functions/scalar/array/array_functions.cpp @@ -6,7 +6,7 @@ namespace duckdb { -static unique_ptr ArrayGenericBinaryBind(BindScalarFunctionInput &input) { +static void ArrayGenericBinaryResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &context = input.GetClientContext(); auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); @@ -17,7 +17,7 @@ static unique_ptr ArrayGenericBinaryBind(BindScalarFunctionInput & bound_function.GetArguments()[0] = rhs_type; bound_function.GetArguments()[1] = lhs_type; bound_function.SetReturnType(LogicalType::UNKNOWN); - return nullptr; + return; } bound_function.GetArguments()[0] = lhs_type.IsUnknown() ? rhs_type : lhs_type; @@ -56,8 +56,6 @@ static unique_ptr ArrayGenericBinaryBind(BindScalarFunctionInput & // The important part is just that we resolve the size of the input arrays bound_function.GetArguments()[0] = LogicalType::ARRAY(common_type, lhs_size); bound_function.GetArguments()[1] = LogicalType::ARRAY(common_type, rhs_size); - - return nullptr; } //------------------------------------------------------------------------------ @@ -255,7 +253,8 @@ static scalar_function_t GetArrayFoldFunction(const LogicalType &type) { template static void AddArrayFoldFunction(ScalarFunctionSet &set, const LogicalType &type) { - ScalarFunction func({}, type, GetArrayFoldFunction(type), ArrayGenericBinaryBind, ArrayGenericFoldStats); + ScalarFunction func({}, type, GetArrayFoldFunction(type), nullptr, ArrayGenericFoldStats); + func.SetResolveTypesCallback(ArrayGenericBinaryResolveTypes); auto array = LogicalType::ARRAY(type, optional_idx()); func.SetFallible(); diff --git a/src/duckdb/extension/core_functions/scalar/array/array_value.cpp b/src/duckdb/extension/core_functions/scalar/array/array_value.cpp index 2fdec1d1c..91105869d 100644 --- a/src/duckdb/extension/core_functions/scalar/array/array_value.cpp +++ b/src/duckdb/extension/core_functions/scalar/array/array_value.cpp @@ -45,7 +45,7 @@ void ArrayValueFunction(DataChunk &args, ExpressionState &state, Vector &result) result.Verify(); } -unique_ptr ArrayValueBind(BindScalarFunctionInput &input) { +void ArrayValueResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &context = input.GetClientContext(); auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); @@ -72,7 +72,6 @@ unique_ptr ArrayValueBind(BindScalarFunctionInput &input) { } bound_function.SetReturnType(LogicalType::ARRAY(child_type, arguments.size())); - return make_uniq(bound_function.GetReturnType()); } unique_ptr ArrayValueStats(ClientContext &context, FunctionStatisticsInput &input) { @@ -91,7 +90,9 @@ unique_ptr ArrayValueStats(ClientContext &context, FunctionStati ScalarFunction ArrayValueFun::GetFunction() { // the arguments and return types are actually set in the binder function - ScalarFunction fun("array_value", {}, LogicalTypeId::ARRAY, ArrayValueFunction, ArrayValueBind, ArrayValueStats); + ScalarFunction fun("array_value", {}, LogicalTypeId::ARRAY, ArrayValueFunction, VariableReturnBindData::Bind, + ArrayValueStats); + fun.SetResolveTypesCallback(ArrayValueResolveTypes); fun.GetSignature().AddArgs("args", LogicalType::ANY); fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); return fun; diff --git a/src/duckdb/extension/core_functions/scalar/debug/index_key.cpp b/src/duckdb/extension/core_functions/scalar/debug/index_key.cpp index 278f27119..e85e190f2 100644 --- a/src/duckdb/extension/core_functions/scalar/debug/index_key.cpp +++ b/src/duckdb/extension/core_functions/scalar/debug/index_key.cpp @@ -115,31 +115,42 @@ struct IndexKeyBindData : public FunctionData { vector key_types; }; -static unique_ptr IndexKeyBind(BindScalarFunctionInput &input) { - auto &context = input.GetClientContext(); - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); +// index_key resolves index metadata during binding. +// Register the owning catalog so cached prepared statements rebind after catalog changes. +static void RegisterIndexKeyRead(BindScalarFunctionInput &input, TableCatalogEntry &table_entry) { + if (input.HasBinder()) { + auto &binder = input.GetBinder(); + binder.GetStatementProperties().RegisterDBRead(table_entry.ParentCatalog(), input.GetClientContext()); + } +} + +static void RegisterIndexKeyRead(ResolveScalarFunctionTypesInput &input, TableCatalogEntry &table_entry) { +} + +//! Called from both resolve_types and bind - the key types and the bind data both come from the index +template +static unique_ptr IndexKeyBind(INPUT &input) { + ClientContext &context = input.GetClientContext(); + BoundScalarFunction &bound_function = input.GetBoundFunction(); + const vector> &arguments = input.GetArguments(); if (arguments.size() < INDEX_KEY_FIXED_ARGS) { throw BinderException("index_key: requires at least two arguments - path (STRUCT), index_name"); } - auto path = EvaluateTableDescription(input.GetConstant(0)); - auto index_name = GetStringArgument(input.GetConstant(1), "index_name"); + const Value path_value = input.GetConstant(0); + const Value index_name_value = input.GetConstant(1); + auto path = EvaluateTableDescription(path_value); + auto index_name = GetStringArgument(index_name_value, "index_name"); auto qualified_table = path.qualified_name.ToString(QualifiedNameToStringMode::HIDE_DEFAULT_SCHEMA); auto &table_entry = Catalog::GetEntry(context, path.qualified_name); - if (!table_entry.IsDuckTable()) { + auto duck_table = table_entry.TryGetDuckTableEntry(); + if (!duck_table) { throw BinderException("index_key: table '%s' is not a DuckDB table", qualified_table); } - // index_key resolves index metadata during binding. - // Register the owning catalog so cached prepared statements rebind after catalog changes. - if (input.HasBinder()) { - auto &binder = input.GetBinder(); - binder.GetStatementProperties().RegisterDBRead(table_entry.ParentCatalog(), context); - } - auto &duck_table = table_entry.Cast(); - auto &data_table = duck_table.GetStorage(); + RegisterIndexKeyRead(input, table_entry); + auto &data_table = duck_table->GetStorage(); auto &data_table_info = *data_table.GetDataTableInfo(); // Note: It may come up in testing that we don't want to force binding here, e.g. if the test should explicitly @@ -180,6 +191,10 @@ static unique_ptr IndexKeyBind(BindScalarFunctionInput &input) { return make_uniq(index_entry, std::move(key_types)); } +static void IndexKeyResolveTypes(ResolveScalarFunctionTypesInput &input) { + IndexKeyBind(input); +} + static void IndexKeyFunction(DataChunk &args, ExpressionState &state, Vector &result) { auto &func_expr = state.expr.Cast(); auto &bind_data = func_expr.BindInfo()->Cast(); @@ -216,9 +231,10 @@ static void IndexKeyFunction(DataChunk &args, ExpressionState &state, Vector &re } // namespace ScalarFunction IndexKeyFun::GetFunction() { - ScalarFunction fun("index_key", {}, LogicalType::BLOB, IndexKeyFunction, IndexKeyBind); + ScalarFunction fun("index_key", {}, LogicalType::BLOB, IndexKeyFunction, IndexKeyBind); fun.GetSignature().AddParameter("path", LogicalTypeId::STRUCT).AddParameter("name", LogicalType::VARCHAR); fun.GetSignature().AddArgs("args", LogicalTypeId::ANY); + fun.SetResolveTypesCallback(IndexKeyResolveTypes); return fun; } diff --git a/src/duckdb/extension/core_functions/scalar/generic/binning.cpp b/src/duckdb/extension/core_functions/scalar/generic/binning.cpp index 94d83f5d3..f393f61ef 100644 --- a/src/duckdb/extension/core_functions/scalar/generic/binning.cpp +++ b/src/duckdb/extension/core_functions/scalar/generic/binning.cpp @@ -414,26 +414,25 @@ struct EquiWidthBinsTimestamp { } }; -unique_ptr BindEquiWidthFunction(BindScalarFunctionInput &input) { +void EquiWidthResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); + auto &max_type = input.GetArgumentType(1); // while internally the bins are computed over a unified type // the equi_width_bins function returns the same type as the input MAX LogicalType child_type; - switch (arguments[1]->GetReturnType().id()) { + switch (max_type.id()) { case LogicalTypeId::UNKNOWN: case LogicalTypeId::SQLNULL: - return nullptr; + return; case LogicalTypeId::DECIMAL: // for decimals we promote to double because child_type = LogicalType::DOUBLE; break; default: - child_type = arguments[1]->GetReturnType(); + child_type = max_type; break; } bound_function.SetReturnType(LogicalType::LIST(child_type)); - return nullptr; } template @@ -496,7 +495,8 @@ unique_ptr EquiWidthBinDeserialize(Deserializer &deserializer, Bou static void AddEquiWidthBinFunction(ScalarFunctionSet &functions, const LogicalType &min_max_type, scalar_function_t function) { - ScalarFunction fun({}, LogicalType::LIST(LogicalType::ANY), std::move(function), BindEquiWidthFunction); + ScalarFunction fun({}, LogicalType::LIST(LogicalType::ANY), std::move(function)); + fun.SetResolveTypesCallback(EquiWidthResolveTypes); fun.GetSignature() .AddParameter("min", min_max_type) .AddParameter("max", min_max_type) diff --git a/src/duckdb/extension/core_functions/scalar/generic/least.cpp b/src/duckdb/extension/core_functions/scalar/generic/least.cpp index fbf09908e..00bc99451 100644 --- a/src/duckdb/extension/core_functions/scalar/generic/least.cpp +++ b/src/duckdb/extension/core_functions/scalar/generic/least.cpp @@ -239,15 +239,14 @@ unique_ptr PropagateLeastGreatestStats(ClientContext &context, F } template -unique_ptr BindLeastGreatest(BindScalarFunctionInput &input) { +void LeastGreatestResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &context = input.GetClientContext(); auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - LogicalType child_type = ExpressionBinder::GetExpressionReturnType(*arguments[0]); - for (idx_t i = 1; i < arguments.size(); i++) { - auto arg_type = ExpressionBinder::GetExpressionReturnType(*arguments[i]); + LogicalType child_type = ExpressionBinder::GetExpressionReturnType(input.GetArgument(0)); + for (idx_t i = 1; i < input.GetArgumentCount(); i++) { + auto arg_type = ExpressionBinder::GetExpressionReturnType(input.GetArgument(i)); if (!LogicalType::TryGetMaxLogicalType(context, child_type, arg_type, child_type)) { - throw BinderException(arguments[i]->GetQueryLocation(), + throw BinderException(input.GetArgument(i).GetQueryLocation(), "Cannot combine types of %s and %s - an explicit cast is required", child_type.ToString(), arg_type.ToString()); } @@ -300,14 +299,14 @@ unique_ptr BindLeastGreatest(BindScalarFunctionInput &input) { arg = child_type; } bound_function.SetReturnType(child_type); - return nullptr; } template ScalarFunction GetLeastGreatestFunction() { - ScalarFunction fun({{"arg1", LogicalType::ANY}}, LogicalType::ANY, nullptr, BindLeastGreatest, + ScalarFunction fun({{"arg1", LogicalType::ANY}}, LogicalType::ANY, nullptr, nullptr, PropagateLeastGreatestStats, nullptr, LogicalType::ANY, FunctionStability::CONSISTENT, FunctionNullHandling::SPECIAL_HANDLING); + fun.SetResolveTypesCallback(LeastGreatestResolveTypes); return fun; } diff --git a/src/duckdb/extension/core_functions/scalar/generic/system_functions.cpp b/src/duckdb/extension/core_functions/scalar/generic/system_functions.cpp index b1bf0fa8e..ccb4a19af 100644 --- a/src/duckdb/extension/core_functions/scalar/generic/system_functions.cpp +++ b/src/duckdb/extension/core_functions/scalar/generic/system_functions.cpp @@ -48,12 +48,14 @@ struct CurrentSchemasBindData : public FunctionData { } }; -unique_ptr CurrentSchemasBind(BindScalarFunctionInput &input) { - auto &context = input.GetClientContext(); - auto &arguments = input.GetArguments(); - if (arguments[0]->GetReturnType().id() != LogicalTypeId::BOOLEAN) { +void CurrentSchemasResolveTypes(ResolveScalarFunctionTypesInput &input) { + if (input.GetArgumentType(0).id() != LogicalTypeId::BOOLEAN) { throw BinderException("current_schemas requires a boolean input"); } +} + +unique_ptr CurrentSchemasBind(BindScalarFunctionInput &input) { + auto &context = input.GetClientContext(); Value schema_value = input.GetConstant(0); Value result_val; if (schema_value.IsNull()) { @@ -128,6 +130,7 @@ ScalarFunction CurrentSchemasFun::GetFunction() { auto varchar_list_type = LogicalType::LIST(LogicalType::VARCHAR); ScalarFunction current_schemas({}, varchar_list_type, CurrentSchemasFunction, CurrentSchemasBind); current_schemas.GetSignature().AddParameter("include_implicit", LogicalType::BOOLEAN); + current_schemas.SetResolveTypesCallback(CurrentSchemasResolveTypes); current_schemas.SetStability(FunctionStability::CONSISTENT_WITHIN_QUERY); return current_schemas; } diff --git a/src/duckdb/extension/core_functions/scalar/list/array_slice.cpp b/src/duckdb/extension/core_functions/scalar/list/array_slice.cpp index 8367be8f5..2f4c844a4 100644 --- a/src/duckdb/extension/core_functions/scalar/list/array_slice.cpp +++ b/src/duckdb/extension/core_functions/scalar/list/array_slice.cpp @@ -300,18 +300,18 @@ void ArraySliceFunction(DataChunk &args, ExpressionState &state, Vector &result) } //! An omitted slice bound is parsed as an empty list constructor (see OperatorExpression::EmptySliceBound) -bool CheckIfParamIsEmpty(duckdb::unique_ptr ¶m) { - if (param->GetReturnType().id() != LogicalTypeId::LIST) { +bool CheckIfParamIsEmpty(const Expression ¶m) { + if (param.GetReturnType().id() != LogicalTypeId::LIST) { return false; } - if (param->GetExpressionClass() == ExpressionClass::BOUND_FUNCTION) { - auto &function = param->Cast(); + if (param.GetExpressionClass() == ExpressionClass::BOUND_FUNCTION) { + auto &function = param.Cast(); if (function.Function().GetName() == "list_value" && function.GetChildren().empty()) { return true; } } - if (param->GetExpressionClass() == ExpressionClass::BOUND_CONSTANT) { - auto &value = param->Cast().GetValue(); + if (param.GetExpressionClass() == ExpressionClass::BOUND_CONSTANT) { + auto &value = param.Cast().GetValue(); if (!value.IsNull() && ListValue::GetChildren(value).empty()) { return true; } @@ -320,24 +320,22 @@ bool CheckIfParamIsEmpty(duckdb::unique_ptr ¶m) { throw BinderException("The upper and lower bounds of the slice must be a BIGINT"); } -unique_ptr ArraySliceBind(BindScalarFunctionInput &input) { - auto &context = input.GetClientContext(); +void ArraySliceResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - D_ASSERT(arguments.size() == 3 || arguments.size() == 4); + D_ASSERT(input.GetArgumentCount() == 3 || input.GetArgumentCount() == 4); D_ASSERT(bound_function.GetArguments().size() == 3 || bound_function.GetArguments().size() == 4); - switch (arguments[0]->GetReturnType().id()) { + auto &list_type = input.GetArgumentType(0); + switch (list_type.id()) { case LogicalTypeId::ARRAY: { // Cast to list - auto child_type = ArrayType::GetChildType(arguments[0]->GetReturnType()); - auto target_type = LogicalType::LIST(child_type); - arguments[0] = BoundCastExpression::AddCastToType(context, std::move(arguments[0]), target_type); - bound_function.SetReturnType(arguments[0]->GetReturnType()); + auto target_type = LogicalType::LIST(ArrayType::GetChildType(list_type)); + bound_function.GetArguments()[0] = target_type; + bound_function.SetReturnType(target_type); } break; case LogicalTypeId::LIST: // The result is the same type - bound_function.SetReturnType(arguments[0]->GetReturnType()); + bound_function.SetReturnType(list_type); break; case LogicalTypeId::BLOB: case LogicalTypeId::VARCHAR: @@ -347,15 +345,15 @@ unique_ptr ArraySliceBind(BindScalarFunctionInput &input) { "Slice with steps has not been implemented for string types, you can consider rewriting your query as " "follows:\n SELECT array_to_string((str_split(string, '')[begin:end:step], '');"); } - if (arguments[0]->GetReturnType().IsJSONType()) { + if (list_type.IsJSONType()) { // This is needed to avoid producing invalid JSON bound_function.GetArguments()[0] = LogicalType::VARCHAR; bound_function.SetReturnType(LogicalType::VARCHAR); } else { - bound_function.SetReturnType(arguments[0]->GetReturnType()); + bound_function.SetReturnType(list_type); } for (idx_t i = 1; i < 3; i++) { - if (arguments[i]->GetReturnType().id() != LogicalTypeId::LIST) { + if (input.GetArgumentType(i).id() != LogicalTypeId::LIST) { bound_function.GetArguments()[i] = LogicalType::BIGINT; } } @@ -369,15 +367,19 @@ unique_ptr ArraySliceBind(BindScalarFunctionInput &input) { throw BinderException("ARRAY_SLICE can only operate on LISTs and VARCHARs"); } - bool begin_is_empty = CheckIfParamIsEmpty(arguments[1]); - if (!begin_is_empty) { - bound_function.GetArguments()[1] = LogicalType::BIGINT; - } - bool end_is_empty = CheckIfParamIsEmpty(arguments[2]); - if (!end_is_empty) { - bound_function.GetArguments()[2] = LogicalType::BIGINT; + // empty bounds keep their (empty list) type - the other bounds are cast to BIGINT + for (idx_t i = 1; i < 3; i++) { + if (!CheckIfParamIsEmpty(input.GetArgument(i))) { + bound_function.GetArguments()[i] = LogicalType::BIGINT; + } } +} +unique_ptr ArraySliceBind(BindScalarFunctionInput &input) { + auto &bound_function = input.GetBoundFunction(); + auto &arguments = input.GetArguments(); + bool begin_is_empty = arguments[1]->GetReturnType().id() == LogicalTypeId::LIST; + bool end_is_empty = arguments[2]->GetReturnType().id() == LogicalTypeId::LIST; return make_uniq(bound_function.GetReturnType(), begin_is_empty, end_is_empty); } @@ -462,6 +464,7 @@ ScalarFunctionSet ListSliceFun::GetFunctions() { .AddParameter("list", LogicalType::ANY) .AddParameter("begin", LogicalType::ANY) .AddParameter("end", LogicalType::ANY); + fun.SetResolveTypesCallback(ArraySliceResolveTypes); fun.SetStatisticsCallback(ArraySlicePropagateStats); fun.SetUnbindCallback(ArraySliceUnbind); fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); diff --git a/src/duckdb/extension/core_functions/scalar/list/list_aggregates.cpp b/src/duckdb/extension/core_functions/scalar/list/list_aggregates.cpp index 7a9d8b150..f32f76e5a 100644 --- a/src/duckdb/extension/core_functions/scalar/list/list_aggregates.cpp +++ b/src/duckdb/extension/core_functions/scalar/list/list_aggregates.cpp @@ -401,121 +401,141 @@ void ListUniqueFunction(DataChunk &args, ExpressionState &state, Vector &result) ListAggregatesFunction(args, state, result); } -template -unique_ptr ListAggregatesBindFunction(ClientContext &context, BoundScalarFunction &bound_function, - const LogicalType &list_child_type, - const AggregateFunction &aggr_function, - vector> &arguments) { - // create the child expression and its type - vector> children; - auto expr = make_uniq(Value(list_child_type)); - children.push_back(std::move(expr)); - // push any extra arguments into the list aggregate bind - if (arguments.size() > 2) { - for (idx_t i = 2; i < arguments.size(); i++) { - children.push_back(std::move(arguments[i])); - } - arguments.resize(2); - } +AggregateFunctionCatalogEntry &GetListAggregateEntry(ClientContext &context, const string &function_name) { + auto &func = Catalog::GetSystemCatalog(context).GetEntry( + context, QualifiedName(Catalog::GetSystemCatalog(context).GetName(), Identifier::DefaultSchema(), + Identifier(function_name))); + D_ASSERT(func.type == CatalogType::AGGREGATE_FUNCTION_ENTRY); + return func; +} - FunctionBinder function_binder(context); - auto bound_aggr_function = function_binder.BindAggregateFunction(aggr_function, std::move(children)); - bound_function.GetArguments()[0] = LogicalType::LIST(bound_aggr_function->Function().GetArguments()[0]); +//! Binds the aggregate that is applied to the elements of the list +template +unique_ptr BindListAggregate(ClientContext &context, LogicalType child_type, + const string &function_name, + vector> extra_arguments) { + auto &func = GetListAggregateEntry(context, function_name); - if (IS_AGGR) { - bound_function.SetReturnType(bound_aggr_function->Function().GetReturnType()); + // find a matching aggregate function + ErrorData error; + vector types; + types.push_back(child_type); + // push any extra arguments into the type list + for (auto &argument : extra_arguments) { + types.push_back(argument->GetReturnType()); } - // the extra arguments are passed to the aggregate as constant vectors, so they have to be constant - auto &aggr_children = bound_aggr_function->GetChildrenMutable(); - for (idx_t child_idx = 1; child_idx < aggr_children.size(); child_idx++) { - auto &child = aggr_children[child_idx]; - if (!child->IsFoldable()) { - throw InvalidInputException( - "Aggregate function %s is not supported for list_aggr: extra arguments must be constant", - bound_aggr_function->ToString()); - } - child = make_uniq(ExpressionExecutor::EvaluateScalar(context, *child)); + + FunctionBinder function_binder(context); + auto best_function_idx = function_binder.BindFunction(func.name, func.functions, types, error); + if (!best_function_idx.IsValid()) { + throw BinderException("No matching aggregate function\n%s", error.Message()); } - // Preserve folded SQL arguments without evaluating them again. - if (aggr_children.size() + 1 == bound_function.GetLogicalArguments().size()) { - for (idx_t child_idx = 1; child_idx < aggr_children.size(); child_idx++) { - arguments.push_back(aggr_children[child_idx]->Copy()); - } + // create the child expression and its type + vector> children; + children.push_back(make_uniq(Value(child_type))); + for (auto &argument : extra_arguments) { + children.push_back(std::move(argument)); } - return make_uniq(bound_function.GetReturnType(), std::move(bound_aggr_function)); + // found a matching function, bind it as an aggregate + const auto &best_function = *func.functions.GetFunctionByOffset(best_function_idx.GetIndex()); + if (IS_AGGR) { + return function_binder.BindAggregateFunction(best_function, std::move(children)); + } + // create the unordered map histogram function + D_ASSERT(best_function.GetSignature().GetParameterCount() == 1); + auto aggr_function = HistogramFun::GetHistogramUnorderedMap(child_type); + return function_binder.BindAggregateFunction(aggr_function, std::move(children)); } template -unique_ptr ListAggregatesBind(BindScalarFunctionInput &input) { +void ListAggregatesResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &context = input.GetClientContext(); auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - arguments[0] = BoundCastExpression::AddArrayCastToList(context, std::move(arguments[0])); - - if (arguments[0]->GetReturnType().id() == LogicalTypeId::SQLNULL) { - return ListAggregatesBindFailure(bound_function); + auto list_type = input.GetArgumentType(0); + if (list_type.id() == LogicalTypeId::ARRAY) { + list_type = LogicalType::LIST(ArrayType::GetChildType(list_type)); } - bool is_parameter = arguments[0]->GetReturnType().id() == LogicalTypeId::UNKNOWN; - LogicalType child_type; - if (is_parameter) { - child_type = LogicalType::ANY; - } else if (arguments[0]->GetReturnType().id() == LogicalTypeId::LIST || - arguments[0]->GetReturnType().id() == LogicalTypeId::MAP) { - child_type = ListType::GetChildType(arguments[0]->GetReturnType()); - } else { + if (list_type.id() == LogicalTypeId::SQLNULL) { + ListAggregatesBindFailure(bound_function); + return; + } + auto function_name = IS_AGGR ? input.GetConstant(1).ToString() : string("histogram"); + if (list_type.id() == LogicalTypeId::UNKNOWN) { + // verify the aggregate exists, even if we cannot bind it yet + GetListAggregateEntry(context, function_name); + bound_function.GetArguments()[0] = LogicalTypeId::UNKNOWN; + bound_function.SetReturnType(LogicalType::SQLNULL); + return; + } + if (list_type.id() != LogicalTypeId::LIST && list_type.id() != LogicalTypeId::MAP) { // Unreachable throw InvalidInputException("First argument of list aggregate must be a list, map or array"); } - string function_name = "histogram"; - if (IS_AGGR) { // get the name of the aggregate function - function_name = input.GetConstant(1).ToString(); + vector> extra_arguments; + for (idx_t i = 2; i < input.GetArgumentCount(); i++) { + extra_arguments.push_back(input.GetArgument(i).Copy()); } + auto bound_aggr_function = BindListAggregate(context, ListType::GetChildType(list_type), function_name, + std::move(extra_arguments)); - // look up the aggregate function in the catalog - auto &func = Catalog::GetSystemCatalog(context).GetEntry( - context, QualifiedName(Catalog::GetSystemCatalog(context).GetName(), Identifier::DefaultSchema(), - Identifier(function_name))); - D_ASSERT(func.type == CatalogType::AGGREGATE_FUNCTION_ENTRY); + bound_function.GetArguments()[0] = LogicalType::LIST(bound_aggr_function->Function().GetArguments()[0]); + if (IS_AGGR) { + if (bound_aggr_function->Function().GetErrorMode() == FunctionErrors::CAN_THROW_RUNTIME_ERROR) { + // never clear the error mode here - executing the aggregate can throw regardless of how it is declared + bound_function.SetErrorMode(FunctionErrors::CAN_THROW_RUNTIME_ERROR); + } + bound_function.SetReturnType(bound_aggr_function->Function().GetReturnType()); + } +} - if (is_parameter) { - bound_function.GetArguments()[0] = LogicalTypeId::UNKNOWN; - bound_function.SetReturnType(LogicalType::SQLNULL); +template +unique_ptr ListAggregatesBind(BindScalarFunctionInput &input) { + auto &context = input.GetClientContext(); + auto &bound_function = input.GetBoundFunction(); + auto &arguments = input.GetArguments(); + auto list_type_id = arguments[0]->GetReturnType().id(); + if (list_type_id == LogicalTypeId::SQLNULL || list_type_id == LogicalTypeId::UNKNOWN) { + // no bind data, the bind data of this function is always a ListAggregatesBindData return nullptr; } - // find a matching aggregate function - ErrorData error; - vector types; - types.push_back(child_type); - // push any extra arguments into the type list + // the extra arguments are pushed into the list aggregate bind + vector> extra_arguments; for (idx_t i = 2; i < arguments.size(); i++) { - types.push_back(arguments[i]->GetReturnType()); + extra_arguments.push_back(std::move(arguments[i])); } + if (arguments.size() > 2) { + arguments.resize(2); + } + auto function_name = IS_AGGR ? input.GetConstant(1).ToString() : string("histogram"); + auto child_type = ListType::GetChildType(arguments[0]->GetReturnType()); + auto bound_aggr_function = + BindListAggregate(context, child_type, function_name, std::move(extra_arguments)); - FunctionBinder function_binder(context); - auto best_function_idx = function_binder.BindFunction(func.name, func.functions, types, error); - if (!best_function_idx.IsValid()) { - throw BinderException("No matching aggregate function\n%s", error.Message()); + // the extra arguments are passed to the aggregate as constant vectors, so they have to be constant + auto &aggr_children = bound_aggr_function->GetChildrenMutable(); + for (idx_t child_idx = 1; child_idx < aggr_children.size(); child_idx++) { + auto &child = aggr_children[child_idx]; + if (!child->IsFoldable()) { + throw InvalidInputException( + "Aggregate function %s is not supported for list_aggr: extra arguments must be constant", + bound_aggr_function->ToString()); + } + child = make_uniq(ExpressionExecutor::EvaluateScalar(context, *child)); } - // found a matching function, bind it as an aggregate - const auto &best_function = *func.functions.GetFunctionByOffset(best_function_idx.GetIndex()); - if (IS_AGGR) { - if (best_function.GetErrorMode() == FunctionErrors::CAN_THROW_RUNTIME_ERROR) { - // never clear the error mode here - executing the aggregate can throw regardless of how it is declared - bound_function.SetErrorMode(FunctionErrors::CAN_THROW_RUNTIME_ERROR); + // Preserve folded SQL arguments without evaluating them again. + if (aggr_children.size() + 1 == bound_function.GetLogicalArguments().size()) { + for (idx_t child_idx = 1; child_idx < aggr_children.size(); child_idx++) { + arguments.push_back(aggr_children[child_idx]->Copy()); } - return ListAggregatesBindFunction(context, bound_function, child_type, best_function, arguments); } - // create the unordered map histogram function - D_ASSERT(best_function.GetSignature().GetParameterCount() == 1); - auto aggr_function = HistogramFun::GetHistogramUnorderedMap(child_type); - return ListAggregatesBindFunction(context, bound_function, child_type, aggr_function, arguments); + return make_uniq(bound_function.GetReturnType(), std::move(bound_aggr_function)); } unique_ptr ListAggregateBind(BindScalarFunctionInput &input) { @@ -537,6 +557,7 @@ ScalarFunction ListAggregateFun::GetFunction() { result.SetFallible(); result.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); result.GetSignature().AddArgs("args", LogicalType::ANY); + result.SetResolveTypesCallback(ListAggregatesResolveTypes); result.SetSerializeCallback(ListAggregatesBindData::SerializeFunction); result.SetDeserializeCallback(ListAggregatesBindData::DeserializeFunction); return result; @@ -546,6 +567,7 @@ ScalarFunction ListDistinctFun::GetFunction() { ScalarFunction fun({}, LogicalType::LIST(LogicalType::TEMPLATE("T")), ListDistinctFunction, ListAggregatesBind, nullptr, ListAggregatesInitLocalState); fun.GetSignature().AddParameter("list", LogicalType::LIST(LogicalType::TEMPLATE("T"))); + fun.SetResolveTypesCallback(ListAggregatesResolveTypes); return fun; } @@ -553,6 +575,7 @@ ScalarFunction ListUniqueFun::GetFunction() { ScalarFunction fun({}, LogicalType::UBIGINT, ListUniqueFunction, ListAggregatesBind, nullptr, ListAggregatesInitLocalState); fun.GetSignature().AddParameter("list", LogicalType::LIST(LogicalType::ANY)); + fun.SetResolveTypesCallback(ListAggregatesResolveTypes); return fun; } diff --git a/src/duckdb/extension/core_functions/scalar/list/list_value.cpp b/src/duckdb/extension/core_functions/scalar/list/list_value.cpp index 918e4237f..53256134b 100644 --- a/src/duckdb/extension/core_functions/scalar/list/list_value.cpp +++ b/src/duckdb/extension/core_functions/scalar/list/list_value.cpp @@ -237,7 +237,7 @@ void ListValueFunction(DataChunk &args, ExpressionState &state, Vector &result) ListVector::SetListSize(result, column_count * args.size()); } -unique_ptr UnpivotBind(BindScalarFunctionInput &input) { +void UnpivotResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &context = input.GetClientContext(); auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); @@ -273,7 +273,6 @@ unique_ptr UnpivotBind(BindScalarFunctionInput &input) { function_args.push_back(child_type); } bound_function.SetReturnType(LogicalType::LIST(child_type)); - return make_uniq(bound_function.GetReturnType()); } unique_ptr ListValueStats(ClientContext &context, FunctionStatisticsInput &input) { @@ -292,7 +291,7 @@ unique_ptr ListValueStats(ClientContext &context, FunctionStatis //! The arguments are cast to the child type of the list at execution time - if any of those casts can throw the //! function is fallible -unique_ptr ListValueBind(BindScalarFunctionInput &input) { +void ListValueResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); auto &child_type = ListType::GetChildType(bound_function.GetReturnType()); for (auto &argument : input.GetArguments()) { @@ -302,7 +301,6 @@ unique_ptr ListValueBind(BindScalarFunctionInput &input) { break; } } - return nullptr; } ScalarFunctionSet ListValueFun::GetFunctions() { @@ -314,8 +312,9 @@ ScalarFunctionSet ListValueFun::GetFunctions() { // Overload for 1 + N arguments, which returns a list of the arguments. auto element_type = LogicalType::TEMPLATE("T"); - ScalarFunction value_fun({element_type}, LogicalType::LIST(element_type), ListValueFunction, ListValueBind, + ScalarFunction value_fun({element_type}, LogicalType::LIST(element_type), ListValueFunction, nullptr, ListValueStats); + value_fun.SetResolveTypesCallback(ListValueResolveTypes); value_fun.GetSignature().GetParameter(0).SetName("value"); value_fun.GetSignature().AddArgs("args", element_type); value_fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); @@ -325,7 +324,9 @@ ScalarFunctionSet ListValueFun::GetFunctions() { } ScalarFunction UnpivotListFun::GetFunction() { - ScalarFunction fun("unpivot_list", {}, LogicalTypeId::LIST, ListValueFunction, UnpivotBind, ListValueStats); + ScalarFunction fun("unpivot_list", {}, LogicalTypeId::LIST, ListValueFunction, VariableReturnBindData::Bind, + ListValueStats); + fun.SetResolveTypesCallback(UnpivotResolveTypes); fun.GetSignature().AddArgs("args", LogicalTypeId::ANY); fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); return fun; diff --git a/src/duckdb/extension/core_functions/scalar/map/switch.cpp b/src/duckdb/extension/core_functions/scalar/map/switch.cpp index c11ab8106..c99b606a2 100644 --- a/src/duckdb/extension/core_functions/scalar/map/switch.cpp +++ b/src/duckdb/extension/core_functions/scalar/map/switch.cpp @@ -40,15 +40,19 @@ unique_ptr SwitchBindReturnType(BindScalarFunctionInput &input) { auto &arguments = input.GetArguments(); constexpr idx_t map_index = MAP_INDEX; D_ASSERT(map_index < arguments.size()); - auto &cases = arguments[map_index]; - if (cases->GetExpressionClass() != ExpressionClass::BOUND_FUNCTION) { + // the cases might have been cast to the argument type of the function + reference cases = *arguments[map_index]; + if (BoundCastExpression::IsCast(cases.get())) { + cases = BoundCastExpression::Child(cases.get().Cast()); + } + if (cases.get().GetExpressionClass() != ExpressionClass::BOUND_FUNCTION) { throw BinderException("SWITCH expected a constant map for the cases"); } - auto &func = cases->Cast(); - if (func.Function().GetName() != "map" || !cases->IsFoldable()) { + auto &func = cases.get().Cast(); + if (func.Function().GetName() != "map" || !cases.get().IsFoldable()) { throw BinderException("SWITCH expected a constant map for the cases"); } - auto map_value = ExpressionExecutor::EvaluateScalar(context, *cases); + auto map_value = ExpressionExecutor::EvaluateScalar(context, cases.get()); auto values_type = MapType::ValueType(map_value.type()); return make_uniq(values_type, map_index); } diff --git a/src/duckdb/extension/core_functions/scalar/math/numeric.cpp b/src/duckdb/extension/core_functions/scalar/math/numeric.cpp index fbb116718..ab06b3557 100644 --- a/src/duckdb/extension/core_functions/scalar/math/numeric.cpp +++ b/src/duckdb/extension/core_functions/scalar/math/numeric.cpp @@ -223,10 +223,9 @@ static unique_ptr PropagateAbsStats(ClientContext &context, Func } template -static unique_ptr DecimalUnaryOpBind(BindScalarFunctionInput &input) { +static void DecimalUnaryOpResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - auto decimal_type = arguments[0]->GetReturnType(); + auto &decimal_type = input.GetArgumentType(0); switch (decimal_type.InternalType()) { case PhysicalType::INT16: bound_function.SetFunctionCallback(ScalarFunction::GetScalarUnaryFunction(LogicalTypeId::SMALLINT)); @@ -243,16 +242,18 @@ static unique_ptr DecimalUnaryOpBind(BindScalarFunctionInput &inpu } bound_function.GetArguments()[0] = decimal_type; bound_function.SetReturnType(decimal_type); - return nullptr; } ScalarFunctionSet AbsOperatorFun::GetFunctions() { ScalarFunctionSet abs; for (auto &type : LogicalType::Numeric()) { switch (type.id()) { - case LogicalTypeId::DECIMAL: - abs.AddFunction(NameXArgument(ScalarFunction({}, type, nullptr, DecimalUnaryOpBind), type)); + case LogicalTypeId::DECIMAL: { + ScalarFunction function({}, type, nullptr); + function.SetResolveTypesCallback(DecimalUnaryOpResolveTypes); + abs.AddFunction(NameXArgument(std::move(function), type)); break; + } case LogicalTypeId::TINYINT: case LogicalTypeId::SMALLINT: case LogicalTypeId::INTEGER: @@ -514,11 +515,10 @@ static void GenericRoundFunctionDecimal(DataChunk &input, ExpressionState &state } template -static unique_ptr BindGenericRoundFunctionDecimal(BindScalarFunctionInput &input) { +static void GenericRoundFunctionDecimalResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); // ceil essentially removes the scale - auto &decimal_type = arguments[0]->GetReturnType(); + auto &decimal_type = input.GetArgumentType(0); auto scale = DecimalType::GetScale(decimal_type); auto width = DecimalType::GetWidth(decimal_type); if (scale == 0) { @@ -541,7 +541,6 @@ static unique_ptr BindGenericRoundFunctionDecimal(BindScalarFuncti } bound_function.GetArguments()[0] = decimal_type; bound_function.SetReturnType(LogicalType::DECIMAL(width, 0)); - return nullptr; } namespace { @@ -566,7 +565,7 @@ ScalarFunctionSet CeilFun::GetFunctions() { ScalarFunctionSet ceil; for (auto &type : LogicalType::Numeric()) { scalar_function_t func = nullptr; - bind_scalar_function_t bind_func = nullptr; + resolve_scalar_types_t resolve_func = nullptr; if (type.IsIntegral()) { // no ceil for integral numbers continue; @@ -579,12 +578,14 @@ ScalarFunctionSet CeilFun::GetFunctions() { func = ScalarFunction::UnaryFunction; break; case LogicalTypeId::DECIMAL: - bind_func = BindGenericRoundFunctionDecimal; + resolve_func = GenericRoundFunctionDecimalResolveTypes; break; default: throw InternalException("Unimplemented numeric type for function \"ceil\""); } - ceil.AddFunction(NameXArgument(ScalarFunction({}, type, func, bind_func), type)); + ScalarFunction ceil_function({}, type, func); + ceil_function.SetResolveTypesCallback(resolve_func); + ceil.AddFunction(NameXArgument(std::move(ceil_function), type)); } ceil.SetUnaryArgProperties(ArgProperties().NonDecreasing()); return ceil; @@ -622,7 +623,7 @@ ScalarFunctionSet FloorFun::GetFunctions() { ScalarFunctionSet floor; for (auto &type : LogicalType::Numeric()) { scalar_function_t func = nullptr; - bind_scalar_function_t bind_func = nullptr; + resolve_scalar_types_t resolve_func = nullptr; if (type.IsIntegral()) { // no floor for integral numbers continue; @@ -635,12 +636,14 @@ ScalarFunctionSet FloorFun::GetFunctions() { func = ScalarFunction::UnaryFunction; break; case LogicalTypeId::DECIMAL: - bind_func = BindGenericRoundFunctionDecimal; + resolve_func = GenericRoundFunctionDecimalResolveTypes; break; default: throw InternalException("Unimplemented numeric type for function \"floor\""); } - floor.AddFunction(NameXArgument(ScalarFunction({}, type, func, bind_func), type)); + ScalarFunction floor_function({}, type, func); + floor_function.SetResolveTypesCallback(resolve_func); + floor.AddFunction(NameXArgument(std::move(floor_function), type)); } floor.SetUnaryArgProperties(ArgProperties().NonDecreasing()); return floor; @@ -676,18 +679,15 @@ void GenericRoundPrecisionDecimal(DataChunk &input, ExpressionState &state, Vect OP::template Operation(input, state, result); } -template -unique_ptr BindDecimalRoundPrecision(BindScalarFunctionInput &input) { - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - auto &decimal_type = arguments[0]->GetReturnType(); - auto val = input.GetNonNullConstant(1).DefaultCastAs(LogicalType::INTEGER); +//! Resolves the types and the function of a decimal round with a precision, given the original decimal type +template +unique_ptr ResolveDecimalRoundPrecision(BoundScalarFunction &bound_function, + const LogicalType &decimal_type, int32_t round_value) { // our new precision becomes the round value // e.g. ROUND(DECIMAL(18,3), 1) -> DECIMAL(18,1) // but ONLY if the round value is positive // if it is negative the scale becomes zero // i.e. ROUND(DECIMAL(18,3), -1) -> DECIMAL(18,0) - int32_t round_value = IntegerValue::Get(val); uint8_t target_scale; auto width = DecimalType::GetWidth(decimal_type); auto scale = DecimalType::GetScale(decimal_type); @@ -749,6 +749,22 @@ unique_ptr BindDecimalRoundPrecision(BindScalarFunctionInput &inpu return make_uniq(round_value, width, check_overflow); } +template +void DecimalRoundPrecisionResolveTypes(ResolveScalarFunctionTypesInput &input) { + auto val = input.GetNonNullConstant(1).DefaultCastAs(LogicalType::INTEGER); + ResolveDecimalRoundPrecision(input.GetBoundFunction(), input.GetArgumentType(0), + IntegerValue::Get(val)); +} + +//! The bind data is derived from the type the function was called with, before it was cast +template +unique_ptr BindDecimalRoundPrecision(BindScalarFunctionInput &input) { + auto &bound_function = input.GetBoundFunction(); + auto val = input.GetNonNullConstant(1).DefaultCastAs(LogicalType::INTEGER); + return ResolveDecimalRoundPrecision( + bound_function, bound_function.GetLogicalArguments()[0], IntegerValue::Get(val)); +} + struct TruncOperatorPrecision { template static inline TR Operation(TA input, TB precision) { @@ -855,8 +871,9 @@ ScalarFunctionSet TruncFun::GetFunctions() { for (auto &type : LogicalType::Numeric()) { scalar_function_t trunc_func = nullptr; scalar_function_t trunc_prec_func = nullptr; - bind_scalar_function_t bind_func = nullptr; + resolve_scalar_types_t resolve_func = nullptr; bind_scalar_function_t bind_prec_func = nullptr; + resolve_scalar_types_t resolve_prec_func = nullptr; // Truncation of integers gets generated by some tools (e.g., Tableau/JDBC:Postgres) switch (type.id()) { case LogicalTypeId::FLOAT: @@ -868,9 +885,11 @@ ScalarFunctionSet TruncFun::GetFunctions() { trunc_prec_func = ScalarFunction::BinaryFunction; break; case LogicalTypeId::DECIMAL: - bind_func = BindGenericRoundFunctionDecimal; + resolve_func = GenericRoundFunctionDecimalResolveTypes; bind_prec_func = BindDecimalRoundPrecision; + resolve_prec_func = DecimalRoundPrecisionResolveTypes; break; case LogicalTypeId::TINYINT: trunc_func = ScalarFunction::NopFunction; @@ -915,8 +934,12 @@ ScalarFunctionSet TruncFun::GetFunctions() { default: throw InternalException("Unimplemented numeric type for function \"trunc\""); } - trunc.AddFunction(NameXArgument(ScalarFunction({}, type, trunc_func, bind_func), type)); - trunc.AddFunction(NameXPrecisionArguments(ScalarFunction({}, type, trunc_prec_func, bind_prec_func), type)); + ScalarFunction trunc_function({}, type, trunc_func); + trunc_function.SetResolveTypesCallback(resolve_func); + trunc.AddFunction(NameXArgument(std::move(trunc_function), type)); + ScalarFunction trunc_prec_function({}, type, trunc_prec_func, bind_prec_func); + trunc_prec_function.SetResolveTypesCallback(resolve_prec_func); + trunc.AddFunction(NameXPrecisionArguments(std::move(trunc_prec_function), type)); } trunc.SetUnaryArgProperties(ArgProperties().NonDecreasing()); return trunc; @@ -1126,8 +1149,9 @@ ScalarFunctionSet RoundFun::GetFunctions() { for (auto &type : LogicalType::Numeric()) { scalar_function_t round_prec_func = nullptr; scalar_function_t round_func = nullptr; - bind_scalar_function_t bind_func = nullptr; + resolve_scalar_types_t resolve_func = nullptr; bind_scalar_function_t bind_prec_func = nullptr; + resolve_scalar_types_t resolve_prec_func = nullptr; switch (type.id()) { case LogicalTypeId::FLOAT: round_func = ScalarFunction::UnaryFunction; @@ -1140,10 +1164,13 @@ ScalarFunctionSet RoundFun::GetFunctions() { ScalarFunction::BinaryFunction>; break; case LogicalTypeId::DECIMAL: - bind_func = BindGenericRoundFunctionDecimal; + resolve_func = GenericRoundFunctionDecimalResolveTypes; bind_prec_func = BindDecimalRoundPrecision, DecimalRoundPositivePrecisionOperator, true>; + resolve_prec_func = + DecimalRoundPrecisionResolveTypes, + DecimalRoundPositivePrecisionOperator, true>; break; case LogicalTypeId::TINYINT: round_func = ScalarFunction::NopFunction; @@ -1177,9 +1204,12 @@ ScalarFunctionSet RoundFun::GetFunctions() { } throw InternalException("Unimplemented numeric type for function \"round\""); } - auto round_function = NameXArgument(ScalarFunction({}, type, round_func, bind_func), type); - auto round_prec_function = - NameXPrecisionArguments(ScalarFunction({}, type, round_prec_func, bind_prec_func), type); + ScalarFunction round_unary_function({}, type, round_func); + round_unary_function.SetResolveTypesCallback(resolve_func); + auto round_function = NameXArgument(std::move(round_unary_function), type); + ScalarFunction round_binary_function({}, type, round_prec_func, bind_prec_func); + round_binary_function.SetResolveTypesCallback(resolve_prec_func); + auto round_prec_function = NameXPrecisionArguments(std::move(round_binary_function), type); if (type.id() == LogicalTypeId::DECIMAL) { // rounding a DECIMAL can overflow round_function.SetFallible(); @@ -1203,6 +1233,7 @@ ScalarFunctionSet RoundEvenFun::GetFunctions() { for (auto &type : LogicalType::Numeric()) { scalar_function_t round_prec_func = nullptr; bind_scalar_function_t bind_prec_func = nullptr; + resolve_scalar_types_t resolve_prec_func = nullptr; switch (type.id()) { case LogicalTypeId::FLOAT: round_prec_func = @@ -1215,6 +1246,9 @@ ScalarFunctionSet RoundEvenFun::GetFunctions() { case LogicalTypeId::DECIMAL: bind_prec_func = BindDecimalRoundPrecision, DecimalRoundPositivePrecisionOperator, true>; + resolve_prec_func = + DecimalRoundPrecisionResolveTypes, + DecimalRoundPositivePrecisionOperator, true>; break; case LogicalTypeId::TINYINT: round_prec_func = @@ -1243,8 +1277,9 @@ ScalarFunctionSet RoundEvenFun::GetFunctions() { } throw InternalException("Unimplemented numeric type for function \"round_even\""); } - auto round_even_function = - NameXPrecisionArguments(ScalarFunction({}, type, round_prec_func, bind_prec_func), type); + ScalarFunction round_even_binary_function({}, type, round_prec_func, bind_prec_func); + round_even_binary_function.SetResolveTypesCallback(resolve_prec_func); + auto round_even_function = NameXPrecisionArguments(std::move(round_even_binary_function), type); if (type.id() == LogicalTypeId::DECIMAL) { // rounding a DECIMAL can overflow round_even_function.SetFallible(); diff --git a/src/duckdb/extension/core_functions/scalar/string/printf.cpp b/src/duckdb/extension/core_functions/scalar/string/printf.cpp index 4db8e449c..ac89c8ce0 100644 --- a/src/duckdb/extension/core_functions/scalar/string/printf.cpp +++ b/src/duckdb/extension/core_functions/scalar/string/printf.cpp @@ -23,11 +23,10 @@ struct FMTFormat { } }; -static unique_ptr BindPrintfFunction(BindScalarFunctionInput &input) { +static void PrintfResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - for (idx_t i = 1; i < arguments.size(); i++) { - switch (arguments[i]->GetReturnType().id()) { + for (idx_t i = 1; i < input.GetArgumentCount(); i++) { + switch (input.GetArgumentType(i).id()) { case LogicalTypeId::BOOLEAN: bound_function.GetArguments()[i] = LogicalType::BOOLEAN; break; @@ -70,7 +69,6 @@ static unique_ptr BindPrintfFunction(BindScalarFunctionInput &inpu break; } } - return nullptr; } struct StandardConstructArgument { @@ -184,8 +182,8 @@ static void PrintfFunction(DataChunk &args, ExpressionState &state, Vector &resu ScalarFunction PrintfFun::GetFunction() { // duckdb_fmt::printf_context, duckdb_fmt::vsprintf - ScalarFunction printf_fun({}, LogicalType::VARCHAR, PrintfFunction, - BindPrintfFunction); + ScalarFunction printf_fun({}, LogicalType::VARCHAR, PrintfFunction); + printf_fun.SetResolveTypesCallback(PrintfResolveTypes); printf_fun.GetSignature().AddParameter("format", LogicalType::VARCHAR); printf_fun.GetSignature().AddArgs("args", LogicalType::ANY); printf_fun.SetFallible(); @@ -194,8 +192,8 @@ ScalarFunction PrintfFun::GetFunction() { ScalarFunction FormatFun::GetFunction() { // duckdb_fmt::format_context, duckdb_fmt::vformat - ScalarFunction format_fun({}, LogicalType::VARCHAR, PrintfFunction, - BindPrintfFunction); + ScalarFunction format_fun({}, LogicalType::VARCHAR, PrintfFunction); + format_fun.SetResolveTypesCallback(PrintfResolveTypes); format_fun.GetSignature().AddParameter("format", LogicalType::VARCHAR); format_fun.GetSignature().AddArgs("args", LogicalType::ANY); format_fun.SetFallible(); diff --git a/src/duckdb/extension/core_functions/scalar/struct/struct_values.cpp b/src/duckdb/extension/core_functions/scalar/struct/struct_values.cpp index 5ef9e57f9..3d3c865f7 100644 --- a/src/duckdb/extension/core_functions/scalar/struct/struct_values.cpp +++ b/src/duckdb/extension/core_functions/scalar/struct/struct_values.cpp @@ -53,10 +53,9 @@ static void StructValuesFunction(DataChunk &args, ExpressionState &state, Vector } // Ensure input is a STRUCT, set return type to an unnamed STRUCT with same child types -static unique_ptr StructValuesBind(BindScalarFunctionInput &input) { +static void StructValuesResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - const auto arg_type = arguments[0]->GetReturnType(); + const auto &arg_type = input.GetArgumentType(0); if (arg_type == LogicalTypeId::UNKNOWN) { throw ParameterNotResolvedException(); } @@ -67,17 +66,17 @@ static unique_ptr StructValuesBind(BindScalarFunctionInput &input) // Build unnamed TUPLE child list using only the types vector unnamed_children; - auto &children = StructType::GetChildTypes(arguments[0]->GetReturnType()); + auto &children = StructType::GetChildTypes(arg_type); unnamed_children.reserve(children.size()); for (auto &child : children) { unnamed_children.emplace_back(child.second); } bound_function.SetReturnType(LogicalType::TUPLE(std::move(unnamed_children))); - return nullptr; } ScalarFunction StructValuesFun::GetFunction() { - ScalarFunction func({}, LogicalTypeId::TUPLE, StructValuesFunction, StructValuesBind); + ScalarFunction func({}, LogicalTypeId::TUPLE, StructValuesFunction); + func.SetResolveTypesCallback(StructValuesResolveTypes); func.GetSignature().AddParameter("struct", LogicalTypeId::STRUCT); return func; } diff --git a/src/duckdb/extension/core_functions/scalar/union/union_extract.cpp b/src/duckdb/extension/core_functions/scalar/union/union_extract.cpp index 933285acd..7edb6ecc9 100644 --- a/src/duckdb/extension/core_functions/scalar/union/union_extract.cpp +++ b/src/duckdb/extension/core_functions/scalar/union/union_extract.cpp @@ -42,21 +42,27 @@ void UnionExtractFunction(DataChunk &args, ExpressionState &state, Vector &resul result.Verify(); } -unique_ptr UnionExtractBind(BindScalarFunctionInput &input) { +//! Validates the union argument - the extracted member and the return type are resolved in the bind +void UnionExtractResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); D_ASSERT(bound_function.GetArguments().size() == 2); - if (arguments[0]->GetReturnType().id() == LogicalTypeId::UNKNOWN) { + auto &union_type = input.GetArgumentType(0); + if (union_type.id() == LogicalTypeId::UNKNOWN) { throw ParameterNotResolvedException(); } - if (arguments[0]->GetReturnType().id() != LogicalTypeId::UNION) { + if (union_type.id() != LogicalTypeId::UNION) { throw BinderException("union_extract can only take a union parameter"); } - idx_t union_member_count = UnionType::GetMemberCount(arguments[0]->GetReturnType()); - if (union_member_count == 0) { + if (UnionType::GetMemberCount(union_type) == 0) { throw InternalException("Can't extract something from an empty union"); } - bound_function.GetArguments()[0] = arguments[0]->GetReturnType(); + bound_function.GetArguments()[0] = union_type; +} + +unique_ptr UnionExtractBind(BindScalarFunctionInput &input) { + auto &bound_function = input.GetBoundFunction(); + auto &arguments = input.GetArguments(); + idx_t union_member_count = UnionType::GetMemberCount(arguments[0]->GetReturnType()); auto key_val = input.GetNonNullConstant(1); D_ASSERT(key_val.type().id() == LogicalTypeId::VARCHAR); @@ -103,6 +109,7 @@ ScalarFunction UnionExtractFun::GetFunction() { // the arguments and return types are actually set in the binder function ScalarFunction fun({}, LogicalType::ANY, UnionExtractFunction, UnionExtractBind, nullptr, nullptr); fun.GetSignature().AddParameter("union", LogicalTypeId::UNION).AddParameter("tag", LogicalType::VARCHAR); + fun.SetResolveTypesCallback(UnionExtractResolveTypes); return fun; } diff --git a/src/duckdb/extension/core_functions/scalar/union/union_tag.cpp b/src/duckdb/extension/core_functions/scalar/union/union_tag.cpp index a9ceebfd0..fd88729a4 100644 --- a/src/duckdb/extension/core_functions/scalar/union/union_tag.cpp +++ b/src/duckdb/extension/core_functions/scalar/union/union_tag.cpp @@ -9,7 +9,7 @@ namespace duckdb { namespace { -unique_ptr UnionTagBind(BindScalarFunctionInput &input) { +void UnionTagResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); if (arguments.empty()) { @@ -44,8 +44,6 @@ unique_ptr UnionTagBind(BindScalarFunctionInput &input) { } auto enum_type = LogicalType::ENUM(varchar_vector, member_count); bound_function.SetReturnType(enum_type); - - return nullptr; } void UnionTagFunction(DataChunk &args, ExpressionState &state, Vector &result) { @@ -57,8 +55,9 @@ void UnionTagFunction(DataChunk &args, ExpressionState &state, Vector &result) { ScalarFunction UnionTagFun::GetFunction() { // TODO: Statistics? - ScalarFunction fun({}, LogicalTypeId::ANY, UnionTagFunction, UnionTagBind, nullptr, nullptr); + ScalarFunction fun({}, LogicalTypeId::ANY, UnionTagFunction, nullptr, nullptr, nullptr); fun.GetSignature().AddParameter("union", LogicalTypeId::UNION); + fun.SetResolveTypesCallback(UnionTagResolveTypes); return fun; } diff --git a/src/duckdb/extension/icu/icu-current.cpp b/src/duckdb/extension/icu/icu-current.cpp index 7c8dd2ad3..c9f295bee 100644 --- a/src/duckdb/extension/icu/icu-current.cpp +++ b/src/duckdb/extension/icu/icu-current.cpp @@ -35,6 +35,7 @@ static void CurrentDateFunction(DataChunk &input, ExpressionState &state, Vector ScalarFunction GetCurrentTimeFun() { ScalarFunction current_time({}, LogicalType::TIME_TZ, CurrentTimeFunction); current_time.SetStability(FunctionStability::CONSISTENT_WITHIN_QUERY); + current_time.SetFallible(); return current_time; } diff --git a/src/duckdb/extension/icu/icu-datefunc.cpp b/src/duckdb/extension/icu/icu-datefunc.cpp index 2cd8c4ad9..04943c8f6 100644 --- a/src/duckdb/extension/icu/icu-datefunc.cpp +++ b/src/duckdb/extension/icu/icu-datefunc.cpp @@ -208,6 +208,27 @@ int32_t ICUDateFunc::ExtractField(Calendar *calendar, CalendarField field) { return result; } +bool ICUDateFunc::TryGetTimeTZOffset(Calendar *calendar, int32_t &offset) { + offset = ExtractField(calendar, CAL_ZONE_OFFSET); + offset += ExtractField(calendar, CAL_DST_OFFSET); + offset /= Interval::MSECS_PER_SEC; + return offset >= dtime_tz_t::MIN_OFFSET && offset <= dtime_tz_t::MAX_OFFSET; +} + +int32_t ICUDateFunc::GetTimeTZOffset(Calendar *calendar) { + int32_t offset; + if (!TryGetTimeTZOffset(calendar, offset)) { + throw OutOfRangeException(TimeTZOffsetError(offset)); + } + return offset; +} + +string ICUDateFunc::TimeTZOffsetError(int32_t offset) { + interval_t interval {0, 0, offset * Interval::MICROS_PER_SEC}; + return StringUtil::Format("Time zone offset %s is out of range, expected a value between -15:59:59 and +15:59:59", + Interval::ToString(interval)); +} + int32_t ICUDateFunc::SubtractField(Calendar *calendar, CalendarField field, timestamp_tz_t end_date) { const int64_t millis = end_date.value / Interval::MICROS_PER_MSEC; const auto sub = calendar->FieldDifference(millis, field); diff --git a/src/duckdb/extension/icu/icu-strptime.cpp b/src/duckdb/extension/icu/icu-strptime.cpp index 09735a2bd..8a98b426f 100644 --- a/src/duckdb/extension/icu/icu-strptime.cpp +++ b/src/duckdb/extension/icu/icu-strptime.cpp @@ -475,9 +475,11 @@ struct ICUStrptime : public ICUDateFunc { auto calendar = cal.get(); // Extract the offset from the calendar - auto offset = ExtractField(calendar, CAL_ZONE_OFFSET); - offset += ExtractField(calendar, CAL_DST_OFFSET); - offset /= Interval::MSECS_PER_SEC; + int32_t offset; + if (!TryGetTimeTZOffset(calendar, offset)) { + HandleCastError::AssignError(TimeTZOffsetError(offset), parameters); + return nullopt; + } // Apply it to the offset +00 time we parsed. result = dtime_tz_t(result.time(), offset); diff --git a/src/duckdb/extension/icu/icu-timezone.cpp b/src/duckdb/extension/icu/icu-timezone.cpp index 1b465df38..2caa2ebcb 100644 --- a/src/duckdb/extension/icu/icu-timezone.cpp +++ b/src/duckdb/extension/icu/icu-timezone.cpp @@ -523,16 +523,15 @@ dtime_tz_t ICUToTimeTZ::Operation(Calendar *calendar, dtime_tz_t timetz) { // Normalise to +00:00, add TZ offset, then set offset to TZ auto time = Time::NormalizeTimeTZ(timetz); - auto offset = ExtractField(calendar, CAL_ZONE_OFFSET); - offset += ExtractField(calendar, CAL_DST_OFFSET); - offset /= Interval::MSECS_PER_SEC; + auto offset = GetTimeTZOffset(calendar); date_t date(0); time = Interval::Add(time, {0, 0, offset * Interval::MICROS_PER_SEC}, date); return dtime_tz_t(time, offset); } -bool ICUToTimeTZ::ToTimeTZ(Calendar *calendar, timestamp_tz_t instant, dtime_tz_t &result) { +bool ICUToTimeTZ::ToTimeTZ(Calendar *calendar, timestamp_tz_t instant, dtime_tz_t &result, + optional_ptr error_message) { if (!instant.IsFinite()) { return false; } @@ -550,9 +549,13 @@ bool ICUToTimeTZ::ToTimeTZ(Calendar *calendar, timestamp_tz_t instant, dtime_tz_ const auto time = Time::FromTime(hour, minute, second, micros); // Offset in current TZ - auto offset = ExtractField(calendar, CAL_ZONE_OFFSET); - offset += ExtractField(calendar, CAL_DST_OFFSET); - offset /= Interval::MSECS_PER_SEC; + int32_t offset; + if (!error_message) { + offset = GetTimeTZOffset(calendar); + } else if (!TryGetTimeTZOffset(calendar, offset)) { + *error_message = TimeTZOffsetError(offset); + return false; + } result = dtime_tz_t(time, offset); return true; @@ -566,11 +569,14 @@ bool ICUToTimeTZ::CastToTimeTZ(Vector &source, Vector &result, idx_t count, Cast UnaryExecutor::Execute(source, result, count, [&](timestamp_tz_t input) -> optional { dtime_tz_t output; - if (ToTimeTZ(calendar.get(), input, output)) { + string error_message; + if (ToTimeTZ(calendar.get(), input, output, error_message)) { return output; - } else { - return nullopt; } + if (!error_message.empty()) { + HandleCastError::AssignError(error_message, parameters); + } + return nullopt; }); return true; } @@ -595,9 +601,15 @@ bool ICUToTimeTZ::CastFromTime(Vector &source, Vector &result, idx_t count, Cast // Read the session UTC offset (with DST) from the calendar. // This mirrors the no-offset branch in ICUStrptime::VarcharToTimeTZ so that // '00:00:00'::TIME::TIMETZ matches '00:00:00'::TIMETZ. - auto offset = ExtractField(calendar, CAL_ZONE_OFFSET); - offset += ExtractField(calendar, CAL_DST_OFFSET); - offset /= Interval::MSECS_PER_SEC; + int32_t offset; + if (!TryGetTimeTZOffset(calendar, offset)) { + auto error_message = TimeTZOffsetError(offset); + UnaryExecutor::Execute(source, result, count, [&](dtime_t input) -> optional { + HandleCastError::AssignError(error_message, parameters); + return nullopt; + }); + return false; + } UnaryExecutor::Execute(source, result, count, [&](dtime_t input) { return dtime_tz_t(input, offset); }); diff --git a/src/duckdb/extension/icu/include/icu-casts.hpp b/src/duckdb/extension/icu/include/icu-casts.hpp index 28ac883e7..97f00f4cd 100644 --- a/src/duckdb/extension/icu/include/icu-casts.hpp +++ b/src/duckdb/extension/icu/include/icu-casts.hpp @@ -31,7 +31,10 @@ struct ICUMakeDate : public ICUDateFunc { struct ICUToTimeTZ : public ICUDateFunc { static dtime_tz_t Operation(Calendar *calendar, dtime_tz_t timetz); - static bool ToTimeTZ(Calendar *calendar, timestamp_tz_t instant, dtime_tz_t &result); + //! Returns false if the instant cannot be converted. If no error_message is provided, an out-of-range time zone + //! offset throws, otherwise the error is written to error_message. + static bool ToTimeTZ(Calendar *calendar, timestamp_tz_t instant, dtime_tz_t &result, + optional_ptr error_message = nullptr); static bool CastToTimeTZ(Vector &source, Vector &result, idx_t count, CastParameters ¶meters); static bool CastFromTime(Vector &source, Vector &result, idx_t count, CastParameters ¶meters); diff --git a/src/duckdb/extension/icu/include/icu-datefunc.hpp b/src/duckdb/extension/icu/include/icu-datefunc.hpp index 7f80bd1e9..04ad57f5b 100644 --- a/src/duckdb/extension/icu/include/icu-datefunc.hpp +++ b/src/duckdb/extension/icu/include/icu-datefunc.hpp @@ -105,6 +105,11 @@ struct ICUDateFunc { static uint64_t SetTimeNS(Calendar *calendar, timestamp_tz_ns_t date); //! Extracts the field from the calendar static int32_t ExtractField(Calendar *calendar, CalendarField field); + //! Extracts the UTC offset (in seconds) of the calendar, returns false if a TIMETZ cannot represent it + static bool TryGetTimeTZOffset(Calendar *calendar, int32_t &offset); + //! Extracts the UTC offset (in seconds) of the calendar, throws if a TIMETZ cannot represent it + static int32_t GetTimeTZOffset(Calendar *calendar); + static string TimeTZOffsetError(int32_t offset); //! Subtracts the field of the given date from the calendar static int32_t SubtractField(Calendar *calendar, CalendarField field, timestamp_tz_t end_date); //! Adds the timestamp and the interval using the calendar diff --git a/src/duckdb/extension/json/include/json_functions.hpp b/src/duckdb/extension/json/include/json_functions.hpp index 88156d98d..a77283c6b 100644 --- a/src/duckdb/extension/json/include/json_functions.hpp +++ b/src/duckdb/extension/json/include/json_functions.hpp @@ -32,6 +32,7 @@ struct JSONReadFunctionData : public FunctionData { unique_ptr Copy() const override; bool Equals(const FunctionData &other_p) const override; static JSONCommon::JSONPathType CheckPath(const Value &path_val, string &path, idx_t &len); + static void ResolveTypes(ResolveScalarFunctionTypesInput &input); static unique_ptr Bind(BindScalarFunctionInput &input); public: diff --git a/src/duckdb/extension/json/include/json_stack.hpp b/src/duckdb/extension/json/include/json_stack.hpp new file mode 100644 index 000000000..a362cc0fe --- /dev/null +++ b/src/duckdb/extension/json/include/json_stack.hpp @@ -0,0 +1,24 @@ +#pragma once +#include "json_common.hpp" + +namespace duckdb { +template // preferably a struct +class Stack { +public: + void Push(STACK_ITEM item) { + stack.push_back(std::move(item)); + } + STACK_ITEM Pop() { + STACK_ITEM item = stack.back(); + stack.pop_back(); + return item; + } + bool Empty() const { + return stack.empty(); + } + +private: + vector stack; +}; + +} // namespace duckdb diff --git a/src/duckdb/extension/json/include/json_structure.hpp b/src/duckdb/extension/json/include/json_structure.hpp index 2ec777db9..f8a38f193 100644 --- a/src/duckdb/extension/json/include/json_structure.hpp +++ b/src/duckdb/extension/json/include/json_structure.hpp @@ -75,7 +75,8 @@ struct JSONStructureDescription { JSONStructureNode &GetOrCreateChild(); JSONStructureNode &GetOrCreateChild(const char *key_ptr, size_t key_size); - JSONStructureNode &GetOrCreateChild(yyjson_val *key, yyjson_val *val, bool ignore_errors, bool detect_geojson); + JSONStructureNode &GetOrCreateChild(yyjson_val *key, yyjson_val *val, bool ignore_errors, bool detect_geojson, + const idx_t depth); public: //! Type of this description @@ -97,7 +98,8 @@ struct JSONStructureDescription { struct JSONStructure { public: - static void ExtractStructure(yyjson_val *val, JSONStructureNode &node, bool ignore_errors, bool detect_geojson); + static void ExtractStructure(yyjson_val *val, JSONStructureNode &node, bool ignore_errors, bool detect_geojson, + const idx_t depth = 0); static void MergeNodes(JSONStructureNode &merged, const JSONStructureNode &node); static LogicalType StructureToType(ClientContext &context, const JSONStructureNode &node, idx_t max_depth, double field_appearance_threshold, idx_t map_inference_threshold, diff --git a/src/duckdb/extension/json/json_functions.cpp b/src/duckdb/extension/json/json_functions.cpp index daabd5c1b..f82779f4f 100644 --- a/src/duckdb/extension/json/json_functions.cpp +++ b/src/duckdb/extension/json/json_functions.cpp @@ -63,9 +63,19 @@ bool JSONReadFunctionData::Equals(const FunctionData &other_p) const { return constant == other.constant && path == other.path && len == other.len && path_type == other.path_type; } +//! An integral path is an array index, other paths are cast to VARCHAR +void JSONReadFunctionData::ResolveTypes(ResolveScalarFunctionTypesInput &input) { + auto &bound_function = input.GetBoundFunction(); + D_ASSERT(bound_function.GetArguments().size() == 2); + if (input.GetArgumentType(1).IsIntegral()) { + bound_function.GetArguments()[1] = LogicalType::BIGINT; + } else { + bound_function.GetArguments()[1] = LogicalType::VARCHAR; + } +} + unique_ptr JSONReadFunctionData::Bind(BindScalarFunctionInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); D_ASSERT(bound_function.GetArguments().size() == 2); bool constant = false; string path; @@ -76,11 +86,6 @@ unique_ptr JSONReadFunctionData::Bind(BindScalarFunctionInput &inp constant = true; path_type = CheckPath(*path_val, path, len); } - if (arguments[1]->GetReturnType().IsIntegral()) { - bound_function.GetArguments()[1] = LogicalType::BIGINT; - } else { - bound_function.GetArguments()[1] = LogicalType::VARCHAR; - } if (path_type == JSONCommon::JSONPathType::WILDCARD) { bound_function.SetReturnType(LogicalType::LIST(bound_function.GetReturnType())); } diff --git a/src/duckdb/extension/json/json_functions/json_array_length.cpp b/src/duckdb/extension/json/json_functions/json_array_length.cpp index f505bc30b..a6637ef03 100644 --- a/src/duckdb/extension/json/json_functions/json_array_length.cpp +++ b/src/duckdb/extension/json/json_functions/json_array_length.cpp @@ -26,6 +26,7 @@ static void GetArrayLengthFunctionsInternal(ScalarFunctionSet &set, const Logica ScalarFunction path_fun({}, LogicalType::UBIGINT, BinaryArrayLengthFunction, JSONReadFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); path_fun.GetSignature().AddParameter("json", input_type).AddParameter("path", LogicalType::VARCHAR); + path_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); set.AddFunction(path_fun); ScalarFunction many_fun({}, LogicalType::LIST(LogicalType::UBIGINT), ManyArrayLengthFunction, JSONReadManyFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); diff --git a/src/duckdb/extension/json/json_functions/json_create.cpp b/src/duckdb/extension/json/json_functions/json_create.cpp index d5e43bd94..4eb1fa82c 100644 --- a/src/duckdb/extension/json/json_functions/json_create.cpp +++ b/src/duckdb/extension/json/json_functions/json_create.cpp @@ -299,8 +299,10 @@ static LogicalType GetJSONType(StructNames &const_struct_names, const LogicalTyp } } +//! Resolves the argument types and the struct names - this is called from both resolve_types and bind, which only +//! works because the JSON type of a JSON type is the same type static unique_ptr JSONCreateBindParams(BoundScalarFunction &bound_function, - vector> &arguments, bool object) { + const vector> &arguments, bool object) { StructNames const_struct_names; auto &bound_arguments = bound_function.GetArguments(); bound_arguments.clear(); @@ -323,7 +325,8 @@ static unique_ptr JSONCreateBindParams(BoundScalarFunction &bound_ return make_uniq(std::move(const_struct_names)); } -static unique_ptr JSONObjectBind(BindScalarFunctionInput &input) { +template +static unique_ptr JSONObjectBind(INPUT &input) { auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); if (arguments.size() % 2 != 0) { @@ -332,13 +335,15 @@ static unique_ptr JSONObjectBind(BindScalarFunctionInput &input) { return JSONCreateBindParams(bound_function, arguments, true); } -static unique_ptr JSONArrayBind(BindScalarFunctionInput &input) { +template +static unique_ptr JSONArrayBind(INPUT &input) { auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); return JSONCreateBindParams(bound_function, arguments, false); } -static unique_ptr ToJSONBind(BindScalarFunctionInput &input) { +template +static unique_ptr ToJSONBind(INPUT &input) { auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); if (arguments.size() != 1) { @@ -347,7 +352,8 @@ static unique_ptr ToJSONBind(BindScalarFunctionInput &input) { return JSONCreateBindParams(bound_function, arguments, false); } -static unique_ptr ArrayToJSONBind(BindScalarFunctionInput &input) { +template +static unique_ptr ArrayToJSONBind(INPUT &input) { auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); if (arguments.size() != 1) { @@ -363,7 +369,8 @@ static unique_ptr ArrayToJSONBind(BindScalarFunctionInput &input) return JSONCreateBindParams(bound_function, arguments, false); } -static unique_ptr RowToJSONBind(BindScalarFunctionInput &input) { +template +static unique_ptr RowToJSONBind(INPUT &input) { auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); if (arguments.size() != 1) { @@ -379,6 +386,11 @@ static unique_ptr RowToJSONBind(BindScalarFunctionInput &input) { return JSONCreateBindParams(bound_function, arguments, false); } +template (*BIND)(ResolveScalarFunctionTypesInput &)> +static void JSONCreateResolveTypes(ResolveScalarFunctionTypesInput &input) { + BIND(input); +} + static bool BindJSONCopyFormat(ClientContext &context, Expression &argument, const string &name, string &format_string, StrfTimeFormat &format) { if (argument.HasParameter()) { @@ -1469,9 +1481,10 @@ unique_ptr JSONFunctions::CreateJSONCopyToJSONExpression(ClientConte } ScalarFunctionSet JSONFunctions::GetObjectFunction() { - ScalarFunction fun("json_object", {}, LogicalType::JSON(), ObjectFunction, JSONObjectBind, nullptr, - JSONFunctionLocalState::Init); + ScalarFunction fun("json_object", {}, LogicalType::JSON(), ObjectFunction, JSONObjectBind, + nullptr, JSONFunctionLocalState::Init); fun.GetSignature().AddArgs("args", LogicalType::ANY); + fun.SetResolveTypesCallback(JSONCreateResolveTypes>); fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); // throws if a key is NULL fun.SetFallible(); @@ -1479,17 +1492,19 @@ ScalarFunctionSet JSONFunctions::GetObjectFunction() { } ScalarFunctionSet JSONFunctions::GetArrayFunction() { - ScalarFunction fun("json_array", {}, LogicalType::JSON(), ArrayFunction, JSONArrayBind, nullptr, - JSONFunctionLocalState::Init); + ScalarFunction fun("json_array", {}, LogicalType::JSON(), ArrayFunction, JSONArrayBind, + nullptr, JSONFunctionLocalState::Init); fun.GetSignature().AddArgs("args", LogicalType::ANY); + fun.SetResolveTypesCallback(JSONCreateResolveTypes>); fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); return ScalarFunctionSet(fun); } ScalarFunctionSet JSONFunctions::GetToJSONFunction() { - ScalarFunction fun("to_json", {}, LogicalType::JSON(), ToJSONFunction, ToJSONBind, nullptr, + ScalarFunction fun("to_json", {}, LogicalType::JSON(), ToJSONFunction, ToJSONBind, nullptr, JSONFunctionLocalState::Init); fun.GetSignature().AddArgs("args", LogicalType::ANY); + fun.SetResolveTypesCallback(JSONCreateResolveTypes>); return ScalarFunctionSet(fun); } @@ -1523,16 +1538,18 @@ ScalarFunction JSONFunctions::GetJSONCopyToGeoJSONFunction() { } ScalarFunctionSet JSONFunctions::GetArrayToJSONFunction() { - ScalarFunction fun("array_to_json", {}, LogicalType::JSON(), ToJSONFunction, ArrayToJSONBind, nullptr, - JSONFunctionLocalState::Init); + ScalarFunction fun("array_to_json", {}, LogicalType::JSON(), ToJSONFunction, + ArrayToJSONBind, nullptr, JSONFunctionLocalState::Init); fun.GetSignature().AddArgs("args", LogicalType::ANY); + fun.SetResolveTypesCallback(JSONCreateResolveTypes>); return ScalarFunctionSet(fun); } ScalarFunctionSet JSONFunctions::GetRowToJSONFunction() { - ScalarFunction fun("row_to_json", {}, LogicalType::JSON(), ToJSONFunction, RowToJSONBind, nullptr, - JSONFunctionLocalState::Init); + ScalarFunction fun("row_to_json", {}, LogicalType::JSON(), ToJSONFunction, RowToJSONBind, + nullptr, JSONFunctionLocalState::Init); fun.GetSignature().AddArgs("args", LogicalType::ANY); + fun.SetResolveTypesCallback(JSONCreateResolveTypes>); return ScalarFunctionSet(fun); } diff --git a/src/duckdb/extension/json/json_functions/json_deep_merge.cpp b/src/duckdb/extension/json/json_functions/json_deep_merge.cpp index 8d6a64d68..29c15d7c7 100644 --- a/src/duckdb/extension/json/json_functions/json_deep_merge.cpp +++ b/src/duckdb/extension/json/json_functions/json_deep_merge.cpp @@ -1,10 +1,11 @@ #include "json_common.hpp" #include "json_functions.hpp" +#include "json_stack.hpp" namespace duckdb { //! Coalescing deep merge: null in patch means "absent/unknown", keeps the original value. -//! Non-null patch values overwrite. Nested objects are merged recursively. +//! Non-null patch values overwrite. static yyjson_mut_val *DeepMerge(yyjson_mut_doc *doc, yyjson_mut_val *orig_root, yyjson_mut_val *patch_root) { if (!yyjson_mut_is_obj(orig_root) || !yyjson_mut_is_obj(patch_root)) { if (unsafe_yyjson_is_null(patch_root)) { @@ -22,13 +23,12 @@ static yyjson_mut_val *DeepMerge(yyjson_mut_doc *doc, yyjson_mut_val *orig_root, yyjson_mut_val *patch_node; yyjson_mut_val *builder; }; - auto stack = vector(); - stack.emplace_back(stack_item {nullptr, orig_root, patch_root, root_builder}); + Stack stack; + stack.Push(stack_item {nullptr, orig_root, patch_root, root_builder}); // loop over each level of nesting - while (!stack.empty()) { - auto nodes = stack.back(); - stack.pop_back(); + while (!stack.Empty()) { + auto nodes = stack.Pop(); auto builder = nodes.builder; @@ -79,7 +79,7 @@ static yyjson_mut_val *DeepMerge(yyjson_mut_doc *doc, yyjson_mut_val *orig_root, } else { auto child_builder = yyjson_mut_obj(doc); // now we know that both are objects and we need to check them, so we add them to the stack - stack.emplace_back(stack_item {mut_key, orig_val, patch_val, child_builder}); + stack.Push(stack_item {mut_key, orig_val, patch_val, child_builder}); yyjson_mut_obj_add(builder, mut_key, child_builder); } } diff --git a/src/duckdb/extension/json/json_functions/json_exists.cpp b/src/duckdb/extension/json/json_functions/json_exists.cpp index 754b1c642..a1d8624c5 100644 --- a/src/duckdb/extension/json/json_functions/json_exists.cpp +++ b/src/duckdb/extension/json/json_functions/json_exists.cpp @@ -18,6 +18,7 @@ static void GetExistsFunctionsInternal(ScalarFunctionSet &set, const LogicalType ScalarFunction single_fun({}, LogicalType::BOOLEAN, BinaryExistsFunction, JSONReadFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); single_fun.GetSignature().AddParameter("json", input_type).AddParameter("path", LogicalType::VARCHAR); + single_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); set.AddFunction(single_fun); ScalarFunction many_fun({}, LogicalType::LIST(LogicalType::BOOLEAN), ManyExistsFunction, JSONReadManyFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); diff --git a/src/duckdb/extension/json/json_functions/json_extract.cpp b/src/duckdb/extension/json/json_functions/json_extract.cpp index 226382a77..2e2a1ec38 100644 --- a/src/duckdb/extension/json/json_functions/json_extract.cpp +++ b/src/duckdb/extension/json/json_functions/json_extract.cpp @@ -38,10 +38,14 @@ static void GetExtractFunctionsInternal(ScalarFunctionSet &set, const LogicalTyp ScalarFunction index_fun({}, LogicalType::JSON(), ExtractFunction, JSONReadFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); index_fun.GetSignature().AddParameter("json", input_type).AddParameter("index", LogicalType::BIGINT); + index_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); + index_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); set.AddFunction(index_fun); ScalarFunction path_fun({}, LogicalType::JSON(), ExtractFunction, JSONReadFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); path_fun.GetSignature().AddParameter("json", input_type).AddParameter("path", LogicalType::VARCHAR); + path_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); + path_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); set.AddFunction(path_fun); ScalarFunction many_fun({}, LogicalType::LIST(LogicalType::JSON()), ExtractManyFunction, JSONReadManyFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); diff --git a/src/duckdb/extension/json/json_functions/json_keys.cpp b/src/duckdb/extension/json/json_functions/json_keys.cpp index 33da7eafd..f84d9ef36 100644 --- a/src/duckdb/extension/json/json_functions/json_keys.cpp +++ b/src/duckdb/extension/json/json_functions/json_keys.cpp @@ -46,6 +46,7 @@ static void GetJSONKeysFunctionsInternal(ScalarFunctionSet &set, const LogicalTy ScalarFunction path_fun({}, LogicalType::LIST(LogicalType::VARCHAR), BinaryJSONKeysFunction, JSONReadFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); path_fun.GetSignature().AddParameter("json", input_type).AddParameter("path", LogicalType::VARCHAR); + path_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); set.AddFunction(path_fun); ScalarFunction many_fun({}, LogicalType::LIST(LogicalType::LIST(LogicalType::VARCHAR)), ManyJSONKeysFunction, JSONReadManyFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); diff --git a/src/duckdb/extension/json/json_functions/json_merge_patch.cpp b/src/duckdb/extension/json/json_functions/json_merge_patch.cpp index 59f721445..f8d1c1e8b 100644 --- a/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +++ b/src/duckdb/extension/json/json_functions/json_merge_patch.cpp @@ -1,8 +1,10 @@ #include "json_common.hpp" #include "json_functions.hpp" +#include "json_stack.hpp" namespace duckdb { +//! RFC 7396 merge patch; a missing or non-object orig is treated as an empty object static inline yyjson_mut_val *MergePatch(yyjson_mut_doc *doc, yyjson_mut_val *orig, yyjson_mut_val *patch) { if ((yyjson_mut_get_tag(orig) != (YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE)) || (yyjson_mut_get_tag(patch) != (YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE))) { @@ -11,7 +13,59 @@ static inline yyjson_mut_val *MergePatch(yyjson_mut_doc *doc, yyjson_mut_val *or } // Both are object, do the merge - return yyjson_mut_merge_patch(doc, orig, patch); + auto root_builder = yyjson_mut_obj(doc); + + struct stack_item { + yyjson_mut_val *key; + yyjson_mut_val *orig; + yyjson_mut_val *patch; + yyjson_mut_val *builder; + }; + Stack stack; + stack.Push(stack_item {nullptr, orig, patch, root_builder}); + + while (!stack.Empty()) { + auto nodes = stack.Pop(); + + if (!yyjson_mut_is_obj(nodes.orig)) { + // yyjson_mut_obj_getn on a non-object returns nullptr, so lookups below need no special case + nodes.orig = nullptr; + } + + // Copy orig keys that the patch does not touch + if (nodes.orig) { + idx_t idx, max; + yyjson_mut_val *key, *orig_val; + yyjson_mut_obj_foreach(nodes.orig, idx, max, key, orig_val) { + auto patch_val = + yyjson_mut_obj_getn(nodes.patch, unsafe_yyjson_get_str(key), unsafe_yyjson_get_len(key)); + if (!patch_val) { + yyjson_mut_obj_add(nodes.builder, yyjson_mut_val_mut_copy(doc, key), + yyjson_mut_val_mut_copy(doc, orig_val)); + } + } + } + + // Merge patch keys; null removes the key + idx_t idx, max; + yyjson_mut_val *key, *patch_val; + yyjson_mut_obj_foreach(nodes.patch, idx, max, key, patch_val) { + if (unsafe_yyjson_is_null(patch_val)) { + continue; + } + auto mut_key = yyjson_mut_val_mut_copy(doc, key); + if (!yyjson_mut_is_obj(patch_val)) { + yyjson_mut_obj_add(nodes.builder, mut_key, yyjson_mut_val_mut_copy(doc, patch_val)); + continue; + } + auto orig_val = yyjson_mut_obj_getn(nodes.orig, unsafe_yyjson_get_str(key), unsafe_yyjson_get_len(key)); + auto child_builder = yyjson_mut_obj(doc); + yyjson_mut_obj_add(nodes.builder, mut_key, child_builder); + stack.Push(stack_item {mut_key, orig_val, patch_val, child_builder}); + } + } + + return root_builder; } static inline void ReadObjects(yyjson_mut_doc *doc, const Vector &input, yyjson_mut_val *objs[]) { diff --git a/src/duckdb/extension/json/json_functions/json_merge_patch_diff.cpp b/src/duckdb/extension/json/json_functions/json_merge_patch_diff.cpp index f728b1d9e..42dd83349 100644 --- a/src/duckdb/extension/json/json_functions/json_merge_patch_diff.cpp +++ b/src/duckdb/extension/json/json_functions/json_merge_patch_diff.cpp @@ -1,5 +1,6 @@ #include "json_common.hpp" #include "json_functions.hpp" +#include "json_stack.hpp" namespace duckdb { @@ -17,12 +18,11 @@ static yyjson_mut_val *ComputeDiff(yyjson_mut_doc *doc, yyjson_val *old_val, yyj }; yyjson_mut_val *result = nullptr; - auto stack = vector(); - stack.push_back(stack_item {nullptr, old_val, new_val, nullptr, nullptr, false}); + Stack stack; + stack.Push(stack_item {nullptr, old_val, new_val, nullptr, nullptr, false}); - while (!stack.empty()) { - auto item = stack.back(); - stack.pop_back(); + while (!stack.Empty()) { + auto item = stack.Pop(); // finalize phase: update result if (item.finalize) { @@ -37,7 +37,7 @@ static yyjson_mut_val *ComputeDiff(yyjson_mut_doc *doc, yyjson_val *old_val, yyj } // Both objects: compute structural diff - if (item.old_node && item.new_node && yyjson_is_obj(item.old_node) && yyjson_is_obj(item.new_node)) { + if (yyjson_is_obj(item.old_node) && yyjson_is_obj(item.new_node)) { auto builder = yyjson_mut_obj(doc); // Keys in old but not in new: removed (emit null) @@ -51,13 +51,13 @@ static yyjson_mut_val *ComputeDiff(yyjson_mut_doc *doc, yyjson_val *old_val, yyj } } - stack.push_back({item.key, nullptr, nullptr, item.parent_builder, builder, true}); + stack.Push({item.key, nullptr, nullptr, item.parent_builder, builder, true}); // Keys in new: collect in order { idx_t idx, max; yyjson_val *key, *new_child; - std::vector children; + vector children; yyjson_obj_foreach(item.new_node, idx, max, key, new_child) { auto old_child = yyjson_obj_getn(item.old_node, unsafe_yyjson_get_str(key), unsafe_yyjson_get_len(key)); @@ -67,7 +67,7 @@ static yyjson_mut_val *ComputeDiff(yyjson_mut_doc *doc, yyjson_val *old_val, yyj } // push to stack in reverse to preserve order in output for (auto it = children.rbegin(); it != children.rend(); ++it) { - stack.push_back(*it); + stack.Push(*it); } } } else if (!item.old_node || !yyjson_equals(item.old_node, item.new_node)) { diff --git a/src/duckdb/extension/json/json_functions/json_normalize.cpp b/src/duckdb/extension/json/json_functions/json_normalize.cpp index dcc662c4c..3fb1e28b7 100644 --- a/src/duckdb/extension/json/json_functions/json_normalize.cpp +++ b/src/duckdb/extension/json/json_functions/json_normalize.cpp @@ -1,5 +1,6 @@ #include "json_common.hpp" #include "json_functions.hpp" +#include "json_stack.hpp" namespace duckdb { @@ -9,12 +10,11 @@ static void SortKeys(yyjson_mut_val *v) { yyjson_mut_val *val; }; - auto stack = vector(); - stack.push_back(stack_item {v}); + Stack stack; + stack.Push(stack_item {v}); - while (!stack.empty()) { - auto item = stack.back(); - stack.pop_back(); + while (!stack.Empty()) { + auto item = stack.Pop(); // if null, do nothing if (!item.val) { @@ -29,7 +29,7 @@ static void SortKeys(yyjson_mut_val *v) { yyjson_mut_obj_iter iter; yyjson_mut_obj_iter_init(item.val, &iter); yyjson_mut_val *key = yyjson_mut_obj_iter_next(&iter); - stack.push_back(stack_item {yyjson_mut_obj_iter_get_val(key)}); + stack.Push(stack_item {yyjson_mut_obj_iter_get_val(key)}); } continue; } @@ -55,7 +55,7 @@ static void SortKeys(yyjson_mut_val *v) { // Recursively sort nested values for (auto &pair : pairs) { - stack.push_back(stack_item {pair.second}); + stack.Push(stack_item {pair.second}); } // Clear and rebuild in sorted order @@ -67,7 +67,7 @@ static void SortKeys(yyjson_mut_val *v) { idx_t idx, max; yyjson_mut_val *elem; yyjson_mut_arr_foreach(item.val, idx, max, elem) { - stack.push_back(stack_item {elem}); + stack.Push(stack_item {elem}); } } } diff --git a/src/duckdb/extension/json/json_functions/json_strip_nulls.cpp b/src/duckdb/extension/json/json_functions/json_strip_nulls.cpp index 1b3ddfd7f..07bfa2344 100644 --- a/src/duckdb/extension/json/json_functions/json_strip_nulls.cpp +++ b/src/duckdb/extension/json/json_functions/json_strip_nulls.cpp @@ -1,5 +1,6 @@ #include "json_common.hpp" #include "json_functions.hpp" +#include "json_stack.hpp" namespace duckdb { @@ -9,15 +10,14 @@ static void StripNulls(yyjson_mut_val *val) { yyjson_mut_val *val; }; - auto stack = vector(); - stack.emplace_back(stack_item {val}); + Stack stack; + stack.Push(stack_item {val}); - while (!stack.empty()) { - auto curr_val = stack.back().val; - stack.pop_back(); + while (!stack.Empty()) { + auto curr_val = stack.Pop().val; - if (!curr_val) { - return; + if (!curr_val) { // TODO: at any point would we push something onto the stack that is a nullptr val? + return; // TODO: maybe put this as continue } if (yyjson_mut_is_obj(curr_val)) { yyjson_mut_obj_iter iter; @@ -28,14 +28,16 @@ static void StripNulls(yyjson_mut_val *val) { if (unsafe_yyjson_is_null(child)) { yyjson_mut_obj_iter_remove(&iter); } else { - stack.emplace_back(stack_item {child}); + stack.Push(stack_item {child}); } } - } else if (yyjson_mut_is_arr(curr_val)) { + } else if (yyjson_mut_is_arr(curr_val)) { // TODO: this is exceptionally stupid bc you never check if array + // items are null ????????? + // TODO: plus this logic could probably be combined with obj logic, its just the iterator ... idx_t idx, max; yyjson_mut_val *elem; yyjson_mut_arr_foreach(curr_val, idx, max, elem) { - stack.emplace_back(stack_item {elem}); + stack.Push(stack_item {elem}); } } } diff --git a/src/duckdb/extension/json/json_functions/json_structure.cpp b/src/duckdb/extension/json/json_functions/json_structure.cpp index e8bce3534..83e2f09c1 100644 --- a/src/duckdb/extension/json/json_functions/json_structure.cpp +++ b/src/duckdb/extension/json/json_functions/json_structure.cpp @@ -519,15 +519,16 @@ JSONStructureNode &JSONStructureDescription::GetOrCreateChild(const char *key_pt } JSONStructureNode &JSONStructureDescription::GetOrCreateChild(yyjson_val *key, yyjson_val *val, - const bool ignore_errors, const bool detect_geojson) { + const bool ignore_errors, const bool detect_geojson, + const idx_t depth) { D_ASSERT(yyjson_is_str(key)); auto &child = GetOrCreateChild(unsafe_yyjson_get_str(key), unsafe_yyjson_get_len(key)); - JSONStructure::ExtractStructure(val, child, ignore_errors, detect_geojson); + JSONStructure::ExtractStructure(val, child, ignore_errors, detect_geojson, depth); return child; } static void ExtractStructureArray(yyjson_val *arr, JSONStructureNode &node, const bool ignore_errors, - const bool detect_geojson) { + const bool detect_geojson, const idx_t depth) { D_ASSERT(yyjson_is_arr(arr)); auto &description = node.GetOrCreateDescription(LogicalTypeId::LIST); auto &child = description.GetOrCreateChild(); @@ -535,12 +536,12 @@ static void ExtractStructureArray(yyjson_val *arr, JSONStructureNode &node, cons size_t idx, max; yyjson_val *val; yyjson_arr_foreach(arr, idx, max, val) { - JSONStructure::ExtractStructure(val, child, ignore_errors, detect_geojson); + JSONStructure::ExtractStructure(val, child, ignore_errors, detect_geojson, depth + 1); } } static void ExtractStructureObject(yyjson_val *obj, JSONStructureNode &node, const bool ignore_errors, - const bool detect_geojson) { + const bool detect_geojson, const idx_t depth) { D_ASSERT(yyjson_is_obj(obj)); auto &description = node.GetOrCreateDescription(LogicalTypeId::STRUCT); @@ -562,7 +563,7 @@ static void ExtractStructureObject(yyjson_val *obj, JSONStructureNode &node, con *insert_result.first + "\" in object %s", obj); } - description.GetOrCreateChild(key, val, ignore_errors, detect_geojson); + description.GetOrCreateChild(key, val, ignore_errors, detect_geojson, depth + 1); } } @@ -577,7 +578,10 @@ static void ExtractStructureVal(yyjson_val *val, JSONStructureNode &node) { } void JSONStructure::ExtractStructure(yyjson_val *val, JSONStructureNode &node, const bool ignore_errors, - const bool detect_geojson) { + const bool detect_geojson, const idx_t depth) { + if (depth >= JSONCommon::MAX_RECURSION_DEPTH) { + throw InvalidInputException("JSON exceeds maximum recursion depth of %d", JSONCommon::MAX_RECURSION_DEPTH); + } node.count++; const auto tag = yyjson_get_tag(val); if (tag == (YYJSON_TYPE_NULL | YYJSON_SUBTYPE_NONE)) { @@ -586,7 +590,7 @@ void JSONStructure::ExtractStructure(yyjson_val *val, JSONStructureNode &node, c switch (tag) { case YYJSON_TYPE_ARR | YYJSON_SUBTYPE_NONE: - return ExtractStructureArray(val, node, ignore_errors, detect_geojson); + return ExtractStructureArray(val, node, ignore_errors, detect_geojson, depth); case YYJSON_TYPE_OBJ | YYJSON_SUBTYPE_NONE: // A GeoJSON geometry is a leaf: it becomes GEOMETRY rather than a struct of type/coordinates. Detecting it // here (rather than on the finished tree) means geometries of different kinds still merge into one type. @@ -594,7 +598,7 @@ void JSONStructure::ExtractStructure(yyjson_val *val, JSONStructureNode &node, c node.GetOrCreateDescription(LogicalTypeId::GEOMETRY); return; } - return ExtractStructureObject(val, node, ignore_errors, detect_geojson); + return ExtractStructureObject(val, node, ignore_errors, detect_geojson, depth); default: return ExtractStructureVal(val, node); } diff --git a/src/duckdb/extension/json/json_functions/json_type.cpp b/src/duckdb/extension/json/json_functions/json_type.cpp index b476e33a2..002bf7482 100644 --- a/src/duckdb/extension/json/json_functions/json_type.cpp +++ b/src/duckdb/extension/json/json_functions/json_type.cpp @@ -26,6 +26,7 @@ static void GetTypeFunctionsInternal(ScalarFunctionSet &set, const LogicalType & ScalarFunction path_fun({}, LogicalType::VARCHAR, BinaryTypeFunction, JSONReadFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); path_fun.GetSignature().AddParameter("json", input_type).AddParameter("path", LogicalType::VARCHAR); + path_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); set.AddFunction(path_fun); ScalarFunction many_fun({}, LogicalType::LIST(LogicalType::VARCHAR), ManyTypeFunction, JSONReadManyFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); diff --git a/src/duckdb/extension/json/json_functions/json_value.cpp b/src/duckdb/extension/json/json_functions/json_value.cpp index 82115403f..176b047ee 100644 --- a/src/duckdb/extension/json/json_functions/json_value.cpp +++ b/src/duckdb/extension/json/json_functions/json_value.cpp @@ -14,10 +14,12 @@ static void GetValueFunctionsInternal(ScalarFunctionSet &set, const LogicalType ScalarFunction index_fun({}, LogicalType::VARCHAR, ValueFunction, JSONReadFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); index_fun.GetSignature().AddParameter("json", input_type).AddParameter("index", LogicalType::BIGINT); + index_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); set.AddFunction(index_fun); ScalarFunction path_fun({}, LogicalType::VARCHAR, ValueFunction, JSONReadFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); path_fun.GetSignature().AddParameter("json", input_type).AddParameter("path", LogicalType::VARCHAR); + path_fun.SetResolveTypesCallback(JSONReadFunctionData::ResolveTypes); set.AddFunction(path_fun); ScalarFunction many_fun({}, LogicalType::LIST(LogicalType::VARCHAR), ValueManyFunction, JSONReadManyFunctionData::Bind, nullptr, JSONFunctionLocalState::Init); diff --git a/src/duckdb/extension/parquet/column_writer.cpp b/src/duckdb/extension/parquet/column_writer.cpp index e4e91204d..fbe5e7108 100644 --- a/src/duckdb/extension/parquet/column_writer.cpp +++ b/src/duckdb/extension/parquet/column_writer.cpp @@ -323,7 +323,8 @@ unique_ptr ColumnWriter::CreateWriterRecursive(ClientContext &cont } if (type.id() == LogicalTypeId::VARIANT) { - const bool is_shredded = shredding_type != nullptr; + const bool is_shredded = shredding_type && shredding_type->type.id() != LogicalTypeId::SQLNULL && + shredding_type->type.id() != LogicalTypeId::ANY; //! Build the child types for the Parquet VARIANT child_list_t child_types; @@ -331,10 +332,8 @@ unique_ptr ColumnWriter::CreateWriterRecursive(ClientContext &cont child_types.emplace_back("value", LogicalType::BLOB); if (is_shredded) { auto &typed_value_type = shredding_type->type; - if (typed_value_type.id() != LogicalTypeId::SQLNULL) { - child_types.emplace_back("typed_value", - VariantColumnWriter::TransformTypedValueRecursive(typed_value_type)); - } + child_types.emplace_back("typed_value", + VariantColumnWriter::TransformTypedValueRecursive(typed_value_type)); } //! Construct the column schema @@ -374,7 +373,7 @@ unique_ptr ColumnWriter::CreateWriterRecursive(ClientContext &cont max_define + 1, is_optional)); } return make_uniq(writer, std::move(variant_column), path_in_schema, - std::move(child_writers)); + std::move(child_writers), !shredding_type); } if (StructType::IsStruct(type.id()) || type.id() == LogicalTypeId::UNION) { diff --git a/src/duckdb/extension/parquet/include/parquet_writer.hpp b/src/duckdb/extension/parquet/include/parquet_writer.hpp index 2b81d8303..a151f7bf0 100644 --- a/src/duckdb/extension/parquet/include/parquet_writer.hpp +++ b/src/duckdb/extension/parquet/include/parquet_writer.hpp @@ -283,6 +283,7 @@ class ParquetWriter { void SetWrittenStatistics(CopyFunctionFileStatistics &written_stats); void FlushColumnStats(idx_t col_idx, duckdb_parquet::ColumnChunk &chunk, optional_ptr writer_stats); + void FlushNestedColumnStats(idx_t schema_idx, idx_t null_count, idx_t num_values); void InitializePreprocessing(unique_ptr &transform_data); void InitializeSchemaElements(); diff --git a/src/duckdb/extension/parquet/include/writer/list_column_writer.hpp b/src/duckdb/extension/parquet/include/writer/list_column_writer.hpp index c4db2c097..27ed70e15 100644 --- a/src/duckdb/extension/parquet/include/writer/list_column_writer.hpp +++ b/src/duckdb/extension/parquet/include/writer/list_column_writer.hpp @@ -22,6 +22,10 @@ class ListColumnWriterState : public ColumnWriterState { idx_t col_idx; unique_ptr child_state; idx_t parent_index = 0; + //! Null containers, excluding absent parents and empty containers + idx_t own_null_count = 0; + //! Containers with a present parent, including null and empty containers + idx_t num_values = 0; }; class ListColumnWriter : public ColumnWriter { diff --git a/src/duckdb/extension/parquet/include/writer/variant_column_writer.hpp b/src/duckdb/extension/parquet/include/writer/variant_column_writer.hpp index e8235e82d..ac57cf145 100644 --- a/src/duckdb/extension/parquet/include/writer/variant_column_writer.hpp +++ b/src/duckdb/extension/parquet/include/writer/variant_column_writer.hpp @@ -72,8 +72,9 @@ struct VariantAnalyzeSchemaState : public ParquetAnalyzeSchemaState { class VariantColumnWriter : public StructColumnWriter { public: VariantColumnWriter(ParquetWriter &writer, ParquetColumnSchema &&column_schema, vector schema_path_p, - vector> child_writers_p) - : StructColumnWriter(writer, std::move(column_schema), std::move(schema_path_p), std::move(child_writers_p)) { + vector> child_writers_p, bool auto_shred) + : StructColumnWriter(writer, std::move(column_schema), std::move(schema_path_p), std::move(child_writers_p)), + is_analyzed(!auto_shred) { } ~VariantColumnWriter() override = default; @@ -100,21 +101,21 @@ class VariantColumnWriter : public StructColumnWriter { vector> arguments; arguments.push_back(unique_ptr_cast(std::move(expr))); - BoundScalarFunction bound_func(GetTransformFunction()); + BoundScalarFunction bound_func(GetTransformFunction(true)); bound_func.SetReturnType(TransformedType()); return make_uniq(std::move(bound_func), std::move(arguments), nullptr); } public: - static ScalarFunction GetTransformFunction(); + static ScalarFunction GetTransformFunction(bool preserve_nulls = false); //! 'variant_bytes_to_variant': decode a binary Variant value (metadata followed by value) //! into a VARIANT. The inverse of 'variant_to_parquet_variant'. static ScalarFunction GetBytesToVariantFunction(); static LogicalType TransformTypedValueRecursive(const LogicalType &type); private: - //! Whether the schema of the variant has been analyzed already + //! Whether the schema has been analyzed or explicitly specified bool is_analyzed = false; ShreddingType analyzed_shredding_type; }; diff --git a/src/duckdb/extension/parquet/parquet_reader.cpp b/src/duckdb/extension/parquet/parquet_reader.cpp index b02f51839..c9e9af2fc 100644 --- a/src/duckdb/extension/parquet/parquet_reader.cpp +++ b/src/duckdb/extension/parquet/parquet_reader.cpp @@ -857,36 +857,30 @@ unique_ptr ParquetReader::CreateReaderRecursive(ClientContext &con } vector> children; children.resize(schema.children.size()); - if (schema.children.size() != 3 || !column_id.IsPushdownExtract()) { - for (idx_t child_index = 0; child_index < schema.children.size(); child_index++) { - children[child_index] = - CreateReaderRecursive(context, ColumnIndex(child_index), schema.children[child_index]); + if (schema.children.size() == 3 && column_id.IsPushdownExtract()) { + //! VARIANT is shredded - it has a 'typed_value' column + auto &typed_value_schema = schema.children[2]; + D_ASSERT(typed_value_schema.name == "typed_value"); + auto variant_stats = GetVariantStats(schema); + + if (variant_stats && IsFullyShredded(*variant_stats, column_id)) { + //! This field is present in 'typed_value' across all rowgroups + //! So we can directly push a struct extract into 'typed_value' and ignore 'value'+'metadata' + auto typed_value_index = CreateVariantTypedValuePushdown(typed_value_schema, column_id); + return CreateReaderRecursive(context, typed_value_index, typed_value_schema); } - return make_uniq(context, *this, schema, std::move(children)); } - //! VARIANT is shredded - it has a 'typed_value' column - //! And the extract is pushed down into the scan - auto &typed_value_schema = schema.children[2]; - D_ASSERT(typed_value_schema.name == "typed_value"); - auto variant_stats = GetVariantStats(schema); - - if (variant_stats && IsFullyShredded(*variant_stats, column_id)) { - //! This field is present in 'typed_value' across all rowgroups - //! So we can directly push a struct extract into 'typed_value' and ignore 'value'+'metadata' - auto typed_value_index = CreateVariantTypedValuePushdown(typed_value_schema, column_id); - return CreateReaderRecursive(context, typed_value_index, typed_value_schema); - } - for (idx_t child_index = 0; child_index < 3; child_index++) { + for (idx_t child_index = 0; child_index < schema.children.size(); child_index++) { children[child_index] = CreateReaderRecursive(context, ColumnIndex(child_index), schema.children[child_index]); } // Create the VariantColumnReader with the column index, so we can perform the extract at Read auto column_reader = make_uniq(context, *this, schema, std::move(children), column_id); - const auto &scan_type = column_id.GetScanType(); - if (scan_type.id() == LogicalTypeId::VARIANT) { + if (!column_id.IsPushdownExtract() || column_id.GetScanType().id() == LogicalTypeId::VARIANT) { return std::move(column_reader); } + const auto &scan_type = column_id.GetScanType(); auto input = make_uniq(LogicalType::VARIANT(), 0ULL); auto cast_expression = BoundCastExpression::AddCastToType(context, std::move(input), scan_type); auto expr_schema = make_uniq(ParquetColumnSchema::FromParentSchema( diff --git a/src/duckdb/extension/parquet/parquet_writer.cpp b/src/duckdb/extension/parquet/parquet_writer.cpp index 07672203c..3d0700ec9 100644 --- a/src/duckdb/extension/parquet/parquet_writer.cpp +++ b/src/duckdb/extension/parquet/parquet_writer.cpp @@ -479,7 +479,14 @@ struct ColumnStatsUnifier { class ParquetStatsAccumulator { public: + struct NestedColumnStats { + string column_name; + idx_t null_count = 0; + idx_t num_values = 0; + }; + vector> stats_unifiers; + map nested_stats; }; ParquetWriteTransformData::ParquetWriteTransformData(ClientContext &context, const vector &types, @@ -1189,7 +1196,7 @@ static bool IsVariantMetadataField(const ColumnWriter &writer) { return name == "metadata"; } -static void GetStatsUnifier(const ColumnWriter &column_writer, vector> &unifiers, +static void GetStatsUnifier(const ColumnWriter &column_writer, ParquetStatsAccumulator &accumulator, string base_name = string()) { auto &schema = column_writer.Schema(); if (schema.repetition_type != duckdb_parquet::FieldRepetitionType::REPEATED) { @@ -1209,11 +1216,25 @@ static void GetStatsUnifier(const ColumnWriter &column_writer, vectorCast(); unifier->variant_type = variant_writer.TransformedType().ToString(); } - unifiers.push_back(std::move(unifier)); + accumulator.stats_unifiers.push_back(std::move(unifier)); return; } + if (schema.repetition_type != duckdb_parquet::FieldRepetitionType::REPEATED) { + accumulator.nested_stats[column_writer.SchemaIndex()].column_name = base_name; + } for (auto &child_writer : children) { - GetStatsUnifier(*child_writer, unifiers, base_name); + GetStatsUnifier(*child_writer, accumulator, base_name); + } +} + +void ParquetWriter::FlushNestedColumnStats(idx_t schema_idx, idx_t null_count, idx_t num_values) { + if (!written_stats) { + return; + } + auto entry = stats_accumulator->nested_stats.find(schema_idx); + if (entry != stats_accumulator->nested_stats.end()) { + entry->second.null_count += null_count; + entry->second.num_values += num_values; } } @@ -1267,6 +1288,14 @@ void ParquetWriter::FlushColumnStats(idx_t col_idx, duckdb_parquet::ColumnChunk void ParquetWriter::GatherWrittenStatistics() { written_stats->row_count = file_meta_data.num_rows; + for (auto &entry : stats_accumulator->nested_stats) { + auto &stats = entry.second; + case_insensitive_map_t column_stats; + column_stats["null_count"] = Value::UBIGINT(stats.null_count); + column_stats["num_values"] = Value::UBIGINT(stats.num_values); + written_stats->column_statistics.emplace(stats.column_name, std::move(column_stats)); + } + // finalize the min/max values and write to column stats for (idx_t c = 0; c < stats_accumulator->stats_unifiers.size(); c++) { auto &stats_unifier = stats_accumulator->stats_unifiers[c]; @@ -1370,7 +1399,7 @@ void ParquetWriter::InitializeStatsUnifiers() { return; } for (auto &column_writer : column_writers) { - GetStatsUnifier(*column_writer, stats_accumulator->stats_unifiers); + GetStatsUnifier(*column_writer, *stats_accumulator); } } diff --git a/src/duckdb/extension/parquet/writer/array_column_writer.cpp b/src/duckdb/extension/parquet/writer/array_column_writer.cpp index b4bd32ab9..14afec541 100644 --- a/src/duckdb/extension/parquet/writer/array_column_writer.cpp +++ b/src/duckdb/extension/parquet/writer/array_column_writer.cpp @@ -61,10 +61,13 @@ void ArrayColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *p if (parent && parent->definition_levels[parent_index] != PARQUET_DEFINE_VALID) { WriteArrayState(state, array_size, first_repeat_level, parent->definition_levels[parent_index]); } else if (validity.RowIsValid(vector_index)) { + state.num_values++; // push the repetition levels WriteArrayState(state, array_size, first_repeat_level, PARQUET_DEFINE_VALID); } else { //! Produce a null + state.own_null_count++; + state.num_values++; WriteArrayState(state, array_size, first_repeat_level, MaxDefine() - 1); } vector_index++; diff --git a/src/duckdb/extension/parquet/writer/list_column_writer.cpp b/src/duckdb/extension/parquet/writer/list_column_writer.cpp index 88c5dbf92..567279f77 100644 --- a/src/duckdb/extension/parquet/writer/list_column_writer.cpp +++ b/src/duckdb/extension/parquet/writer/list_column_writer.cpp @@ -19,6 +19,7 @@ #include "duckdb/common/vector.hpp" #include "duckdb/common/vector/flat_vector.hpp" #include "parquet_column_schema.hpp" +#include "parquet_writer.hpp" #include "parquet_types.h" namespace duckdb { @@ -109,6 +110,7 @@ void ListColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *pa state.repetition_levels.push_back(first_repeat_level); state.is_empty.push_back(true); } else if (validity.RowIsValid(vector_index)) { + state.num_values++; // push the repetition levels if (list_data[vector_index].length == 0) { state.definition_levels.push_back(MaxDefine()); @@ -127,6 +129,8 @@ void ListColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *pa if (!can_have_nulls) { throw IOException("Parquet writer: map key column is not allowed to contain NULL values"); } + state.own_null_count++; + state.num_values++; state.definition_levels.push_back(MaxDefine() - 1); state.repetition_levels.push_back(first_repeat_level); state.is_empty.push_back(true); @@ -164,6 +168,7 @@ void ListColumnWriter::PrepareWrite(ColumnWriterState &state_p) { void ListColumnWriter::FinalizeWrite(ColumnWriterState &state_p) { auto &state = state_p.Cast(); + writer.FlushNestedColumnStats(SchemaIndex(), state.own_null_count, state.num_values); GetChildWriter().FinalizeWrite(*state.child_state); } diff --git a/src/duckdb/extension/parquet/writer/struct_column_writer.cpp b/src/duckdb/extension/parquet/writer/struct_column_writer.cpp index d16413a66..3207cc3eb 100644 --- a/src/duckdb/extension/parquet/writer/struct_column_writer.cpp +++ b/src/duckdb/extension/parquet/writer/struct_column_writer.cpp @@ -15,6 +15,7 @@ #include "duckdb/common/vector.hpp" #include "duckdb/common/vector/flat_vector.hpp" #include "parquet_column_schema.hpp" +#include "parquet_writer.hpp" #include "parquet_types.h" namespace duckdb { @@ -34,6 +35,8 @@ class StructColumnWriterState : public ColumnWriterState { duckdb_parquet::RowGroup &row_group; idx_t col_idx; vector> child_states; + //! Null structs before PrepareWrite adds ancestor nulls to null_count + idx_t own_null_count = 0; }; unique_ptr StructColumnWriter::InitializeWriteState(duckdb_parquet::RowGroup &row_group) { @@ -93,6 +96,7 @@ void StructColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState * } HandleRepeatLevels(state_p, parent, count); HandleDefineLevels(state_p, parent, validity, count, PARQUET_DEFINE_VALID, MaxDefine() - 1); + state.own_null_count = state.null_count; auto &child_vectors = StructVector::GetEntries(vector); for (idx_t child_idx = 0; child_idx < child_writers.size(); child_idx++) { child_writers[child_idx]->Prepare(*state.child_states[child_idx], &state_p, child_vectors[child_idx], count, @@ -126,6 +130,8 @@ void StructColumnWriter::PrepareWrite(ColumnWriterState &state_p) { void StructColumnWriter::FinalizeWrite(ColumnWriterState &state_p) { auto &state = state_p.Cast(); + auto num_values = state.definition_levels.size() - state.parent_null_count; + writer.FlushNestedColumnStats(SchemaIndex(), state.own_null_count, num_values); for (idx_t child_idx = 0; child_idx < child_writers.size(); child_idx++) { child_writers[child_idx]->FinalizeWrite(*state.child_states[child_idx]); } diff --git a/src/duckdb/extension/parquet/writer/variant/convert_variant.cpp b/src/duckdb/extension/parquet/writer/variant/convert_variant.cpp index d7bce7dfc..55b48c86b 100644 --- a/src/duckdb/extension/parquet/writer/variant/convert_variant.cpp +++ b/src/duckdb/extension/parquet/writer/variant/convert_variant.cpp @@ -12,6 +12,8 @@ #include "duckdb/common/types.hpp" #include "duckdb/common/types/data_chunk.hpp" #include "duckdb/common/types/vector.hpp" +#include "duckdb/common/vector/flat_vector.hpp" +#include "duckdb/common/vector/vector_iterator.hpp" #include "duckdb/function/scalar_function.hpp" #include "duckdb/planner/expression_binder.hpp" @@ -100,7 +102,7 @@ LogicalType VariantColumnWriter::TransformTypedValueRecursive(const LogicalType for (auto &entry : child_types) { child_list_t child_children; child_children.emplace_back("value", LogicalType::BLOB); - if (entry.second.id() != LogicalTypeId::VARIANT) { + if (entry.second.id() != LogicalTypeId::VARIANT && entry.second.id() != LogicalTypeId::SQLNULL) { child_children.emplace_back("typed_value", TransformTypedValueRecursive(entry.second)); } replaced_types.emplace_back(entry.first, LogicalType::STRUCT(child_children)); @@ -111,7 +113,7 @@ LogicalType VariantColumnWriter::TransformTypedValueRecursive(const LogicalType auto &child_type = ListType::GetChildType(type); child_list_t replaced_types; replaced_types.emplace_back("value", LogicalType::BLOB); - if (child_type.id() != LogicalTypeId::VARIANT) { + if (child_type.id() != LogicalTypeId::VARIANT && child_type.id() != LogicalTypeId::SQLNULL) { replaced_types.emplace_back("typed_value", TransformTypedValueRecursive(child_type)); } return LogicalType::LIST(LogicalType::STRUCT(replaced_types)); @@ -170,9 +172,23 @@ static void ToParquetVariantFunction(DataChunk &input, ExpressionState &state, V ParquetVariantConversion::ToParquetVariant(input.data[0], input.size(), result); } -ScalarFunction VariantColumnWriter::GetTransformFunction() { - ScalarFunction transform("variant_to_parquet_variant", {}, LogicalType::ANY, ToParquetVariantFunction, - BindTransform); +static void ToParquetVariantWriteFunction(DataChunk &input, ExpressionState &state, Vector &result) { + ToParquetVariantFunction(input, state, result); + // Preserve SQL NULL at the VARIANT group. + auto validity = input.data[0].Validity(); + if (validity.CannotHaveNull()) { + return; + } + for (idx_t i = 0; i < input.size(); i++) { + if (!validity.IsValid(i)) { + FlatVector::SetNull(result, i, true); + } + } +} + +ScalarFunction VariantColumnWriter::GetTransformFunction(bool preserve_nulls) { + auto function = preserve_nulls ? ToParquetVariantWriteFunction : ToParquetVariantFunction; + ScalarFunction transform("variant_to_parquet_variant", {}, LogicalType::ANY, function, BindTransform); transform.GetSignature().AddParameter("variant", LogicalType::VARIANT()); transform.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); // throws for values that are out of range for the parquet variant encoding diff --git a/src/duckdb/generated_extension_loader_package_build.cpp b/src/duckdb/generated_extension_loader_package_build.cpp index b26cae3da..88776d2c9 100644 --- a/src/duckdb/generated_extension_loader_package_build.cpp +++ b/src/duckdb/generated_extension_loader_package_build.cpp @@ -45,7 +45,7 @@ int32_t duckdb_extension_core_functions_describe(duckdb_extension_descriptor *de descriptor->version = 1; descriptor->name = "core_functions"; descriptor->extension_version = EXT_VERSION_CORE_FUNCTIONS; - descriptor->api_version = "v2.0.0-alpha44738"; + descriptor->api_version = "v2.0.0-alpha45672"; descriptor->entry_cpp = (void (*)(void))core_functions_duckdb_cpp_init; return 0; } @@ -78,7 +78,7 @@ int32_t duckdb_extension_parquet_describe(duckdb_extension_descriptor *descripto descriptor->version = 1; descriptor->name = "parquet"; descriptor->extension_version = EXT_VERSION_PARQUET; - descriptor->api_version = "v2.0.0-alpha44738"; + descriptor->api_version = "v2.0.0-alpha45672"; descriptor->entry_cpp = (void (*)(void))parquet_duckdb_cpp_init; return 0; } @@ -111,7 +111,7 @@ int32_t duckdb_extension_icu_describe(duckdb_extension_descriptor *descriptor) { descriptor->version = 1; descriptor->name = "icu"; descriptor->extension_version = EXT_VERSION_ICU; - descriptor->api_version = "v2.0.0-alpha44738"; + descriptor->api_version = "v2.0.0-alpha45672"; descriptor->entry_cpp = (void (*)(void))icu_duckdb_cpp_init; return 0; } @@ -144,7 +144,7 @@ int32_t duckdb_extension_json_describe(duckdb_extension_descriptor *descriptor) descriptor->version = 1; descriptor->name = "json"; descriptor->extension_version = EXT_VERSION_JSON; - descriptor->api_version = "v2.0.0-alpha44738"; + descriptor->api_version = "v2.0.0-alpha45672"; descriptor->entry_cpp = (void (*)(void))json_duckdb_cpp_init; return 0; } diff --git a/src/duckdb/src/catalog/catalog_set.cpp b/src/duckdb/src/catalog/catalog_set.cpp index 79249aeae..44c9bb700 100644 --- a/src/duckdb/src/catalog/catalog_set.cpp +++ b/src/duckdb/src/catalog/catalog_set.cpp @@ -339,13 +339,12 @@ bool CatalogSet::AlterEntry(CatalogTransaction transaction, const Identifier &na // If this ALTER produced a new DuckTableEntry, refresh the LocalTableStorage's table_entry // pointer so that commit-time Flush pushes an AppendInfo referencing the current DuckTableEntry. if (transaction.context && value->type == CatalogType::TABLE_ENTRY) { - auto &tce = value->Cast(); - if (tce.IsDuckTable()) { - auto &new_entry = tce.Cast(); - auto &new_storage = new_entry.GetStorage(); + auto new_entry = value->Cast().TryGetDuckTableEntry(); + if (new_entry) { + auto &new_storage = new_entry->GetStorage(); auto lstorage = LocalStorage::Get(*transaction.context, new_storage.db).GetStorage(new_storage); if (lstorage) { - lstorage->table_entry = &new_entry; + lstorage->table_entry = new_entry; } } } diff --git a/src/duckdb/src/common/arrow/arrow_type_extension.cpp b/src/duckdb/src/common/arrow/arrow_type_extension.cpp index 71f9bec85..a41f8dfec 100644 --- a/src/duckdb/src/common/arrow/arrow_type_extension.cpp +++ b/src/duckdb/src/common/arrow/arrow_type_extension.cpp @@ -650,9 +650,7 @@ struct ArrowVariant { Vector transformed(StorageType(), count); ParquetVariantConversion::ToParquetVariant(source, count, transformed); - // The transform encodes a SQL NULL as a Variant-null VALUE (the parquet writer's convention, where - // nullability lives at the column level) — over Arrow the SQL NULL must stay a top-level null, so - // the mask comes from the SOURCE's validity. + // The transform encodes SQL NULL as a Variant-null VALUE; Arrow needs the source's top-level validity. UnifiedVectorFormat source_format; source.ToUnifiedFormat(source_format); bool has_nulls = false; diff --git a/src/duckdb/src/common/multi_file/multi_file_reader.cpp b/src/duckdb/src/common/multi_file/multi_file_reader.cpp index 070fda5e9..0f102bf5e 100644 --- a/src/duckdb/src/common/multi_file/multi_file_reader.cpp +++ b/src/duckdb/src/common/multi_file/multi_file_reader.cpp @@ -1,5 +1,8 @@ #include "duckdb/common/multi_file/multi_file_reader.hpp" #include "duckdb/function/partition_stats.hpp" +#include "duckdb/storage/statistics/numeric_stats.hpp" +#include "duckdb/storage/statistics/struct_stats.hpp" +#include "duckdb/storage/statistics/list_stats.hpp" #include "duckdb/common/exception.hpp" #include "duckdb/common/hive_partitioning.hpp" @@ -95,7 +98,8 @@ void MultiFileReader::AddParameters(TableFunction &table_function, MultiFilePara .Add("hive_types", LogicalType::ANY) .Add("hive_types_autocast", LogicalType::BOOLEAN) .Add("schema", LogicalTypeId::ANY) - .Add("file_row_number", LogicalType::BOOLEAN); + .Add("file_row_number", LogicalType::BOOLEAN) + .Add("column_statistics", LogicalTypeId::ANY); } options.Add("allow_empty", LogicalType::BOOLEAN); }; @@ -419,6 +423,8 @@ bool MultiFileReader::ParseOption(const Identifier &key, const Value &val, Multi throw InvalidInputException("Cannot use NULL as argument for %s", key); } options.allow_empty = BooleanValue::Get(val); + } else if (key == "column_statistics") { + options.SetColumnStatistics(key, val); } else if (key == "maximum_sample_files") { options.SetMaximumSampleFiles(key, val); } else if (key == "hive_types_autocast" || key == "hive_type_autocast") { @@ -1244,6 +1250,227 @@ bool MultiFileOptions::TrySetMaximumSampleFiles(const Value &val) { return true; } +void MultiFileOptions::SetColumnStatistics(const Identifier &key, const Value &val) { + if (val.IsNull()) { + column_statistics = Value(); + return; + } + // The shape COPY ... (RETURN_STATS) reports column statistics in, so what one COPY returns can be handed to the + // next scan as it is. Anything that casts to it (a MAP literal of other value types, say) is taken. + auto target = LogicalType::MAP(LogicalType::VARCHAR, LogicalType::MAP(LogicalType::VARCHAR, LogicalType::VARCHAR)); + string error; + auto cast = val.DefaultTryCastAs(target, &error); + if (!cast) { + throw InvalidInputException( + "'%s' must be a MAP of column name to a MAP of statistic name ('min', 'max', 'count', 'null_count', " + "'distinct_count') to its value, but '%s' was provided", + key, val.type().ToString()); + } + column_statistics = std::move(*cast); +} + +// A key of the column_statistics option names a column of the scan - the way RETURN_STATS names what it wrote: every +// component of the path quoted, "s"."x" for field x of struct column s, "l"."element" for the elements of list column +// l, "m"."key" / "m"."value" for a map. A key without quotes is a plain top-level column name. +static vector ParseColumnStatisticsKey(const string &key) { + vector path; + if (key.find('"') == string::npos) { + path.push_back(key); + return path; + } + idx_t pos = 0; + while (pos < key.size()) { + if (key[pos] != '"') { + throw InvalidInputException( + "column_statistics: key '%s' is not a quoted column path (\"column\".\"field\")", key); + } + string component; + pos++; + while (true) { + if (pos >= key.size()) { + throw InvalidInputException("column_statistics: key '%s' has an unterminated quote", key); + } + if (key[pos] == '"') { + if (pos + 1 < key.size() && key[pos + 1] == '"') { + component += '"'; + pos += 2; + continue; + } + pos++; + break; + } + component += key[pos++]; + } + path.push_back(std::move(component)); + if (pos < key.size()) { + if (key[pos] != '.') { + throw InvalidInputException("column_statistics: key '%s' has '%c' where a '.' or the end was expected", + key, key[pos]); + } + pos++; + } + } + return path; +} + +// Apply the statistics given for one (possibly nested) column to the statistics object of that column. +static void ApplyColumnStatistics(BaseStatistics &result, const Value &given, const string &key) { + Value min, max; + optional count, null_count, distinct_count; + for (auto &stat : MapValue::GetChildren(given)) { + auto &stat_key_value = StructValue::GetChildren(stat); + if (stat_key_value[0].IsNull() || stat_key_value[1].IsNull()) { + continue; + } + auto stat_name = StringUtil::Lower(StringValue::Get(stat_key_value[0])); + auto &stat_value = stat_key_value[1]; + if (stat_name == "min") { + min = stat_value; + } else if (stat_name == "max") { + max = stat_value; + } else if (stat_name == "count" || stat_name == "null_count" || stat_name == "distinct_count") { + string error; + auto parsed = stat_value.DefaultTryCastAs(LogicalType::UBIGINT, &error); + if (!parsed) { + throw InvalidInputException("column_statistics: '%s' of '%s' must be a count, got '%s'", stat_name, key, + stat_value.ToString()); + } + auto parsed_count = UBigIntValue::Get(*parsed); + if (stat_name == "count") { + count = parsed_count; + } else if (stat_name == "null_count") { + null_count = parsed_count; + } else { + distinct_count = parsed_count; + } + } + // other statistics a writer reports (column_size_bytes, has_nan, ...) say nothing the optimizer uses + } + // Only what is given is claimed: the rest is left unknown + if (null_count.has_value()) { + if (*null_count == 0) { + result.Set(StatsInfo::CANNOT_HAVE_NULL_VALUES); + } + if (count.has_value() && *null_count >= *count) { + result.Set(StatsInfo::CANNOT_HAVE_VALID_VALUES); + } + } + bool has_values = !count.has_value() || !null_count.has_value() || *null_count < *count; + auto &type = result.GetType(); + if (has_values && !min.IsNull() && !max.IsNull() && + BaseStatistics::GetStatsType(type) == StatisticsType::NUMERIC_STATS) { + NumericStats::SetMin(result, min.DefaultCastAs(type, true)); + NumericStats::SetMax(result, max.DefaultCastAs(type, true)); + } + if (distinct_count.has_value() && *distinct_count > 0) { + result.SetDistinctCount(*distinct_count); + } +} + +// The statistics object a path below a column's leads to, following the RETURN_STATS naming of nested columns; +// nullptr when the path names nothing of the type. +static optional_ptr DescendColumnStatistics(BaseStatistics &stats, const vector &path, + idx_t depth) { + if (depth >= path.size()) { + return &stats; + } + auto &type = stats.GetType(); + auto &component = path[depth]; + switch (type.id()) { + case LogicalTypeId::STRUCT: { + for (idx_t i = 0; i < StructType::GetChildCount(type); i++) { + if (StructType::GetChildName(type, i) == component) { + return DescendColumnStatistics(StructStats::GetChildStats(stats, i), path, depth + 1); + } + } + return nullptr; + } + case LogicalTypeId::LIST: + case LogicalTypeId::ARRAY: + if (component == "element") { + return DescendColumnStatistics(ListStats::GetChildStats(stats), path, depth + 1); + } + return nullptr; + case LogicalTypeId::MAP: { + // a map's statistics are those of a list of key/value structs + auto &entry_stats = ListStats::GetChildStats(stats); + if (component == "key") { + return DescendColumnStatistics(StructStats::GetChildStats(entry_stats, 0), path, depth + 1); + } + if (component == "value") { + return DescendColumnStatistics(StructStats::GetChildStats(entry_stats, 1), path, depth + 1); + } + return nullptr; + } + default: + return nullptr; + } +} + +void MultiFileOptions::VerifyColumnStatistics(const vector &names, const vector &types) const { + if (column_statistics.IsNull()) { + return; + } + for (auto &entry : MapValue::GetChildren(column_statistics)) { + auto &key_value = StructValue::GetChildren(entry); + if (key_value[0].IsNull() || key_value[1].IsNull()) { + continue; + } + auto &key = StringValue::Get(key_value[0]); + auto path = ParseColumnStatisticsKey(key); + optional_idx column; + for (idx_t i = 0; i < names.size(); i++) { + if (names[i] == Identifier(path[0])) { + column = i; + break; + } + } + if (!column.IsValid()) { + throw InvalidInputException("column_statistics: '%s' names no column of the scan", key); + } + // Build the statistics once here, so a key that names nothing of the column, a count that is not one or a + // bound that does not cast to the column's type fails at bind rather than when the optimizer first asks + auto stats = BaseStatistics::CreateUnknown(types[column.GetIndex()]); + auto target = DescendColumnStatistics(stats, path, 1); + if (!target) { + throw InvalidInputException("column_statistics: '%s' names no part of column \"%s\" of type %s", key, + path[0], types[column.GetIndex()].ToString()); + } + ApplyColumnStatistics(*target, key_value[1], key); + } +} + +unique_ptr MultiFileOptions::GetColumnStatistics(const Identifier &column_name, + const LogicalType &type) const { + if (column_statistics.IsNull()) { + return nullptr; + } + unique_ptr result; + for (auto &entry : MapValue::GetChildren(column_statistics)) { + auto &key_value = StructValue::GetChildren(entry); + if (key_value[0].IsNull() || key_value[1].IsNull()) { + continue; + } + auto &key = StringValue::Get(key_value[0]); + auto path = ParseColumnStatisticsKey(key); + if (Identifier(path[0]) != column_name) { + continue; + } + if (!result) { + // Nothing is claimed about the column, or any part of it, that the option does not say + result = BaseStatistics::CreateUnknown(type).ToUnique(); + } + auto target = DescendColumnStatistics(*result, path, 1); + if (!target) { + // checked at bind, see VerifyColumnStatistics + throw InternalException("column_statistics: '%s' names no part of column \"%s\"", key, + column_name.GetIdentifierName()); + } + ApplyColumnStatistics(*target, key_value[1], key); + } + return result; +} + bool MultiFileOptions::AnySet() const { return filename || hive_partitioning || union_by_name || !schema.empty(); } diff --git a/src/duckdb/src/common/multi_file/table_function_multi_file.cpp b/src/duckdb/src/common/multi_file/table_function_multi_file.cpp index 6ee23876b..589c678f9 100644 --- a/src/duckdb/src/common/multi_file/table_function_multi_file.cpp +++ b/src/duckdb/src/common/multi_file/table_function_multi_file.cpp @@ -593,13 +593,11 @@ void TableFunctionMultiFileWrapper::BindReader(ClientContext &context, vector -TableFunctionMultiFileWrapper::InitializeGlobalState(ClientContext &, MultiFileBindData &bind_data, +TableFunctionMultiFileWrapper::InitializeGlobalState(ClientContext &, MultiFileBindData &, MultiFileGlobalState &global_state) { auto result = make_uniq(); - // the wrapped function is told which file of this scan it reads, so that a function that reports per-file - // information (like the CSV rejects tables) can tell the files of a scan apart from those of another scan result->op = global_state.op; - result->file_count = bind_data.file_list->GetTotalFileCount(); + result->file_count = global_state.file_list.GetTotalFileCount(); return std::move(result); } diff --git a/src/duckdb/src/common/operator/cast_operators.cpp b/src/duckdb/src/common/operator/cast_operators.cpp index be938affe..1de07b58f 100644 --- a/src/duckdb/src/common/operator/cast_operators.cpp +++ b/src/duckdb/src/common/operator/cast_operators.cpp @@ -1845,9 +1845,20 @@ hugeint_t CastFromUHugeintToUUID::Operation(uhugeint_t input) { //===--------------------------------------------------------------------===// template <> bool TryCastToGeometry::Operation(string_t input, string_t &result, Vector &result_vector, CastParameters ¶meters) { - // Pass the query location of the cast source if available. - return Geometry::FromString(input, result, StringVector::GetStringHeap(result_vector), parameters.strict, - parameters.cast_source ? parameters.cast_source->GetQueryLocation() : QueryLocation()); + auto &heap = StringVector::GetStringHeap(result_vector); + if (!parameters.error_message) { + // Pass the query location of the cast source if available. + return Geometry::FromString(input, result, heap, parameters.strict, + parameters.cast_source ? parameters.cast_source->GetQueryLocation() + : QueryLocation()); + } + // the caller collects errors (e.g. TRY_CAST) - report malformed WKT as a cast error + string error_message; + if (Geometry::TryFromString(input, result, heap, error_message)) { + return true; + } + HandleCastError::AssignError(error_message, parameters); + return false; } //===--------------------------------------------------------------------===// diff --git a/src/duckdb/src/common/types/geometry.cpp b/src/duckdb/src/common/types/geometry.cpp index a225abc2c..7dcf75da2 100644 --- a/src/duckdb/src/common/types/geometry.cpp +++ b/src/duckdb/src/common/types/geometry.cpp @@ -267,38 +267,38 @@ class TextReader { return false; // not matched } - void Match(const char *str) { - if (!TryMatch(str)) { - // Check if this would go EOF - if (pos + strlen(str) >= end) { - throw MakeError("Expected '%s' but got end of input", str); - } - - throw MakeError("Expected '%s' but got '%c'", str, *pos); + bool Match(const char *str) { + if (TryMatch(str)) { + return true; + } + // Check if this would go EOF + if (pos + strlen(str) >= end) { + return SetError("Expected '%s' but got end of input", str); } + return SetError("Expected '%s' but got '%c'", str, *pos); } - void Match(char c) { - if (!TryMatch(c)) { - if (pos >= end) { - throw MakeError("Expected '%c' but got end of input", c); - } - throw MakeError("Expected '%c' but got '%c'", c, *pos); + bool Match(char c) { + if (TryMatch(c)) { + return true; + } + if (pos >= end) { + return SetError("Expected '%c' but got end of input", c); } + return SetError("Expected '%c' but got '%c'", c, *pos); } - double MatchNumber() { + bool MatchNumber(double &num) { // Now use fast_float to parse the number - double num; const auto res = duckdb_fast_float::from_chars(pos, end, num); if (res.ec != std::errc()) { - throw MakeError("Expected number"); + return SetError("Expected number"); } pos = res.ptr; // update position to the end of the parsed number SkipWhitespace(); // remove trailing whitespace - return num; // return the parsed number + return true; } idx_t GetPosition() const { @@ -314,18 +314,25 @@ class TextReader { pos = beg; } + //! Records a parse error at the current position, always returns false template - InvalidInputException MakeError(const char *raw_msg, ARGS... args) const { - const auto byte_offset = UnsafeNumericCast(pos - beg); - auto msg = StringUtil::Format("Failed to parse geometry: %s at offset %lu", - StringUtil::Format(raw_msg, args...), byte_offset); + bool SetError(const char *raw_msg, ARGS... args) { + error_message = StringUtil::Format(raw_msg, args...); + error_offset = UnsafeNumericCast(pos - beg); + return false; + } + + string GetErrorMessage() const { + return StringUtil::Format("Failed to parse geometry: %s at offset %lu", error_message, error_offset); + } + + InvalidInputException MakeError() const { if (query_location.IsValid()) { // point at the specific byte within the WKT literal where parsing failed - const QueryLocation expr_location(query_location.Start() + byte_offset, 0); - return InvalidInputException(Exception::InitializeExtraInfo(expr_location), msg); - } else { - return InvalidInputException(msg); + const QueryLocation expr_location(query_location.Start() + error_offset, 0); + return InvalidInputException(Exception::InitializeExtraInfo(expr_location), GetErrorMessage()); } + return InvalidInputException(GetErrorMessage()); } void SetQueryLocation(QueryLocation location) { @@ -343,11 +350,14 @@ class TextReader { const char *pos; const char *end; QueryLocation query_location; + string error_message; + idx_t error_offset = 0; }; -void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, bool parent_has_z, bool parent_has_m) { +//! Returns false if the text is not valid WKT, the error is recorded in the reader +bool FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, bool parent_has_z, bool parent_has_m) { if (depth == Geometry::MAX_RECURSION_DEPTH) { - throw reader.MakeError("Geometry string exceeds maximum recursion depth of %d", Geometry::MAX_RECURSION_DEPTH); + return reader.SetError("Geometry string exceeds maximum recursion depth of %d", Geometry::MAX_RECURSION_DEPTH); } // Skip leading whitespace @@ -355,9 +365,16 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, // EWKT dialect (ignore SRID if present) if (reader.TryMatch("SRID")) { - reader.Match('='); - reader.MatchNumber(); - reader.Match(';'); + if (!reader.Match('=')) { + return false; + } + double srid; + if (!reader.MatchNumber(srid)) { + return false; + } + if (!reader.Match(';')) { + return false; + } } GeometryType type = GeometryType::INVALID; @@ -377,7 +394,7 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, } else if (reader.TryMatch("geometrycollection")) { type = GeometryType::GEOMETRYCOLLECTION; } else { - throw reader.MakeError("Unknown geometry type"); + return reader.SetError("Unknown geometry type"); } const auto has_z = reader.TryMatch("z"); @@ -386,7 +403,7 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, const auto is_empty = reader.TryMatch("empty"); if ((depth != 0) && ((parent_has_z != has_z) || (parent_has_m != has_m))) { - throw reader.MakeError("Geometry has inconsistent Z/M dimensions"); + return reader.SetError("Geometry has inconsistent Z/M dimensions"); } // How many dimensions does this geometry have? @@ -406,12 +423,19 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, writer.Write(std::numeric_limits::quiet_NaN()); } } else { - reader.Match('('); + if (!reader.Match('(')) { + return false; + } for (uint32_t d_idx = 0; d_idx < dims; d_idx++) { - auto value = reader.MatchNumber(); + double value; + if (!reader.MatchNumber(value)) { + return false; + } writer.Write(value); } - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } } } break; case GeometryType::LINESTRING: { @@ -420,15 +444,22 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, break; } auto vert_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { for (uint32_t d_idx = 0; d_idx < dims; d_idx++) { - auto value = reader.MatchNumber(); + double value; + if (!reader.MatchNumber(value)) { + return false; + } writer.Write(value); } vert_count.value++; } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(vert_count); } break; case GeometryType::POLYGON: { @@ -437,22 +468,33 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, break; // No rings in empty polygon } auto ring_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { auto vert_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { for (uint32_t d_idx = 0; d_idx < dims; d_idx++) { - auto value = reader.MatchNumber(); + double value; + if (!reader.MatchNumber(value)) { + return false; + } writer.Write(value); } vert_count.value++; } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(vert_count); ring_count.value++; } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(ring_count); } break; case GeometryType::MULTIPOINT: { @@ -461,7 +503,9 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, break; } auto part_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { bool has_paren = reader.TryMatch('('); @@ -476,25 +520,34 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, } } else { for (uint32_t d_idx = 0; d_idx < dims; d_idx++) { - auto value = reader.MatchNumber(); + double value; + if (!reader.MatchNumber(value)) { + return false; + } writer.Write(value); } } if (has_paren) { - reader.Match(')'); // Match the closing parenthesis if it was opened + if (!reader.Match(')')) { // Match the closing parenthesis if it was opened + return false; + } } part_count.value++; } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(part_count); } break; case GeometryType::MULTILINESTRING: { if (is_empty) { writer.Write(0); - return; // No linestrings in empty multilinestring + return true; // No linestrings in empty multilinestring } auto part_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { const auto part_meta = static_cast(GeometryType::LINESTRING) + (has_z ? 1000 : 0) + (has_m ? 2000 : 0); @@ -506,20 +559,29 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, part_count.value++; } else { auto vert_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { for (uint32_t d_idx = 0; d_idx < dims; d_idx++) { - auto value = reader.MatchNumber(); + double value; + if (!reader.MatchNumber(value)) { + return false; + } writer.Write(value); } vert_count.value++; } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(vert_count); part_count.value++; } } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(part_count); } break; case GeometryType::MULTIPOLYGON: { @@ -528,7 +590,9 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, break; } auto part_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { const auto part_meta = static_cast(GeometryType::POLYGON) + (has_z ? 1000 : 0) + (has_m ? 2000 : 0); @@ -540,27 +604,40 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, part_count.value++; } else { auto ring_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { auto vert_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { for (uint32_t d_idx = 0; d_idx < dims; d_idx++) { - auto value = reader.MatchNumber(); + double value; + if (!reader.MatchNumber(value)) { + return false; + } writer.Write(value); } vert_count.value++; } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(vert_count); ring_count.value++; } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(ring_count); part_count.value++; } } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(part_count); } break; case GeometryType::GEOMETRYCOLLECTION: { @@ -569,18 +646,25 @@ void FromStringRecursive(TextReader &reader, BlobWriter &writer, uint32_t depth, break; } auto part_count = writer.Reserve(); - reader.Match('('); + if (!reader.Match('(')) { + return false; + } do { // Recursively parse the geometry inside the collection - FromStringRecursive(reader, writer, depth + 1, has_z, has_m); + if (!FromStringRecursive(reader, writer, depth + 1, has_z, has_m)) { + return false; + } part_count.value++; } while (reader.TryMatch(',')); - reader.Match(')'); + if (!reader.Match(')')) { + return false; + } writer.Write(part_count); } break; default: - throw reader.MakeError("Unknown geometry type %d", static_cast(type)); + return reader.SetError("Unknown geometry type %d", static_cast(type)); } + return true; } void ToStringRecursive(BlobReader &reader, TextWriter &writer, idx_t depth, bool parent_has_z, bool parent_has_m) { @@ -1125,27 +1209,47 @@ void Geometry::ToBinary(const Vector &source, Vector &result) { result.Reinterpret(source); } -bool Geometry::FromString(const string_t &wkt_text, string_t &result, StringHeap &heap, bool strict, - QueryLocation query_location) { - TextReader reader(wkt_text.GetData(), static_cast(wkt_text.GetSize())); - reader.SetQueryLocation(query_location); +//! Returns false if the text is not valid WKT, the error is recorded in the reader +static bool TryParseWKT(TextReader &reader, string_t &result, StringHeap &heap, bool &trailing_text) { BlobWriter writer; - - FromStringRecursive(reader, writer, 0, false, false); - + trailing_text = false; + if (!FromStringRecursive(reader, writer, 0, false, false)) { + return false; + } // Check whether reader has consumed over all meaningful characters. if (!reader.IsAtEnd()) { - if (strict) { - throw reader.MakeError("Unexpected trailing text"); - } - return false; + trailing_text = true; + return reader.SetError("Unexpected trailing text"); } - const auto &buffer = writer.GetBuffer(); result = heap.AddBlob(buffer.data(), buffer.size()); return true; } +bool Geometry::TryFromString(const string_t &wkt_text, string_t &result, StringHeap &heap, string &error_message) { + TextReader reader(wkt_text.GetData(), static_cast(wkt_text.GetSize())); + bool trailing_text; + if (!TryParseWKT(reader, result, heap, trailing_text)) { + error_message = reader.GetErrorMessage(); + return false; + } + return true; +} + +bool Geometry::FromString(const string_t &wkt_text, string_t &result, StringHeap &heap, bool strict, + QueryLocation query_location) { + TextReader reader(wkt_text.GetData(), static_cast(wkt_text.GetSize())); + reader.SetQueryLocation(query_location); + bool trailing_text; + if (TryParseWKT(reader, result, heap, trailing_text)) { + return true; + } + if (trailing_text && !strict) { + return false; + } + throw reader.MakeError(); +} + bool Geometry::FromString(const string_t &wkt_text, string_t &result, Vector &result_vector, bool strict) { return FromString(wkt_text, result, StringVector::GetStringHeap(result_vector), strict, optional_idx::Invalid()); } diff --git a/src/duckdb/src/common/types/variant/parquet_variant_iterator.cpp b/src/duckdb/src/common/types/variant/parquet_variant_iterator.cpp index bccd84c2d..7a372334d 100644 --- a/src/duckdb/src/common/types/variant/parquet_variant_iterator.cpp +++ b/src/duckdb/src/common/types/variant/parquet_variant_iterator.cpp @@ -568,18 +568,36 @@ VariantDecimalProperties ParquetVariantNode::GetDecimalProperties() const { auto value_metadata = VariantValueMetadata::FromHeaderByte(binary[0]); auto payload = binary + 1; uint8_t scale = LoadChecked(payload, binary_end); + if (scale > Decimal::MAX_WIDTH_DECIMAL) { + throw IOException("Corrupted VARIANT 'value' buffer, decimal scale %d exceeds the maximum of %d", scale, + Decimal::MAX_WIDTH_DECIMAL); + } auto value_data = payload + sizeof(uint8_t); + uint32_t width; switch (value_metadata.primitive_type) { case VariantPrimitiveType::DECIMAL4: - return VariantDecimalProperties(ComputeDecimalWidth(LoadChecked(value_data, binary_end)), - scale); + width = ComputeDecimalWidth(LoadChecked(value_data, binary_end)); + break; case VariantPrimitiveType::DECIMAL8: - return VariantDecimalProperties(ComputeDecimalWidth(LoadChecked(value_data, binary_end)), - scale); - default: + width = ComputeDecimalWidth(LoadChecked(value_data, binary_end)); + break; + default: { D_ASSERT(value_metadata.primitive_type == VariantPrimitiveType::DECIMAL16); - return VariantDecimalProperties(DecimalWidth::max, scale); + CheckBinaryRead(value_data, sizeof(hugeint_t), binary_end); + hugeint_t value; + value.lower = Load(value_data); + value.upper = Load(value_data + sizeof(uint64_t)); + auto &limit = Hugeint::POWERS_OF_TEN[Decimal::MAX_WIDTH_DECIMAL]; + if (value >= limit || value <= -limit) { + throw IOException("Corrupted VARIANT 'value' buffer, DECIMAL16 value exceeds the maximum width of %d", + Decimal::MAX_WIDTH_DECIMAL); + } + width = Decimal::MAX_WIDTH_DECIMAL; + break; + } } + //! The scale can exceed the digits of the unscaled value (e.g. 0.005), the width must cover it + return VariantDecimalProperties(MaxValue(width, scale), scale); } ParquetObjectIterator ParquetVariantNode::GetObjectChildren(VariantIterationOrder order) const { diff --git a/src/duckdb/src/common/types/vector_buffer.cpp b/src/duckdb/src/common/types/vector_buffer.cpp index 637c2fa10..e1ad55496 100644 --- a/src/duckdb/src/common/types/vector_buffer.cpp +++ b/src/duckdb/src/common/types/vector_buffer.cpp @@ -321,7 +321,7 @@ void VectorBuffer::Copy(const Vector &source_p, const SelectionVector &source_se auto &dict_sel = DictionaryVector::SelVector(source); // merge the selection vectors and verify the child if (sel.IsSet()) { - auto new_buffer = dict_sel.Slice(sel, copy_count); + auto new_buffer = dict_sel.Slice(sel, source_offset + copy_count); owned_sel.Initialize(new_buffer); sel_ref = owned_sel; } else { @@ -331,7 +331,7 @@ void VectorBuffer::Copy(const Vector &source_p, const SelectionVector &source_se break; } case VectorType::CONSTANT_VECTOR: - sel_ref = *ConstantVector::ZeroSelectionVector(copy_count, owned_sel); + sel_ref = *ConstantVector::ZeroSelectionVector(source_offset + copy_count, owned_sel); finished = true; break; case VectorType::FLAT_VECTOR: diff --git a/src/duckdb/src/execution/operator/helper/physical_result_sink.cpp b/src/duckdb/src/execution/operator/helper/physical_result_sink.cpp index 9b8ecca65..e079cbf03 100644 --- a/src/duckdb/src/execution/operator/helper/physical_result_sink.cpp +++ b/src/duckdb/src/execution/operator/helper/physical_result_sink.cpp @@ -147,6 +147,7 @@ bool PhysicalResultSink::FlushUnits(ResultSinkGlobalState &gstate, ResultSinkLoc bool PhysicalResultSink::HandOver(ResultSinkGlobalState &gstate, ResultSinkLocalState &lstate, unique_ptr unit, const InterruptState &interrupt) const { + D_ASSERT(unit->row_count > 0); if (BatchOrdered()) { return gstate.buffered_data->Cast().AppendOrBlock(std::move(unit), lstate.current_batch, interrupt); @@ -266,7 +267,7 @@ SinkNextBatchType PhysicalResultSink::UpdateMinBatchIndex(ExecutionContext &cont unique_ptr PhysicalResultSink::GetResult(GlobalSinkState &state) const { auto &gstate = state.Cast(); // A draining sink hands its units to the consumer through the buffer, never through a result - D_ASSERT(CurrentLifetime(gstate) == ResultLifetime::RETAINED); + D_ASSERT(CurrentLifetime(gstate) != ResultLifetime::DRAINING); auto cc = gstate.context.lock(); if (!cc) { throw ConnectionException("Connection has already been closed"); diff --git a/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp b/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp index 7bf7bacb1..5caaa5b6c 100644 --- a/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +++ b/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp @@ -56,6 +56,48 @@ struct ConstantOrSequenceInfo { bool is_constant = true; }; +static const vector &GetNestedValueChildren(const Value &value) { + switch (value.type().InternalType()) { + case PhysicalType::STRUCT: + return StructValue::GetChildren(value); + case PhysicalType::LIST: + return ListValue::GetChildren(value); + case PhysicalType::ARRAY: + return ArrayValue::GetChildren(value); + default: + throw InternalException("Expected a nested value"); + } +} + +static bool CanShareConstantValue(const Value &left, const Value &right) { + if (left.type() != right.type()) { + return false; + } + if (left.IsNull() || right.IsNull()) { + return left.IsNull() == right.IsNull(); + } + switch (left.type().InternalType()) { + case PhysicalType::STRUCT: + case PhysicalType::LIST: + case PhysicalType::ARRAY: { + // Compare VARIANT storage children directly to preserve payload types and object fields. + auto &left_children = GetNestedValueChildren(left); + auto &right_children = GetNestedValueChildren(right); + if (left_children.size() != right_children.size()) { + return false; + } + for (idx_t i = 0; i < left_children.size(); i++) { + if (!CanShareConstantValue(left_children[i], right_children[i])) { + return false; + } + } + return true; + } + default: + return ValueOperations::NotDistinctFrom(left, right); + } +} + OperatorResultType VerifyEmitSequenceVector(const DataChunk &input_p, DataChunk &chunk, OperatorState &state_p) { auto &state = state_p.Cast(); D_ASSERT(state.const_idx < input_p.size()); @@ -97,7 +139,7 @@ OperatorResultType VerifyEmitSequenceVector(const DataChunk &input_p, DataChunk if (info.values.empty()) { info.values.push_back(std::move(val)); } else if (info.is_constant) { - if (!ValueOperations::DistinctFrom(val, info.values[0]) && can_be_constant) { + if (can_be_constant && CanShareConstantValue(val, info.values[0])) { // found the same value! continue info.values.push_back(std::move(val)); continue; diff --git a/src/duckdb/src/execution/physical_plan/plan_window.cpp b/src/duckdb/src/execution/physical_plan/plan_window.cpp index 08ef06297..48249c249 100644 --- a/src/duckdb/src/execution/physical_plan/plan_window.cpp +++ b/src/duckdb/src/execution/physical_plan/plan_window.cpp @@ -31,6 +31,7 @@ PhysicalOperator &PhysicalPlanGenerator::CreatePlan(LogicalWindow &op) { // Identify streaming windows and partitioned windows using Columns = vector; const bool enable_optimizer = Settings::Get(context); + const bool can_stream = enable_optimizer && (plan.get().GetSources().size() == 1); vector blocking_windows; vector streaming_windows; vector partitioned_windows; @@ -38,7 +39,7 @@ PhysicalOperator &PhysicalPlanGenerator::CreatePlan(LogicalWindow &op) { for (idx_t expr_idx = 0; expr_idx < op.expressions.size(); expr_idx++) { auto &wexpr = op.expressions[expr_idx]->Cast(); Columns partition_columns; - if (enable_optimizer && PhysicalStreamingWindow::IsStreamingFunction(context, wexpr)) { + if (can_stream && PhysicalStreamingWindow::IsStreamingFunction(context, wexpr)) { streaming_windows.push_back(expr_idx); } else if (!wexpr.Partitions().empty() && HasSingleValuePartitions(context, wexpr.Partitions(), plan, partition_columns)) { diff --git a/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp b/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp index dfe4e6d09..a2e21e8ae 100644 --- a/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +++ b/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp @@ -555,6 +555,21 @@ pair> FunctionBinder::BindSortedAggregateState(ClientContext &context, const BoundAggregateFunction &inner_function, unique_ptr inner_bind_info, const LogicalType &buffer_struct, const vector &orders, idx_t argument_count) { + // the leading buffered columns are passed to the inner aggregate as-is - they must have its argument types + auto &buffer_columns = StructType::GetChildTypes(buffer_struct); + auto &inner_arguments = inner_function.GetArguments(); + if (argument_count != inner_arguments.size() || argument_count > buffer_columns.size()) { + throw BinderException("Aggregate state for \"%s\" has %llu state columns, expected at least %llu", + inner_function.GetName(), (uint64_t)buffer_columns.size(), + (uint64_t)inner_arguments.size()); + } + for (idx_t i = 0; i < argument_count; i++) { + if (inner_arguments[i].IsComplete() && buffer_columns[i].second != inner_arguments[i]) { + throw BinderException("Aggregate state for \"%s\" has state column %llu of type %s, expected %s", + inner_function.GetName(), (uint64_t)i, buffer_columns[i].second.ToString(), + inner_arguments[i].ToString()); + } + } const auto null_handling = inner_function.GetProperties().GetNullHandling(); auto bind_data = make_uniq(context, inner_function, std::move(inner_bind_info), buffer_struct, orders, argument_count); diff --git a/src/duckdb/src/function/cast/union_casts.cpp b/src/duckdb/src/function/cast/union_casts.cpp index f1254ddff..e4630e317 100644 --- a/src/duckdb/src/function/cast/union_casts.cpp +++ b/src/duckdb/src/function/cast/union_casts.cpp @@ -210,16 +210,28 @@ static bool ToUnionMemberCast(Vector &source, Vector &result, idx_t count, CastP auto member_cast_info = cast_data.member_casts[0].Copy(); CastParameters child_parameters(parameters, member_cast_info.GetCastData(), parameters.local_state); - if (!member_cast_info.Cast(source, selected_member_vector, count, child_parameters)) { - return false; - } - - // cast succeeded, create union vector + bool all_converted = member_cast_info.Cast(source, selected_member_vector, count, child_parameters); UnionVector::SetToMember(result, cast_data.tag_map[0], selected_member_vector, count, true); + if (!all_converted) { + // rows that failed to cast (under TRY_CAST) are NULL in the member - make the union NULL as well + auto source_validity = source.Validity(); + auto member_validity = selected_member_vector.Validity(); + if (result.GetVectorType() == VectorType::CONSTANT_VECTOR) { + if (source_validity.IsValid(0) && !member_validity.IsValid(0)) { + ConstantVector::SetNull(result, count_t(count)); + } + } else { + for (idx_t row_idx = 0; row_idx < count; row_idx++) { + if (source_validity.IsValid(row_idx) && !member_validity.IsValid(row_idx)) { + FlatVector::SetNull(result, row_idx, true); + } + } + } + } result.Verify(); - return true; + return all_converted; } static bool UnionMemberToMemberCast(Vector &source, Vector &result, idx_t count, CastParameters ¶meters) { @@ -232,6 +244,7 @@ static bool UnionMemberToMemberCast(Vector &source, Vector &result, idx_t count, auto target_member_is_mapped = vector(target_member_count); // Perform the casts from source to target members + bool all_converted = true; for (idx_t member_idx = 0; member_idx < source_member_count; member_idx++) { auto target_member_idx = cast_data.tag_map[member_idx]; @@ -241,14 +254,12 @@ static bool UnionMemberToMemberCast(Vector &source, Vector &result, idx_t count, CastParameters child_parameters(parameters, member_cast.GetCastData(), lstate.local_states[member_idx]); if (!member_cast.Cast(source_member_vector, target_member_vector, count, child_parameters)) { - return false; + all_converted = false; } target_member_is_mapped[target_member_idx] = true; } - // All member casts succeeded! - // Set the unmapped target members to constant NULL. // If we cast UNION(A, B) -> UNION(A, B, C) we need to invalidate C so that // the invariants of the result union hold. (only member columns "selected" @@ -275,6 +286,11 @@ static bool UnionMemberToMemberCast(Vector &source, Vector &result, idx_t count, auto source_tag = ConstantVector::GetData(source_tag_vector)[0]; auto mapped_tag = cast_data.tag_map[source_tag]; ConstantVector::GetData(result_tag_vector)[0] = UnsafeNumericCast(mapped_tag); + // the selected member failed to cast (under TRY_CAST) - the union becomes NULL + if (!all_converted && UnionVector::GetMember(source, source_tag).Validity().IsValid(0) && + !UnionVector::GetMember(result, mapped_tag).Validity().IsValid(0)) { + ConstantVector::SetNull(result, count_t(count)); + } } } else { // Otherwise, use the unified vector format to access the source vector. @@ -288,6 +304,13 @@ static bool UnionMemberToMemberCast(Vector &source, Vector &result, idx_t count, // We assume that a union tag vector validity matches the union vector validity. auto source_tag_entries = source_tag_vector.Values(); + vector> source_member_validity; + if (!all_converted) { + for (idx_t member_idx = 0; member_idx < source_member_count; member_idx++) { + source_member_validity.push_back( + make_uniq(UnionVector::GetMember(source, member_idx))); + } + } for (idx_t row_idx = 0; row_idx < count; row_idx++) { auto entry = source_tag_entries[row_idx]; @@ -296,6 +319,11 @@ static bool UnionMemberToMemberCast(Vector &source, Vector &result, idx_t count, auto target_tag = cast_data.tag_map[entry.GetValue()]; FlatVector::GetDataMutable(result_tag_vector)[row_idx] = UnsafeNumericCast(target_tag); + // the selected member failed to cast (under TRY_CAST) - the union becomes NULL + if (!all_converted && source_member_validity[entry.GetValue()]->IsValid(row_idx) && + !FlatVector::Validity(UnionVector::GetMember(result, target_tag)).RowIsValid(row_idx)) { + FlatVector::SetNull(result, row_idx, true); + } } else { // Issue: The members of the result is not always flatvectors // In the case of TryNullCast, the result member is constant. @@ -307,7 +335,7 @@ static bool UnionMemberToMemberCast(Vector &source, Vector &result, idx_t count, FlatVector::SetSize(result, count_t(count)); result.Verify(); - return true; + return all_converted; } static bool ToUnionCast(Vector &source, Vector &result, idx_t count, CastParameters ¶meters) { @@ -315,11 +343,9 @@ static bool ToUnionCast(Vector &source, Vector &result, idx_t count, CastParamet auto &cast_data = parameters.cast_data->Cast(); if (cast_data.is_member_to_member) { - UnionMemberToMemberCast(source, result, count, parameters); - } else { - ToUnionMemberCast(source, result, count, parameters); + return UnionMemberToMemberCast(source, result, count, parameters); } - return true; + return ToUnionMemberCast(source, result, count, parameters); } BoundCastInfo DefaultCasts::ImplicitToUnionCast(BindCastInput &input, const LogicalType &source, diff --git a/src/duckdb/src/function/function.cpp b/src/duckdb/src/function/function.cpp index c02d3dcf6..0e33a4b44 100644 --- a/src/duckdb/src/function/function.cpp +++ b/src/duckdb/src/function/function.cpp @@ -7,6 +7,7 @@ #include "duckdb/function/function_binder.hpp" #include "duckdb/function/scalar/string_functions.hpp" #include "duckdb/function/scalar_function.hpp" +#include "duckdb/planner/expression/bound_cast_expression.hpp" namespace duckdb { @@ -578,13 +579,25 @@ bool FunctionSignature::Equal(const FunctionSignature &other) const { //---------------------------------------------------------------------------------------------------------------------- // Bind Function Input //---------------------------------------------------------------------------------------------------------------------- +//! An unresolved parameter or an as-yet-unknown type (e.g. a macro/prepared argument), possibly cast to the argument +//! type of the function +static bool IsUnresolvedArgument(const Expression &expr) { + if (expr.HasParameter() || expr.GetReturnType().id() == LogicalTypeId::UNKNOWN) { + return true; + } + if (BoundCastExpression::IsCast(expr)) { + return IsUnresolvedArgument(BoundCastExpression::Child(expr.Cast())); + } + return false; +} + Value BindFunctionInput::GetConstant(idx_t arg_idx, bool accept_null) const { if (arg_idx >= arguments.size()) { throw InternalException("%s: Argument index %llu is out of range", function.GetName(), arg_idx); } const auto &expr = *arguments[arg_idx]; - // an unresolved parameter or an as-yet-unknown type (e.g. a macro/prepared argument) - defer binding - if (expr.HasParameter() || expr.GetReturnType().id() == LogicalTypeId::UNKNOWN) { + // defer binding until the argument is resolved + if (IsUnresolvedArgument(expr)) { throw ParameterNotResolvedException(); } // Use the argument name if available, otherwise use the argument index @@ -618,7 +631,7 @@ optional BindFunctionInput::TryGetConstant(idx_t arg_idx) const { return {}; } const auto &expr = *arguments[arg_idx]; - if (expr.HasParameter() || expr.GetReturnType().id() == LogicalTypeId::UNKNOWN) { + if (IsUnresolvedArgument(expr)) { return {}; } if (!expr.IsFoldable()) { diff --git a/src/duckdb/src/function/function_binder.cpp b/src/duckdb/src/function/function_binder.cpp index ae465f47b..bf702e8bf 100644 --- a/src/duckdb/src/function/function_binder.cpp +++ b/src/duckdb/src/function/function_binder.cpp @@ -724,6 +724,18 @@ static void PrepareTypeForCast(LogicalType &type) { type = PrepareTypeForCastRecursive(type); } +//! Whether the type has no concrete type information (e.g. DECIMAL without width / scale) - ANY, UNKNOWN and INVALID +//! are excluded, as casts to these have special meaning (e.g. for prepared statement parameters) +static bool IsIncompleteCastTarget(const LogicalType &type) { + if (type.IsComplete()) { + return false; + } + return !TypeVisitor::Contains(type, [](const LogicalType &child) { + return child.id() == LogicalTypeId::ANY || child.id() == LogicalTypeId::UNKNOWN || + child.id() == LogicalTypeId::INVALID; + }); +} + void FunctionBinder::CastToFunctionArguments(BoundSimpleFunction &function, vector> &children) { for (auto &arg : function.GetArguments()) { PrepareTypeForCast(arg); @@ -747,12 +759,28 @@ void FunctionBinder::CastToFunctionArguments(BoundSimpleFunction &function, vect if (children[i]->GetReturnType().id() == LogicalTypeId::LAMBDA) { continue; } + const bool target_has_any = TypeVisitor::Contains(target_type, LogicalTypeId::ANY); + if (target_has_any && children[i]->GetReturnType().id() == LogicalTypeId::ARRAY && + target_type.id() == LogicalTypeId::LIST) { + // an array passed to a LIST(ANY) parameter is cast to a list of its child type + children[i] = BoundCastExpression::AddArrayCastToList(context, std::move(children[i])); + } // check if the type of child matches the type of function argument // if not we need to add a cast auto cast_result = RequiresCast(children[i]->GetReturnType(), target_type); // except for one special case: if the function accepts ANY argument // in that case we don't add a cast if (cast_result == LogicalTypeComparisonResult::DIFFERENT_TYPES) { + if (target_has_any && children[i]->GetReturnType().id() != LogicalTypeId::UNKNOWN) { + // a type that is not concrete cannot be cast to (e.g. a NULL or a VARIANT passed to LIST(ANY)) - the + // function has to handle the argument as-is. Unresolved parameters are still assigned the type. + continue; + } + if (IsIncompleteCastTarget(target_type)) { + throw InternalException("Function '%s' has incomplete argument type %s - concrete argument types must " + "be resolved in the resolve_types callback", + function.GetName(), target_type); + } children[i] = BoundCastExpression::AddCastToType(context, std::move(children[i]), target_type); } } @@ -986,24 +1014,9 @@ static string ExtractCollation(const vector> &children) { return collation; } -static void PropagateCollations(ClientContext &, BoundSimpleFunction &bound_function, - vector> &children) { - if (!RequiresCollationPropagation(bound_function.GetReturnType())) { - // we only need to propagate if the function returns a varchar - return; - } - auto collation = ExtractCollation(children); - if (collation.empty()) { - // no collation to propagate - return; - } - // propagate the collation to the return type - auto collation_type = LogicalType::VARCHAR_COLLATION(std::move(collation)); - bound_function.SetReturnType(std::move(collation_type)); -} - -static void PushCollations(ClientContext &context, BoundSimpleFunction &bound_function, - vector> &children, CollationType type) { +//! Pushes the collations of the arguments into the children, returns the collation to propagate to the return type +static string PushCollations(ClientContext &context, BoundSimpleFunction &bound_function, + vector> &children, CollationType type) { FunctionCollations collations; auto &argument_types = bound_function.GetArguments(); for (idx_t i = 0; i < children.size(); i++) { @@ -1013,11 +1026,7 @@ static void PushCollations(ClientContext &context, BoundSimpleFunction &bound_fu } if (collations.collation.empty() && collations.fields.empty()) { // no collation to push - return; - } - // push collation into the return type if required - if (!collations.collation.empty() && RequiresCollationPropagation(bound_function.GetReturnType())) { - bound_function.SetReturnType(LogicalType::VARCHAR_COLLATION(collations.collation)); + return string(); } // push collations to the children for (idx_t i = 0; i < children.size(); i++) { @@ -1037,26 +1046,38 @@ static void PushCollations(ClientContext &context, BoundSimpleFunction &bound_fu arg_type = arg->GetReturnType(); } } + return collations.collation; } -static void HandleCollations(ClientContext &context, BoundSimpleFunction &bound_function, - const FunctionProperties &props, vector> &children) { +//! Pushes collations into the children (if required), returns the collation to propagate to the return type +static string PushArgumentCollations(ClientContext &context, BoundSimpleFunction &bound_function, + const FunctionProperties &props, vector> &children) { switch (props.GetCollationHandling()) { case FunctionCollationHandling::IGNORE_COLLATIONS: - // explicitly ignoring collation handling - break; case FunctionCollationHandling::PROPAGATE_COLLATIONS: - PropagateCollations(context, bound_function, children); - break; + return string(); case FunctionCollationHandling::PUSH_COMBINABLE_COLLATIONS: - // first propagate, then push collations to the children - PushCollations(context, bound_function, children, CollationType::COMBINABLE_COLLATIONS); - break; + return PushCollations(context, bound_function, children, CollationType::COMBINABLE_COLLATIONS); default: throw InternalException("Unrecognized collation handling"); } } +//! Propagates the collation of the arguments to the return type of the function (if it returns a varchar) +static void PropagateReturnCollation(BoundSimpleFunction &bound_function, const FunctionProperties &props, + const vector> &children, const string &pushed_collation) { + if (!RequiresCollationPropagation(bound_function.GetReturnType())) { + return; + } + auto collation = props.GetCollationHandling() == FunctionCollationHandling::PROPAGATE_COLLATIONS + ? ExtractCollation(children) + : pushed_collation; + if (collation.empty()) { + return; + } + bound_function.SetReturnType(LogicalType::VARCHAR_COLLATION(std::move(collation))); +} + static void InferTemplateType(ClientContext &context, const LogicalType &source, const LogicalType &target, case_insensitive_map_t> &bindings, const Expression ¤t_expr, const BoundSimpleFunction &function) { @@ -1386,6 +1407,48 @@ static void VerifyArgumentCount(const BoundSimpleFunction &bound_function, idx_t } } +//! The arguments are cast before the bind callback - verify that it did not change the argument types +static void VerifyBindArgumentTypes(const BoundScalarFunction &bound_function, + const vector> &arguments) { + auto &argument_types = bound_function.GetArguments(); + if (arguments.size() > argument_types.size()) { + throw InternalException("Function '%s' added arguments in its bind callback - argument types must be " + "resolved in the resolve_types callback", + bound_function.GetName()); + } + for (idx_t i = 0; i < arguments.size(); i++) { + auto &source_type = arguments[i]->GetReturnType(); + if (source_type.id() == LogicalTypeId::LAMBDA) { + continue; + } + auto target_type = argument_types[i]; + PrepareTypeForCast(target_type); + if (target_type.id() == LogicalTypeId::UNKNOWN || target_type.id() == LogicalTypeId::INVALID) { + continue; + } + if (RequiresCast(source_type, target_type) == LogicalTypeComparisonResult::DIFFERENT_TYPES) { + throw InternalException("Function '%s' changed the type of argument %llu from %s to %s in its bind " + "callback - argument types must be resolved in the resolve_types callback", + bound_function.GetName(), i + 1, source_type, target_type); + } + } +} + +//! Incomplete argument types (e.g. a DECIMAL without width and scale) accept any type of that kind - resolve them to +//! the type of the argument +static void ResolveIncompleteArgumentTypes(BoundSimpleFunction &bound_function, + const vector> &arguments) { + auto &argument_types = bound_function.GetArguments(); + for (idx_t i = 0; i < arguments.size() && i < argument_types.size(); i++) { + auto &source_type = arguments[i]->GetReturnType(); + if (!IsIncompleteCastTarget(argument_types[i]) || source_type.id() != argument_types[i].id() || + !source_type.IsComplete()) { + continue; + } + argument_types[i] = source_type; + } +} + static vector CaptureLogicalArguments(const BoundSimpleFunction &function, const vector> &arguments) { D_ASSERT(function.GetArguments().size() == arguments.size()); @@ -1409,20 +1472,33 @@ FunctionBinder::ResolveFunction(shared_ptr function_p, vec // Reorder named args and expand the variadic arguments auto argument_names = ResolveArguments(function, bound_function, arguments, named_arguments); - // Attempt to resolve template types, before we call the "Bind" callback. + // Attempt to resolve template types, before we call the "resolve_types" callback. ResolveTemplateTypes(bound_function, arguments); bound_function.SetLogicalArguments(CaptureLogicalArguments(bound_function, arguments)); + ResolveIncompleteArgumentTypes(bound_function, arguments); - unique_ptr bind_info; + if (bound_function.HasResolveTypesCallback()) { + ResolveScalarFunctionTypesInput input(context, bound_function, arguments, argument_names); + bound_function.GetResolveTypesCallback()(input); + VerifyArgumentCount(bound_function, argument_names.size(), arguments.size()); + } + + // The argument types are final - all templates must be resolved before we add casts + for (auto &argument_type : bound_function.GetArguments()) { + VerifyTemplateType(argument_type, bound_function.GetName()); + } + auto pushed_collation = PushArgumentCollations(context, bound_function, bound_function.GetProperties(), arguments); + CastToFunctionArguments(bound_function, arguments); + // The bind callback is called with arguments that are cast to the argument types of the bound function + unique_ptr bind_info; if (bound_function.HasBindCallback()) { BindScalarFunctionInput input(context, bound_function, arguments, argument_names, binder); bind_info = bound_function.GetBindCallback()(input); VerifyArgumentCount(bound_function, argument_names.size(), arguments.size()); + VerifyBindArgumentTypes(bound_function, arguments); } - - // After the "bind" callback, we verify that all template types are bound to concrete types. - CheckTemplateTypesResolved(bound_function); + VerifyTemplateType(bound_function.GetReturnType(), bound_function.GetName()); if (bound_function.HasModifiedDatabasesCallback() && binder) { auto &properties = binder->GetStatementProperties(); @@ -1430,12 +1506,9 @@ FunctionBinder::ResolveFunction(shared_ptr function_p, vec bound_function.GetModifiedDatabasesCallback()(context, input); } - HandleCollations(context, bound_function, bound_function.GetProperties(), arguments); + PropagateReturnCollation(bound_function, bound_function.GetProperties(), arguments, pushed_collation); bound_function.SetLogicalReturnType(bound_function.GetReturnType()); - // check if we need to add casts to the children - CastToFunctionArguments(bound_function, arguments); - return {std::move(bound_function), std::move(bind_info)}; } diff --git a/src/duckdb/src/function/scalar/geometry/geometry_functions.cpp b/src/duckdb/src/function/scalar/geometry/geometry_functions.cpp index 3ffe6af7f..42b1cd1e0 100644 --- a/src/duckdb/src/function/scalar/geometry/geometry_functions.cpp +++ b/src/duckdb/src/function/scalar/geometry/geometry_functions.cpp @@ -233,21 +233,19 @@ static unique_ptr BindCRSFunctionExpression(FunctionBindExpressionIn return make_uniq(GetCRSValue(return_type)); } -static unique_ptr BindCRSFunction(BindScalarFunctionInput &input) { - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - - if (arguments[0]->GetReturnType().id() != LogicalTypeId::GEOMETRY) { - return nullptr; +static void CRSFunctionResolveTypes(ResolveScalarFunctionTypesInput &input) { + auto &argument_type = input.GetArgumentType(0); + if (argument_type.id() != LogicalTypeId::GEOMETRY) { + return; } // Propagate the CRS from the input argument to the parameter type - bound_function.GetArguments()[0] = arguments[0]->GetReturnType(); - return nullptr; + input.GetBoundFunction().GetArguments()[0] = argument_type; } ScalarFunction StCrsFun::GetFunction() { - ScalarFunction geom_func({}, LogicalType::VARCHAR, CRSFunction, BindCRSFunction); + ScalarFunction geom_func({}, LogicalType::VARCHAR, CRSFunction); + geom_func.SetResolveTypesCallback(CRSFunctionResolveTypes); geom_func.GetSignature().AddParameter("geom", LogicalType::GEOMETRY()); geom_func.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); geom_func.SetBindExpressionCallback(BindCRSFunctionExpression); diff --git a/src/duckdb/src/function/scalar/list/list_resize.cpp b/src/duckdb/src/function/scalar/list/list_resize.cpp index a8cb15d64..6651ce2e0 100644 --- a/src/duckdb/src/function/scalar/list/list_resize.cpp +++ b/src/duckdb/src/function/scalar/list/list_resize.cpp @@ -83,54 +83,58 @@ static void ListResizeFunction(DataChunk &args, ExpressionState &, Vector &resul } } -static unique_ptr ListResizeBind(BindScalarFunctionInput &input) { - auto &context = input.GetClientContext(); +static void ListResizeResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - D_ASSERT(bound_function.GetArguments().size() == 2 || arguments.size() == 3); + D_ASSERT(bound_function.GetArguments().size() == 2 || input.GetArgumentCount() == 3); bound_function.GetArguments()[1] = LogicalType::UBIGINT; // If the first argument is an array, cast it to a list. - arguments[0] = BoundCastExpression::AddArrayCastToList(context, std::move(arguments[0])); + auto list_type = input.GetArgumentType(0); + if (list_type.id() == LogicalTypeId::ARRAY) { + list_type = LogicalType::LIST(ArrayType::GetChildType(list_type)); + bound_function.GetArguments()[0] = list_type; + } // Early-out, if the first argument is a constant NULL. - if (arguments[0]->GetReturnType() == LogicalType::SQLNULL) { + if (list_type == LogicalType::SQLNULL) { bound_function.GetArguments()[0] = LogicalType::SQLNULL; bound_function.SetReturnType(LogicalType::SQLNULL); - return make_uniq(bound_function.GetReturnType()); + return; } // Early-out, if the first argument is a prepared statement. - if (arguments[0]->GetReturnType() == LogicalType::UNKNOWN) { - bound_function.SetReturnType(arguments[0]->GetReturnType()); - return make_uniq(bound_function.GetReturnType()); + if (list_type == LogicalType::UNKNOWN) { + bound_function.SetReturnType(list_type); + return; } // Attempt implicit casting, if the default type does not match list the list child type. - if (bound_function.GetArguments().size() == 3 && - ListType::GetChildType(arguments[0]->GetReturnType()) != arguments[2]->GetReturnType() && - arguments[2]->GetReturnType() != LogicalTypeId::SQLNULL) { - bound_function.GetArguments()[2] = ListType::GetChildType(arguments[0]->GetReturnType()); + if (bound_function.GetArguments().size() == 3 && ListType::GetChildType(list_type) != input.GetArgumentType(2) && + input.GetArgumentType(2) != LogicalTypeId::SQLNULL) { + bound_function.GetArguments()[2] = ListType::GetChildType(list_type); } - bound_function.SetReturnType(arguments[0]->GetReturnType()); - return make_uniq(bound_function.GetReturnType()); + bound_function.SetReturnType(list_type); } ScalarFunctionSet ListResizeFun::GetFunctions() { - ScalarFunction simple_fun({}, LogicalType::LIST(LogicalTypeId::ANY), ListResizeFunction, ListResizeBind); + ScalarFunction simple_fun({}, LogicalType::LIST(LogicalTypeId::ANY), ListResizeFunction, + VariableReturnBindData::Bind); simple_fun.GetSignature() .AddParameter("list", LogicalType::LIST(LogicalTypeId::ANY)) .AddParameter("size", LogicalTypeId::ANY); simple_fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); simple_fun.SetFallible(); - ScalarFunction default_value_fun({}, LogicalType::LIST(LogicalTypeId::ANY), ListResizeFunction, ListResizeBind); + simple_fun.SetResolveTypesCallback(ListResizeResolveTypes); + ScalarFunction default_value_fun({}, LogicalType::LIST(LogicalTypeId::ANY), ListResizeFunction, + VariableReturnBindData::Bind); default_value_fun.GetSignature() .AddParameter("list", LogicalType::LIST(LogicalTypeId::ANY)) .AddParameter("size", LogicalTypeId::ANY) .AddParameter("value", LogicalTypeId::ANY); default_value_fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); default_value_fun.SetFallible(); + default_value_fun.SetResolveTypesCallback(ListResizeResolveTypes); ScalarFunctionSet list_resize_set("list_resize"); list_resize_set.AddFunction(simple_fun); list_resize_set.AddFunction(default_value_fun); diff --git a/src/duckdb/src/function/scalar/operator/arithmetic.cpp b/src/duckdb/src/function/scalar/operator/arithmetic.cpp index 823622c94..a243f17d5 100644 --- a/src/duckdb/src/function/scalar/operator/arithmetic.cpp +++ b/src/duckdb/src/function/scalar/operator/arithmetic.cpp @@ -323,23 +323,20 @@ unique_ptr PropagateFloatingStats(ClientContext &context, Functi return result.ToUnique(); } -template -unique_ptr BindDecimalArithmetic(BindScalarFunctionInput &input) { - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - auto bind_data = make_uniq(); - +//! Computes the result type of a decimal addition, subtraction or modulo over the given input types +template +LogicalType DecimalArithmeticResultType(const vector &input_types, bool &check_overflow) { + check_overflow = false; // get the max width and scale of the input arguments uint8_t max_width = 0, max_scale = 0, max_width_over_scale = 0; - for (idx_t i = 0; i < arguments.size(); i++) { - if (arguments[i]->GetReturnType().id() == LogicalTypeId::UNKNOWN) { + for (auto &input_type : input_types) { + if (input_type.id() == LogicalTypeId::UNKNOWN) { continue; } uint8_t width, scale; - auto can_convert = arguments[i]->GetReturnType().GetDecimalProperties(width, scale); + auto can_convert = input_type.GetDecimalProperties(width, scale); if (!can_convert) { - throw InternalException("Could not convert type %s to a decimal.", - arguments[i]->GetReturnType().ToString()); + throw InternalException("Could not convert type %s to a decimal.", input_type.ToString()); } if (width > max_width) { max_width = width; @@ -355,16 +352,24 @@ unique_ptr BindDecimalArithmetic(BindScalarFunctionIn } if (required_width > Decimal::MAX_WIDTH_DECIMAL) { // target width does not fit in decimal at all: truncate the scale and perform overflow detection - bind_data->check_overflow = true; + check_overflow = true; required_width = Decimal::MAX_WIDTH_DECIMAL; } - // arithmetic between two decimal arguments: check the types of the input arguments - LogicalType result_type = LogicalType::DECIMAL(required_width, max_scale); + return LogicalType::DECIMAL(required_width, max_scale); +} + +//! Resolves the types of a decimal addition, subtraction or modulo, returns whether overflow checks are required +template +bool ResolveDecimalArithmeticTypes(ResolveScalarFunctionTypesInput &input) { + auto &bound_function = input.GetBoundFunction(); + bool check_overflow; + auto argument_types = input.GetArgumentTypes(); + auto result_type = DecimalArithmeticResultType(argument_types, check_overflow); // we cast all input types to the specified type - for (idx_t i = 0; i < arguments.size(); i++) { + for (idx_t i = 0; i < argument_types.size(); i++) { // first check if the cast is necessary // if the argument has a matching scale and internal type as the output type, no casting is necessary - auto &argument_type = arguments[i]->GetReturnType(); + auto &argument_type = argument_types[i]; uint8_t width, scale; argument_type.GetDecimalProperties(width, scale); if (scale == DecimalType::GetScale(result_type) && argument_type.InternalType() == result_type.InternalType()) { @@ -374,18 +379,25 @@ unique_ptr BindDecimalArithmetic(BindScalarFunctionIn } } bound_function.SetReturnType(result_type); - return bind_data; + return check_overflow; +} + +//! The overflow check is derived from the types the function was called with, before they were cast +template +unique_ptr BindDecimalArithmetic(BindScalarFunctionInput &input) { + auto bind_data = make_uniq(); + DecimalArithmeticResultType(input.GetBoundFunction().GetLogicalArguments(), bind_data->check_overflow); + return std::move(bind_data); } template -unique_ptr BindDecimalAddSubtract(BindScalarFunctionInput &input) { +void DecimalAddSubtractResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - - auto bind_data = BindDecimalArithmetic(input); + auto check_overflow = ResolveDecimalArithmeticTypes(input); // now select the physical function to execute auto &result_type = bound_function.GetReturnType(); - if (bind_data->check_overflow) { + if (check_overflow) { bound_function.SetFunctionCallback(GetScalarBinaryFunction(result_type.InternalType())); } else { bound_function.SetFunctionCallback(GetScalarBinaryFunction(result_type.InternalType())); @@ -396,7 +408,6 @@ unique_ptr BindDecimalAddSubtract(BindScalarFunctionInput &input) } else { bound_function.SetStatisticsCallback(PropagateNumericStats); } - return std::move(bind_data); } void SerializeDecimalArithmetic(Serializer &serializer, const optional_ptr bind_data_p, @@ -428,22 +439,21 @@ unique_ptr DeserializeDecimalArithmetic(Deserializer &deserializer return std::move(bind_data); } -unique_ptr NopDecimalBind(BindScalarFunctionInput &input) { +void NopDecimalResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - - bound_function.SetReturnType(arguments[0]->GetReturnType()); - bound_function.GetArguments()[0] = arguments[0]->GetReturnType(); - return nullptr; + auto &decimal_type = input.GetArgumentType(0); + bound_function.SetReturnType(decimal_type); + bound_function.GetArguments()[0] = decimal_type; } } // namespace ScalarFunction AddFunction::GetFunction(const LogicalType &type) { D_ASSERT(type.IsNumeric()); - auto fn = type.id() == LogicalTypeId::DECIMAL - ? ScalarFunction("+", {type}, type, ScalarFunction::NopFunction, NopDecimalBind) - : ScalarFunction("+", {type}, type, ScalarFunction::NopFunction); + ScalarFunction fn("+", {type}, type, ScalarFunction::NopFunction); + if (type.id() == LogicalTypeId::DECIMAL) { + fn.SetResolveTypesCallback(NopDecimalResolveTypes); + } fn.SetUnaryArgProperties(ArgProperties().StrictlyIncreasing()); return fn; } @@ -484,8 +494,8 @@ ScalarFunction AddFunction::GetFunction(const LogicalType &left_type, const Logi const auto unset = ArgProperties(); if (left_type.IsNumeric() && left_type.id() == right_type.id()) { if (left_type.id() == LogicalTypeId::DECIMAL) { - auto function = ScalarFunction("+", {left_type, right_type}, left_type, nullptr, - BindDecimalAddSubtract); + auto function = ScalarFunction("+", {left_type, right_type}, left_type, nullptr, BindDecimalArithmetic); + function.SetResolveTypesCallback(DecimalAddSubtractResolveTypes); function.SetFallible(); function.SetSerializeCallback(SerializeDecimalArithmetic); function.SetDeserializeCallback(DeserializeDecimalArithmetic); @@ -716,31 +726,9 @@ interval_t NegateOperator::Operation(interval_t input) { return result; } -struct DecimalNegateBindData : public FunctionData { - DecimalNegateBindData() : bound_type(LogicalTypeId::INVALID) { - } - - unique_ptr Copy() const override { - auto res = make_uniq(); - res->bound_type = bound_type; - return std::move(res); - } - - bool Equals(const FunctionData &other_p) const override { - const auto &other = other_p.Cast(); - return other.bound_type == bound_type; - } - - LogicalTypeId bound_type; -}; - -static unique_ptr DecimalNegateBind(BindScalarFunctionInput &input) { +static void DecimalNegateResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - - auto bind_data = make_uniq(); - - auto &decimal_type = arguments[0]->GetReturnType(); + auto &decimal_type = input.GetArgumentType(0); auto width = DecimalType::GetWidth(decimal_type); if (width <= Decimal::MAX_WIDTH_INT16) { bound_function.SetFunctionCallback( @@ -759,21 +747,20 @@ static unique_ptr DecimalNegateBind(BindScalarFunctionInput &input decimal_type.Verify(); bound_function.GetArguments()[0] = decimal_type; bound_function.SetReturnType(decimal_type); - return nullptr; } -static unique_ptr IntegerNegateBind(BindScalarFunctionInput &input) { +static void IntegerNegateResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - D_ASSERT(input.GetArguments().size() == 1); + D_ASSERT(input.GetArgumentCount() == 1); // only need to promote if the argument is a constant that exactly equals the type's minimum value auto constant = input.TryGetConstant(0); if (!constant || constant->IsNull()) { - return nullptr; + return; } auto &type = bound_function.GetArguments()[0]; if (*constant != Value::MinimumValue(type)) { - return nullptr; + return; } LogicalType promoted_type; switch (type.id()) { @@ -790,12 +777,11 @@ static unique_ptr IntegerNegateBind(BindScalarFunctionInput &input promoted_type = LogicalType::HUGEINT; break; default: - return nullptr; + return; } bound_function.GetArguments()[0] = promoted_type; bound_function.SetReturnType(promoted_type); bound_function.SetFunctionCallback(ScalarFunction::GetScalarUnaryFunction(promoted_type)); - return nullptr; } ScalarFunction SubtractFunction::GetFunction(const LogicalType &type) { @@ -805,7 +791,8 @@ ScalarFunction SubtractFunction::GetFunction(const LogicalType &type) { func.SetUnaryArgProperties(ArgProperties().StrictlyDecreasing()); return func; } else if (type.id() == LogicalTypeId::DECIMAL) { - ScalarFunction func("-", {type}, type, nullptr, DecimalNegateBind); + ScalarFunction func("-", {type}, type, nullptr); + func.SetResolveTypesCallback(DecimalNegateResolveTypes); func.SetUnaryArgProperties(ArgProperties().StrictlyDecreasing()); return func; } else if (type.id() == LogicalTypeId::BIGNUM) { @@ -814,8 +801,8 @@ ScalarFunction SubtractFunction::GetFunction(const LogicalType &type) { return func; } else { D_ASSERT(type.IsNumeric()); - ScalarFunction func("-", {type}, type, ScalarFunction::GetScalarUnaryFunction(type), - IntegerNegateBind); + ScalarFunction func("-", {type}, type, ScalarFunction::GetScalarUnaryFunction(type)); + func.SetResolveTypesCallback(IntegerNegateResolveTypes); func.SetFallible(); func.SetUnaryArgProperties(ArgProperties().StrictlyDecreasing()); return func; @@ -825,8 +812,9 @@ ScalarFunction SubtractFunction::GetFunction(const LogicalType &type) { ScalarFunction SubtractFunction::GetFunction(const LogicalType &left_type, const LogicalType &right_type) { if (left_type.IsNumeric() && left_type.id() == right_type.id()) { if (left_type.id() == LogicalTypeId::DECIMAL) { - ScalarFunction function("-", {left_type, right_type}, left_type, nullptr, - BindDecimalAddSubtract); + ScalarFunction function("-", {left_type, right_type}, left_type, nullptr, BindDecimalArithmetic); + function.SetResolveTypesCallback( + DecimalAddSubtractResolveTypes); function.SetFallible(); function.SetSerializeCallback(SerializeDecimalArithmetic); function.SetDeserializeCallback( @@ -1017,23 +1005,19 @@ struct MultiplyPropagateStatistics { } }; -unique_ptr BindDecimalMultiply(BindScalarFunctionInput &input) { - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - - auto bind_data = make_uniq(); - +//! Computes the result type of a decimal multiplication over the given input types +LogicalType DecimalMultiplyResultType(const vector &input_types, bool &check_overflow) { + check_overflow = false; uint8_t result_width = 0, result_scale = 0; uint8_t max_width = 0; - for (idx_t i = 0; i < arguments.size(); i++) { - if (arguments[i]->GetReturnType().id() == LogicalTypeId::UNKNOWN) { + for (auto &input_type : input_types) { + if (input_type.id() == LogicalTypeId::UNKNOWN) { continue; } uint8_t width, scale; - auto can_convert = arguments[i]->GetReturnType().GetDecimalProperties(width, scale); + auto can_convert = input_type.GetDecimalProperties(width, scale); if (!can_convert) { - throw InternalException("Could not convert type %s to a decimal?", - arguments[i]->GetReturnType().ToString()); + throw InternalException("Could not convert type %s to a decimal?", input_type.ToString()); } max_width = MaxValue(width, max_width); result_width += width; @@ -1049,18 +1033,26 @@ unique_ptr BindDecimalMultiply(BindScalarFunctionInput &input) { } if (result_width > Decimal::MAX_WIDTH_INT64 && max_width <= Decimal::MAX_WIDTH_INT64 && result_scale < Decimal::MAX_WIDTH_INT64) { - bind_data->check_overflow = true; + check_overflow = true; result_width = Decimal::MAX_WIDTH_INT64; } if (result_width > Decimal::MAX_WIDTH_DECIMAL) { - bind_data->check_overflow = true; + check_overflow = true; result_width = Decimal::MAX_WIDTH_DECIMAL; } - LogicalType result_type = LogicalType::DECIMAL(result_width, result_scale); + return LogicalType::DECIMAL(result_width, result_scale); +} + +void DecimalMultiplyResolveTypes(ResolveScalarFunctionTypesInput &input) { + auto &bound_function = input.GetBoundFunction(); + bool check_overflow; + auto argument_types = input.GetArgumentTypes(); + auto result_type = DecimalMultiplyResultType(argument_types, check_overflow); + auto result_width = DecimalType::GetWidth(result_type); // since our scale is the summation of our input scales, we do not need to cast to the result scale // however, we might need to cast to the correct internal type - for (idx_t i = 0; i < arguments.size(); i++) { - auto &argument_type = arguments[i]->GetReturnType(); + for (idx_t i = 0; i < argument_types.size(); i++) { + auto &argument_type = argument_types[i]; if (argument_type.InternalType() == result_type.InternalType()) { bound_function.GetArguments()[i] = argument_type; } else { @@ -1075,7 +1067,7 @@ unique_ptr BindDecimalMultiply(BindScalarFunctionInput &input) { result_type.Verify(); bound_function.SetReturnType(result_type); // now select the physical function to execute - if (bind_data->check_overflow) { + if (check_overflow) { bound_function.SetFunctionCallback( GetScalarBinaryFunction(result_type.InternalType())); } else { @@ -1083,6 +1075,12 @@ unique_ptr BindDecimalMultiply(BindScalarFunctionInput &input) { } bound_function.SetStatisticsCallback( PropagateNumericStats); +} + +//! The overflow check is derived from the types the function was called with, before they were cast +unique_ptr BindDecimalMultiply(BindScalarFunctionInput &input) { + auto bind_data = make_uniq(); + DecimalMultiplyResultType(input.GetBoundFunction().GetLogicalArguments(), bind_data->check_overflow); return std::move(bind_data); } @@ -1093,6 +1091,7 @@ ScalarFunctionSet OperatorMultiplyFun::GetFunctions() { for (auto &type : LogicalType::Numeric()) { if (type.id() == LogicalTypeId::DECIMAL) { ScalarFunction function({type, type}, type, nullptr, BindDecimalMultiply); + function.SetResolveTypesCallback(DecimalMultiplyResolveTypes); function.SetSerializeCallback(SerializeDecimalArithmetic); function.SetDeserializeCallback( DeserializeDecimalArithmetic); @@ -1403,11 +1402,11 @@ ScalarFunctionSet OperatorIntegerDivideFun::GetFunctions() { // % [modulo] //===--------------------------------------------------------------------===// template -static unique_ptr BindDecimalModulo(BindScalarFunctionInput &input) { +static void DecimalModuloResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto bind_data = BindDecimalArithmetic(input); + auto check_overflow = ResolveDecimalArithmeticTypes(input); // now select the physical function to execute - if (bind_data->check_overflow) { + if (check_overflow) { // fallback to DOUBLE if the decimal type is not guaranteed to fit within the max decimal width for (auto &arg : bound_function.GetArguments()) { arg = LogicalType::DOUBLE; @@ -1417,7 +1416,6 @@ static unique_ptr BindDecimalModulo(BindScalarFunctionInput &input auto &result_type = bound_function.GetReturnType(); auto null_on_zero = !Settings::Get(input.GetClientContext()); bound_function.SetFunctionCallback(GetBinaryFunctionZeroCheck(result_type.InternalType(), null_on_zero)); - return std::move(bind_data); } template <> @@ -1446,7 +1444,9 @@ ScalarFunctionSet OperatorModuloFun::GetFunctions() { if (type.id() == LogicalTypeId::FLOAT || type.id() == LogicalTypeId::DOUBLE) { modulo.AddFunction(ScalarFunction({type, type}, type, nullptr, BindBinaryFloatingPoint)); } else if (type.id() == LogicalTypeId::DECIMAL) { - modulo.AddFunction(ScalarFunction({type, type}, type, nullptr, BindDecimalModulo)); + ScalarFunction function({type, type}, type, nullptr, BindDecimalArithmetic); + function.SetResolveTypesCallback(DecimalModuloResolveTypes); + modulo.AddFunction(std::move(function)); } else { modulo.AddFunction(ScalarFunction({type, type}, type, nullptr, BindDivisionByZero)); } diff --git a/src/duckdb/src/function/scalar/operator/decimal_division.cpp b/src/duckdb/src/function/scalar/operator/decimal_division.cpp index 2365179bd..d90950655 100644 --- a/src/duckdb/src/function/scalar/operator/decimal_division.cpp +++ b/src/duckdb/src/function/scalar/operator/decimal_division.cpp @@ -164,18 +164,18 @@ static scalar_function_t GetDecimalDivExecuteFunction(PhysicalType result_physic // result_scale = max(6, s1 + p2 + 1) // result_width = p1 - s1 + s2 + result_scale // Both are capped at Decimal::MAX_WIDTH_DECIMAL (38). -static unique_ptr DecimalDivisionBind(BindScalarFunctionInput &input) { +static void DecimalDivisionResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); + auto &lhs_type = input.GetArgumentType(0); + auto &rhs_type = input.GetArgumentType(1); uint8_t p1, s1, p2, s2; - if (!arguments[0]->GetReturnType().GetDecimalProperties(p1, s1) || - !arguments[1]->GetReturnType().GetDecimalProperties(p2, s2)) { + if (!lhs_type.GetDecimalProperties(p1, s1) || !rhs_type.GetDecimalProperties(p2, s2)) { throw InvalidInputException("decimal_division: both arguments must be DECIMAL"); } uint8_t result_scale; - if (arguments.size() == 3) { + if (input.GetArgumentCount() == 3) { auto scale_val = input.GetNonNullConstant(2); auto scale_i = scale_val.GetValue(); if (scale_i < 0 || scale_i > Decimal::MAX_WIDTH_DECIMAL) { @@ -222,8 +222,8 @@ static unique_ptr DecimalDivisionBind(BindScalarFunctionInput &inp bound_function.SetReturnType(LogicalType::DECIMAL(result_width, result_scale)); - auto lhs_physical = arguments[0]->GetReturnType().InternalType(); - auto rhs_physical = arguments[1]->GetReturnType().InternalType(); + auto lhs_physical = lhs_type.InternalType(); + auto rhs_physical = rhs_type.InternalType(); auto wider = MaxValue(lhs_physical, rhs_physical); int32_t scale_exp = s2 + result_scale - s1; @@ -251,10 +251,8 @@ static unique_ptr DecimalDivisionBind(BindScalarFunctionInput &inp // during plan deserialization (bind is re-called with the stored argument types, and // changing p changes the result-width formula). // For cross-tier inputs, promote the narrower argument to the wider physical tier. - bound_function.GetArguments()[0] = - (lhs_physical != wider) ? LogicalType::DECIMAL(input_max_width, s1) : arguments[0]->GetReturnType(); - bound_function.GetArguments()[1] = - (rhs_physical != wider) ? LogicalType::DECIMAL(input_max_width, s2) : arguments[1]->GetReturnType(); + bound_function.GetArguments()[0] = (lhs_physical != wider) ? LogicalType::DECIMAL(input_max_width, s1) : lhs_type; + bound_function.GetArguments()[1] = (rhs_physical != wider) ? LogicalType::DECIMAL(input_max_width, s2) : rhs_type; switch (wider) { case PhysicalType::INT16: @@ -282,8 +280,14 @@ static unique_ptr DecimalDivisionBind(BindScalarFunctionInput &inp bound_function.SetFunctionCallback(GetDecimalDivExecuteFunction(result_physical)); break; } +} - return make_uniq(scale_exp); +static unique_ptr DecimalDivisionBind(BindScalarFunctionInput &input) { + auto &bound_function = input.GetBoundFunction(); + auto lhs_scale = DecimalType::GetScale(bound_function.GetArguments()[0]); + auto rhs_scale = DecimalType::GetScale(bound_function.GetArguments()[1]); + auto result_scale = DecimalType::GetScale(bound_function.GetReturnType()); + return make_uniq(rhs_scale + result_scale - lhs_scale); } //===--------------------------------------------------------------------===// @@ -296,6 +300,7 @@ ScalarFunctionSet DecimalDivisionFun::GetFunctions() { ScalarFunction two_arg({}, decimal_type, DecimalDivExecute, DecimalDivisionBind); two_arg.GetSignature().AddParameter("x", decimal_type).AddParameter("y", decimal_type); + two_arg.SetResolveTypesCallback(DecimalDivisionResolveTypes); two_arg.SetFallible(); set.AddFunction(two_arg); @@ -304,6 +309,7 @@ ScalarFunctionSet DecimalDivisionFun::GetFunctions() { .AddParameter("x", decimal_type) .AddParameter("y", decimal_type) .AddParameter("scale", LogicalType::INTEGER); + three_arg.SetResolveTypesCallback(DecimalDivisionResolveTypes); three_arg.SetFallible(); set.AddFunction(three_arg); diff --git a/src/duckdb/src/function/scalar/string/concat.cpp b/src/duckdb/src/function/scalar/string/concat.cpp index d3b05040c..f2b194067 100644 --- a/src/duckdb/src/function/scalar/string/concat.cpp +++ b/src/duckdb/src/function/scalar/string/concat.cpp @@ -212,12 +212,14 @@ void SetArgumentType(BoundScalarFunction &bound_function, const LogicalType &typ bound_function.SetReturnType(type); } -unique_ptr BindListConcat(ClientContext &context, BoundScalarFunction &bound_function, - vector> &arguments, bool is_operator) { +void ResolveListConcatTypes(ResolveScalarFunctionTypesInput &input, bool is_operator) { + auto &context = input.GetClientContext(); + auto &bound_function = input.GetBoundFunction(); LogicalType child_type = LogicalType::SQLNULL; bool all_null = true; - for (auto &arg : arguments) { - auto &return_type = arg->GetReturnType(); + for (idx_t i = 0; i < input.GetArgumentCount(); i++) { + auto &arg = input.GetArgument(i); + auto &return_type = arg.GetReturnType(); if (return_type == LogicalTypeId::SQLNULL) { // we mimic postgres behaviour: list_concat(NULL, my_list) = my_list continue; @@ -235,95 +237,93 @@ unique_ptr BindListConcat(ClientContext &context, BoundScalarFunct break; default: { string type_list; - for (idx_t arg_idx = 0; arg_idx < arguments.size(); arg_idx++) { + for (idx_t arg_idx = 0; arg_idx < input.GetArgumentCount(); arg_idx++) { if (!type_list.empty()) { - if (arg_idx + 1 == arguments.size()) { + if (arg_idx + 1 == input.GetArgumentCount()) { // last argument type_list += " and "; } else { type_list += ", "; } } - type_list += arguments[arg_idx]->GetReturnType().ToString(); + type_list += input.GetArgumentType(arg_idx).ToString(); } - throw BinderException(*arg, "Cannot concatenate types %s - an explicit cast is required", type_list); + throw BinderException(arg, "Cannot concatenate types %s - an explicit cast is required", type_list); } } if (!LogicalType::TryGetMaxLogicalType(context, child_type, next_type, child_type)) { - throw BinderException(*arg, - "Cannot concatenate lists of types %s[] and %s[] - an explicit cast is required", + throw BinderException(arg, "Cannot concatenate lists of types %s[] and %s[] - an explicit cast is required", child_type.ToString(), next_type.ToString()); } } if (all_null) { // all arguments are NULL SetArgumentType(bound_function, LogicalTypeId::SQLNULL, is_operator); - return make_uniq(bound_function.GetReturnType(), is_operator); + return; } - auto list_type = LogicalType::LIST(child_type); - - SetArgumentType(bound_function, list_type, is_operator); - return make_uniq(bound_function.GetReturnType(), is_operator); + SetArgumentType(bound_function, LogicalType::LIST(child_type), is_operator); } -unique_ptr BindConcatFunctionInternal(ClientContext &context, BoundScalarFunction &bound_function, - vector> &arguments, bool is_operator) { +void ResolveConcatTypesInternal(ResolveScalarFunctionTypesInput &input, bool is_operator) { + auto &bound_function = input.GetBoundFunction(); bool list_concat = false; bool all_null = true; // blob concat is only supported for the concat operator - regular concat converts to varchar bool all_blob = is_operator ? true : false; - for (auto &arg : arguments) { - if (arg->GetReturnType().id() == LogicalTypeId::UNKNOWN) { + for (auto &arg_type : input.GetArgumentTypes()) { + if (arg_type.id() == LogicalTypeId::UNKNOWN) { throw ParameterNotResolvedException(); } - if (arg->GetReturnType().id() == LogicalTypeId::LIST || arg->GetReturnType().id() == LogicalTypeId::ARRAY) { + if (arg_type.id() == LogicalTypeId::LIST || arg_type.id() == LogicalTypeId::ARRAY) { list_concat = true; } - if (arg->GetReturnType().id() != LogicalTypeId::BLOB) { + if (arg_type.id() != LogicalTypeId::BLOB) { all_blob = false; } - if (arg->GetReturnType().id() != LogicalTypeId::SQLNULL) { + if (arg_type.id() != LogicalTypeId::SQLNULL) { all_null = false; } } if (list_concat) { - return BindListConcat(context, bound_function, arguments, is_operator); + ResolveListConcatTypes(input, is_operator); + return; } if (all_null) { if (is_operator) { SetArgumentType(bound_function, LogicalTypeId::SQLNULL, is_operator); - return make_uniq(bound_function.GetReturnType(), is_operator); + return; } const auto &func_args = bound_function.GetArguments(); if (!func_args.empty() && (func_args[0].id() == LogicalTypeId::LIST || func_args[0].id() == LogicalTypeId::ARRAY)) { SetArgumentType(bound_function, LogicalTypeId::SQLNULL, is_operator); - return make_uniq(bound_function.GetReturnType(), is_operator); + return; } SetArgumentType(bound_function, LogicalTypeId::VARCHAR, is_operator); - return make_uniq(bound_function.GetReturnType(), is_operator); + return; } auto return_type = all_blob ? LogicalType::BLOB : LogicalType::VARCHAR; // we can now assume that the input is a string or castable to a string SetArgumentType(bound_function, return_type, is_operator); - return make_uniq(bound_function.GetReturnType(), is_operator); +} + +void ConcatFunctionResolveTypes(ResolveScalarFunctionTypesInput &input) { + ResolveConcatTypesInternal(input, false); +} + +void ConcatOperatorResolveTypes(ResolveScalarFunctionTypesInput &input) { + ResolveConcatTypesInternal(input, true); } unique_ptr BindConcatFunction(BindScalarFunctionInput &input) { - auto &context = input.GetClientContext(); - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - return BindConcatFunctionInternal(context, bound_function, arguments, false); + return make_uniq(input.GetBoundFunction().GetReturnType(), false); } unique_ptr BindConcatOperator(BindScalarFunctionInput &input) { - auto &context = input.GetClientContext(); - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - return BindConcatFunctionInternal(context, bound_function, arguments, true); + return make_uniq(input.GetBoundFunction().GetReturnType(), true); } unique_ptr ListConcatStats(ClientContext &context, FunctionStatisticsInput &input) { @@ -342,6 +342,7 @@ ScalarFunction ListConcatFun::GetFunction() { auto fun = ScalarFunction({}, LogicalType::LIST(LogicalType::ANY), ConcatFunction, BindConcatFunction, ListConcatStats); fun.GetSignature().AddArgs("args", LogicalType::LIST(LogicalType::ANY)); + fun.SetResolveTypesCallback(ConcatFunctionResolveTypes); fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); return fun; } @@ -358,6 +359,7 @@ ScalarFunction ConcatFun::GetFunction() { ScalarFunction concat = ScalarFunction("concat", {}, LogicalType::ANY, ConcatFunction, BindConcatFunction); concat.GetSignature().AddParameter("value", LogicalType::ANY); concat.GetSignature().AddArgs("args", LogicalType::ANY); + concat.SetResolveTypesCallback(ConcatFunctionResolveTypes); concat.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); return concat; } @@ -365,6 +367,7 @@ ScalarFunction ConcatFun::GetFunction() { ScalarFunction ConcatOperatorFun::GetFunction() { ScalarFunction concat_op = ScalarFunction("||", {}, LogicalType::ANY, ConcatFunction, BindConcatOperator); concat_op.GetSignature().AddParameter("arg1", LogicalType::ANY).AddParameter("arg2", LogicalType::ANY); + concat_op.SetResolveTypesCallback(ConcatOperatorResolveTypes); return concat_op; } diff --git a/src/duckdb/src/function/scalar/string/length.cpp b/src/duckdb/src/function/scalar/string/length.cpp index abb1be5e5..8fddb4375 100644 --- a/src/duckdb/src/function/scalar/string/length.cpp +++ b/src/duckdb/src/function/scalar/string/length.cpp @@ -161,14 +161,14 @@ void ArrayLengthFunction(DataChunk &args, ExpressionState &state, Vector &result } } -unique_ptr ArrayOrListLengthBind(BindScalarFunctionInput &input) { +void ArrayOrListLengthResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - if (arguments[0]->HasParameter() || arguments[0]->GetReturnType().id() == LogicalTypeId::UNKNOWN) { + auto &argument = input.GetArgument(0); + if (argument.HasParameter() || argument.GetReturnType().id() == LogicalTypeId::UNKNOWN) { throw ParameterNotResolvedException(); } - const auto &arg_type = arguments[0]->GetReturnType().id(); + const auto &arg_type = argument.GetReturnType().id(); if (arg_type == LogicalTypeId::ARRAY) { bound_function.SetFunctionCallback(ArrayLengthFunction); } else if (arg_type == LogicalTypeId::LIST) { @@ -177,8 +177,7 @@ unique_ptr ArrayOrListLengthBind(BindScalarFunctionInput &input) { // Unreachable throw BinderException("length can only be used on arrays or lists"); } - bound_function.GetArguments()[0] = arguments[0]->GetReturnType(); - return nullptr; + bound_function.GetArguments()[0] = argument.GetReturnType(); } //------------------------------------------------------------------ @@ -230,17 +229,27 @@ void ArrayLengthBinaryFunction(DataChunk &args, ExpressionState &state, Vector & }); } -unique_ptr ArrayOrListLengthBinaryBind(BindScalarFunctionInput &input) { +void ArrayOrListLengthBinaryResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - if (arguments[0]->HasParameter() || arguments[0]->GetReturnType().id() == LogicalTypeId::UNKNOWN) { + auto &argument = input.GetArgument(0); + if (argument.HasParameter() || argument.GetReturnType().id() == LogicalTypeId::UNKNOWN) { throw ParameterNotResolvedException(); } - auto type = arguments[0]->GetReturnType(); + auto &type = argument.GetReturnType(); if (type.id() == LogicalTypeId::ARRAY) { - bound_function.GetArguments()[0] = type; bound_function.SetFunctionCallback(ArrayLengthBinaryFunction); + } else if (type.id() == LogicalTypeId::LIST) { + bound_function.SetFunctionCallback(ListLengthBinaryFunction); + } else { + // Unreachable + throw BinderException("array_length can only be used on arrays or lists"); + } + bound_function.GetArguments()[0] = type; +} +unique_ptr ArrayOrListLengthBinaryBind(BindScalarFunctionInput &input) { + auto type = input.GetBoundFunction().GetArguments()[0]; + if (type.id() == LogicalTypeId::ARRAY) { // If the input is an array, the dimensions are constant, so we can calculate them at bind time vector dimensions; while (true) { @@ -254,15 +263,8 @@ unique_ptr ArrayOrListLengthBinaryBind(BindScalarFunctionInput &in auto data = make_uniq(); data->dimensions = dimensions; return std::move(data); - - } else if (type.id() == LogicalTypeId::LIST) { - bound_function.SetFunctionCallback(ListLengthBinaryFunction); - bound_function.GetArguments()[0] = type; - return nullptr; - } else { - // Unreachable - throw BinderException("array_length can only be used on arrays or lists"); } + return nullptr; } } // namespace @@ -281,7 +283,8 @@ ScalarFunctionSet LengthFun::GetFunctions() { bit_fun.GetSignature().AddParameter("bit", LogicalType::BIT); length.AddFunction(bit_fun); - ScalarFunction list_fun({}, LogicalType::BIGINT, nullptr, ArrayOrListLengthBind); + ScalarFunction list_fun({}, LogicalType::BIGINT, nullptr); + list_fun.SetResolveTypesCallback(ArrayOrListLengthResolveTypes); list_fun.GetSignature().AddParameter("list", LogicalType::LIST(LogicalType::ANY)); length.AddFunction(list_fun); @@ -300,7 +303,8 @@ ScalarFunctionSet LengthGraphemeFun::GetFunctions() { ScalarFunctionSet ArrayLengthFun::GetFunctions() { ScalarFunctionSet array_length("array_length"); - ScalarFunction unary({}, LogicalType::BIGINT, nullptr, ArrayOrListLengthBind); + ScalarFunction unary({}, LogicalType::BIGINT, nullptr); + unary.SetResolveTypesCallback(ArrayOrListLengthResolveTypes); unary.GetSignature().AddParameter("list", LogicalType::LIST(LogicalType::ANY)); array_length.AddFunction(unary); @@ -308,6 +312,7 @@ ScalarFunctionSet ArrayLengthFun::GetFunctions() { binary.GetSignature() .AddParameter("list", LogicalType::LIST(LogicalType::ANY)) .AddParameter("dimension", LogicalType::BIGINT); + binary.SetResolveTypesCallback(ArrayOrListLengthBinaryResolveTypes); array_length.AddFunction(binary); array_length.SetFallible(); diff --git a/src/duckdb/src/function/scalar/struct/remap_struct.cpp b/src/duckdb/src/function/scalar/struct/remap_struct.cpp index f94d340d9..824eb7832 100644 --- a/src/duckdb/src/function/scalar/struct/remap_struct.cpp +++ b/src/duckdb/src/function/scalar/struct/remap_struct.cpp @@ -516,34 +516,32 @@ struct RemapEntry { } }; -unique_ptr RemapStructBind(BindScalarFunctionInput &input) { - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - D_ASSERT(arguments.size() == 4); +//! Verifies that the (uncast) argument types can be remapped +void VerifyRemapArgumentTypes(const vector &types) { + D_ASSERT(types.size() == 4); for (idx_t arg_idx = 0; arg_idx < 3; arg_idx++) { - auto &arg = arguments[arg_idx]; - if (arg->GetReturnType().id() == LogicalTypeId::UNKNOWN) { + auto &arg_type = types[arg_idx]; + if (arg_type.id() == LogicalTypeId::UNKNOWN) { throw ParameterNotResolvedException(); } - if (arg->GetReturnType().id() == LogicalTypeId::SQLNULL && arg_idx == 2) { + if (arg_type.id() == LogicalTypeId::SQLNULL && arg_idx == 2) { // remap target can be NULL continue; } - if (!IsRemappable(arg->GetReturnType())) { - throw BinderException("Struct remap can only remap nested types, not '%s'", - arg->GetReturnType().ToString()); - } else if (StructType::IsStruct(arg->GetReturnType()) && StructType::IsUnnamed(arg->GetReturnType())) { + if (!IsRemappable(arg_type)) { + throw BinderException("Struct remap can only remap nested types, not '%s'", arg_type.ToString()); + } else if (StructType::IsStruct(arg_type) && StructType::IsUnnamed(arg_type)) { throw BinderException("Struct remap can only remap named structs"); } } - auto &from_type = arguments[0]->GetReturnType(); - auto &to_type = arguments[1]->GetReturnType(); + auto &from_type = types[0]; + auto &to_type = types[1]; - auto &defaults = arguments[3]; - if (defaults->GetReturnType().id() != LogicalTypeId::SQLNULL && !StructType::IsStruct(defaults->GetReturnType())) { + auto &defaults_type = types[3]; + if (defaults_type.id() != LogicalTypeId::SQLNULL && !StructType::IsStruct(defaults_type)) { throw BinderException("The defaults provided to 'remap_struct' should be of type STRUCT if they're not NULL"); } - if (StructType::IsStruct(defaults->GetReturnType()) && StructType::IsUnnamed(defaults->GetReturnType())) { + if (StructType::IsStruct(defaults_type) && StructType::IsUnnamed(defaults_type)) { throw BinderException("The defaults have to be either NULL or a named STRUCT, not an unnamed struct"); } @@ -551,15 +549,19 @@ unique_ptr RemapStructBind(BindScalarFunctionInput &input) { throw BinderException("Can't change source type (%s) to target type (%s), type conversion not allowed", from_type.ToString(), to_type.ToString()); } +} - Value remap_val = input.GetConstant(2); +//! (Recursively) generates the remap entries from the (uncast) argument types +identifier_map_t GetRemapEntries(const vector &types, const Value &remap_val, + bool defaults_are_constant) { + auto &from_type = types[0]; + auto &to_type = types[1]; auto source_map = RemapIndex::GetMap(from_type); auto target_map = RemapIndex::GetMap(to_type); - // (recursively) generate the remap entries identifier_map_t remap_map; if (!remap_val.IsNull()) { - auto &remap_types = StructType::GetChildTypes(arguments[2]->GetReturnType()); + auto &remap_types = StructType::GetChildTypes(types[2]); auto &remap_values = StructValue::GetChildren(remap_val); for (idx_t remap_idx = 0; remap_idx < remap_values.size(); remap_idx++) { auto &remap_val = remap_values[remap_idx]; @@ -567,13 +569,13 @@ unique_ptr RemapStructBind(BindScalarFunctionInput &input) { RemapEntry::PerformRemap(remap_target, remap_val, source_map, target_map, remap_map, from_type); } } - if (!arguments[3]->IsFoldable()) { + if (!defaults_are_constant) { throw BinderException("Default values must be constants"); } - if (arguments[3]->GetReturnType().id() != LogicalTypeId::SQLNULL) { + if (types[3].id() != LogicalTypeId::SQLNULL) { // (recursively) handle the defaults (if there are any) - auto &default_types = StructType::GetChildTypes(arguments[3]->GetReturnType()); + auto &default_types = StructType::GetChildTypes(types[3]); for (idx_t default_idx = 0; default_idx < default_types.size(); default_idx++) { auto &default_target = default_types[default_idx].first; auto &default_type = default_types[default_idx].second; @@ -581,20 +583,28 @@ unique_ptr RemapStructBind(BindScalarFunctionInput &input) { remap_map); } } + return remap_map; +} - // construct the final remapping - auto remap = RemapEntry::ConstructMap(to_type, remap_map); +void RemapStructResolveTypes(ResolveScalarFunctionTypesInput &input) { + auto &bound_function = input.GetBoundFunction(); + auto types = input.GetArgumentTypes(); + VerifyRemapArgumentTypes(types); + auto remap_map = GetRemapEntries(types, input.GetConstant(2), input.GetArgument(3).IsFoldable()); // push a cast for argument 0 to match up the source types to the target - auto new_type = RemapEntry::RemapCast(from_type, remap_map); - - bound_function.GetArguments()[0] = std::move(new_type); - bound_function.GetArguments()[1] = arguments[1]->GetReturnType(); - bound_function.GetArguments()[2] = arguments[2]->GetReturnType(); - bound_function.GetArguments()[3] = arguments[3]->GetReturnType(); - bound_function.SetReturnType(arguments[1]->GetReturnType()); + bound_function.GetArguments()[0] = RemapEntry::RemapCast(types[0], remap_map); + bound_function.GetArguments()[1] = types[1]; + bound_function.GetArguments()[2] = types[2]; + bound_function.GetArguments()[3] = types[3]; + bound_function.SetReturnType(types[1]); +} - return make_uniq(std::move(remap)); +//! The remapping is derived from the types the function was called with, before the input was cast +unique_ptr RemapStructBind(BindScalarFunctionInput &input) { + auto &types = input.GetBoundFunction().GetLogicalArguments(); + auto remap_map = GetRemapEntries(types, input.GetConstant(2), input.GetArguments()[3]->IsFoldable()); + return make_uniq(RemapEntry::ConstructMap(types[1], remap_map)); } } // namespace @@ -606,6 +616,7 @@ ScalarFunction RemapStructFun::GetFunction() { .AddParameter("target_type", LogicalTypeId::ANY) .AddParameter("mapping", LogicalTypeId::ANY) .AddParameter("defaults", LogicalTypeId::ANY); + remap.SetResolveTypesCallback(RemapStructResolveTypes); remap.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); return remap; } diff --git a/src/duckdb/src/function/scalar/struct/struct_contains.cpp b/src/duckdb/src/function/scalar/struct/struct_contains.cpp index 2220a12c5..5710721ca 100644 --- a/src/duckdb/src/function/scalar/struct/struct_contains.cpp +++ b/src/duckdb/src/function/scalar/struct/struct_contains.cpp @@ -191,7 +191,7 @@ static void StructSearchFunction(DataChunk &args, ExpressionState &state, Vector StructSearchOp(input_vector, members, target, count, result); } -static unique_ptr StructContainsBind(BindScalarFunctionInput &input) { +static void StructContainsResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &context = input.GetClientContext(); auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); @@ -205,14 +205,14 @@ static unique_ptr StructContainsBind(BindScalarFunctionInput &inpu bound_function.GetArguments()[0] = LogicalTypeId::UNKNOWN; bound_function.GetArguments()[1] = LogicalTypeId::UNKNOWN; bound_function.SetReturnType(LogicalType::SQLNULL); - return nullptr; + return; } auto &struct_children = StructType::GetChildTypes(arguments[0]->GetReturnType()); if (struct_children.empty()) { // an empty struct contains nothing, the search always returns false (or position 0) bound_function.GetArguments()[0] = child_type; - return nullptr; + return; } if (child_type.id() != LogicalTypeId::TUPLE) { throw BinderException("%s can only be used on unnamed structs", bound_function.GetName()); @@ -221,38 +221,37 @@ static unique_ptr StructContainsBind(BindScalarFunctionInput &inpu // the value type must match one of the struct's children LogicalType max_child_type = arguments[1]->GetReturnType(); - vector new_child_types; + vector compatible_children; for (auto &child : struct_children) { - if (!LogicalType::TryGetMaxLogicalType(context, child.second, max_child_type, max_child_type)) { - new_child_types.push_back(child.second); - continue; - } - - new_child_types.push_back(max_child_type); - bound_function.GetArguments()[1] = max_child_type; + compatible_children.push_back( + LogicalType::TryGetMaxLogicalType(context, child.second, max_child_type, max_child_type)); } + // cast all compatible children to the final max type child_list_t cast_children; - for (idx_t i = 0; i < new_child_types.size(); i++) { - cast_children.push_back(make_pair(struct_children[i].first, new_child_types[i])); + for (idx_t i = 0; i < struct_children.size(); i++) { + auto &child = struct_children[i]; + cast_children.push_back(make_pair(child.first, compatible_children[i] ? max_child_type : child.second)); + if (compatible_children[i]) { + bound_function.GetArguments()[1] = max_child_type; + } } // the input is an unnamed struct - represent it as a TUPLE bound_function.GetArguments()[0] = LogicalType::TUPLE(cast_children); - - return nullptr; } ScalarFunction StructContainsFun::GetFunction() { - ScalarFunction fun("struct_contains", {}, LogicalType::BOOLEAN, StructSearchFunction, StructContainsBind); + ScalarFunction fun("struct_contains", {}, LogicalType::BOOLEAN, StructSearchFunction); fun.GetSignature().AddParameter("struct", LogicalTypeId::TUPLE).AddParameter("entry", LogicalType::ANY); + fun.SetResolveTypesCallback(StructContainsResolveTypes); return fun; } ScalarFunction StructPositionFun::GetFunction() { - ScalarFunction fun("struct_contains", {}, LogicalType::INTEGER, StructSearchFunction, - StructContainsBind); + ScalarFunction fun("struct_contains", {}, LogicalType::INTEGER, StructSearchFunction); fun.GetSignature().AddParameter("struct", LogicalTypeId::TUPLE).AddParameter("entry", LogicalType::ANY); + fun.SetResolveTypesCallback(StructContainsResolveTypes); fun.SetNullHandling(FunctionNullHandling::SPECIAL_HANDLING); return fun; } diff --git a/src/duckdb/src/function/scalar/struct/struct_extract.cpp b/src/duckdb/src/function/scalar/struct/struct_extract.cpp index addc7b19f..030f8a721 100644 --- a/src/duckdb/src/function/scalar/struct/struct_extract.cpp +++ b/src/duckdb/src/function/scalar/struct/struct_extract.cpp @@ -26,24 +26,35 @@ static void StructExtractFunction(DataChunk &args, ExpressionState &state, Vecto result.Verify(); } -static unique_ptr StructExtractBind(BindScalarFunctionInput &input) { +enum class StructExtractKey : uint8_t { NAME, INDEX, INDEX_AT }; + +//! Validates the struct argument - the extracted entry and the return type are resolved in the bind +template +static void StructExtractResolveTypes(ResolveScalarFunctionTypesInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); D_ASSERT(bound_function.GetArguments().size() == 2); - auto &child_type = arguments[0]->GetReturnType(); + auto &child_type = input.GetArgumentType(0); if (child_type.id() == LogicalTypeId::UNKNOWN) { throw ParameterNotResolvedException(); } D_ASSERT(StructType::IsStruct(child_type)); - auto &struct_children = StructType::GetChildTypes(child_type); - if (struct_children.empty()) { + if (StructType::GetChildTypes(child_type).empty()) { throw BinderException("Can't extract something from an empty struct"); } - if (child_type.id() == LogicalTypeId::TUPLE) { + if (KEY == StructExtractKey::NAME && child_type.id() == LogicalTypeId::TUPLE) { throw BinderException( "struct_extract with a string key cannot be used on an unnamed struct, use a numeric index instead"); } + if (KEY == StructExtractKey::INDEX && child_type.id() != LogicalTypeId::TUPLE) { + throw BinderException( + "struct_extract with an integer key can only be used on unnamed structs, use a string key instead"); + } bound_function.GetArguments()[0] = child_type; +} + +static unique_ptr StructExtractBind(BindScalarFunctionInput &input) { + auto &bound_function = input.GetBoundFunction(); + auto &struct_children = StructType::GetChildTypes(bound_function.GetArguments()[0]); auto key_val = input.GetNonNullConstant(1); D_ASSERT(key_val.type().id() == LogicalTypeId::VARCHAR); @@ -82,25 +93,9 @@ static unique_ptr StructExtractBind(BindScalarFunctionInput &input return StructExtractAtFun::GetBindData(key_index); } -static unique_ptr StructExtractBindInternal(BindScalarFunctionInput &input, bool struct_extract) { +static unique_ptr StructExtractBindIndex(BindScalarFunctionInput &input) { auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - D_ASSERT(bound_function.GetArguments().size() == 2); - auto &child_type = arguments[0]->GetReturnType(); - if (child_type.id() == LogicalTypeId::UNKNOWN) { - throw ParameterNotResolvedException(); - } - D_ASSERT(StructType::IsStruct(child_type)); - auto &struct_children = StructType::GetChildTypes(child_type); - if (struct_children.empty()) { - throw BinderException("Can't extract something from an empty struct"); - } - if (struct_extract && child_type.id() != LogicalTypeId::TUPLE) { - throw BinderException( - "struct_extract with an integer key can only be used on unnamed structs, use a string key instead"); - } - bound_function.GetArguments()[0] = child_type; - + auto &struct_children = StructType::GetChildTypes(bound_function.GetArguments()[0]); Value key_val = input.GetConstant(1); auto index = key_val.GetValue(); if (index <= 0 || idx_t(index) > struct_children.size()) { @@ -111,14 +106,6 @@ static unique_ptr StructExtractBindInternal(BindScalarFunctionInpu return StructExtractAtFun::GetBindData(NumericCast(index - 1)); } -static unique_ptr StructExtractBindIndex(BindScalarFunctionInput &input) { - return StructExtractBindInternal(input, true); -} - -static unique_ptr StructExtractAtBind(BindScalarFunctionInput &input) { - return StructExtractBindInternal(input, false); -} - static unique_ptr PropagateStructExtractStats(ClientContext &context, FunctionStatisticsInput &input) { auto &child_stats = input.child_stats; auto &bind_data = input.bind_data; @@ -136,6 +123,7 @@ ScalarFunction GetKeyExtractFunction() { ScalarFunction fun("struct_extract", {}, LogicalType::ANY, StructExtractFunction, StructExtractBind, PropagateStructExtractStats); fun.GetSignature().AddParameter("struct", LogicalTypeId::STRUCT).AddParameter("entry", LogicalType::VARCHAR); + fun.SetResolveTypesCallback(StructExtractResolveTypes); return fun; } @@ -143,13 +131,15 @@ ScalarFunction GetIndexExtractFunction() { ScalarFunction fun("struct_extract", {}, LogicalType::ANY, StructExtractFunction, StructExtractBindIndex, PropagateStructExtractStats); fun.GetSignature().AddParameter("tuple", LogicalTypeId::TUPLE).AddParameter("index", LogicalType::BIGINT); + fun.SetResolveTypesCallback(StructExtractResolveTypes); return fun; } ScalarFunction GetExtractAtFunction() { - ScalarFunction fun("struct_extract_at", {}, LogicalType::ANY, StructExtractFunction, StructExtractAtBind, + ScalarFunction fun("struct_extract_at", {}, LogicalType::ANY, StructExtractFunction, StructExtractBindIndex, PropagateStructExtractStats); fun.GetSignature().AddParameter("struct", LogicalTypeId::STRUCT).AddParameter("index", LogicalType::BIGINT); + fun.SetResolveTypesCallback(StructExtractResolveTypes); return fun; } diff --git a/src/duckdb/src/function/scalar/system/aggregate_export.cpp b/src/duckdb/src/function/scalar/system/aggregate_export.cpp index 879c26314..b36b9a219 100644 --- a/src/duckdb/src/function/scalar/system/aggregate_export.cpp +++ b/src/duckdb/src/function/scalar/system/aggregate_export.cpp @@ -702,7 +702,9 @@ void ParseOrderBys(const Value &order_value, idx_t column_count, vector ToAggregateStateBind(BindScalarFunctionInput &input) { +//! Binds the exported aggregate from the constant arguments, and resolves the state / return types from it +template +unique_ptr BindToAggregateState(INPUT &input) { auto &bound_function = input.GetBoundFunction(); auto &arguments = input.GetArguments(); auto &context = input.GetClientContext(); @@ -753,8 +755,20 @@ unique_ptr ToAggregateStateBind(BindScalarFunctionInput &input) { throw BinderException("to_aggregate_state: an ordered aggregate state value must be a LIST of STRUCTs (the " "buffer of values), e.g. [{'v0': ...}, ...]"); } - const auto buffer_struct = ListType::GetChildType(state_type); - const idx_t column_count = StructType::GetChildTypes(buffer_struct).size(); + auto buffer_columns = StructType::GetChildTypes(ListType::GetChildType(state_type)); + const idx_t column_count = buffer_columns.size(); + // the leading buffered columns are the aggregate's arguments - cast them to the argument types + auto &aggr_arguments = aggr.GetArguments(); + if (aggr_arguments.size() > column_count) { + throw BinderException("to_aggregate_state: argument count %llu exceeds the number of state columns (%llu)", + (uint64_t)aggr_arguments.size(), (uint64_t)column_count); + } + for (idx_t i = 0; i < aggr_arguments.size(); i++) { + if (aggr_arguments[i].IsComplete()) { + buffer_columns[i].second = aggr_arguments[i]; + } + } + const auto buffer_struct = LogicalType::STRUCT(std::move(buffer_columns)); vector orders; auto order_value = input.GetConstant(4); ParseOrderBys(order_value, column_count, orders); @@ -773,6 +787,14 @@ unique_ptr ToAggregateStateBind(BindScalarFunctionInput &input) { return std::move(bind_data); } +void ToAggregateStateResolveTypes(ResolveScalarFunctionTypesInput &input) { + BindToAggregateState(input); +} + +unique_ptr ToAggregateStateBind(BindScalarFunctionInput &input) { + return BindToAggregateState(input); +} + void ToAggregateStateFunction(DataChunk &input, ExpressionState &state, Vector &result) { // the input type is verified to match the state layout at bind time - we only need to reinterpret the vector result.Reinterpret(input.data[0]); @@ -924,6 +946,7 @@ ScalarFunctionSet ToAggregateStateFun::GetFunctions() { } ScalarFunction function("to_aggregate_state", arguments, LogicalTypeId::ANY, ToAggregateStateFunction, ToAggregateStateBind); + function.SetResolveTypesCallback(ToAggregateStateResolveTypes); auto &sig = function.GetSignature(); sig.GetParameter(0).SetName("data"); sig.GetParameter(1).SetName("name"); diff --git a/src/duckdb/src/function/scalar/system/parse_log_message.cpp b/src/duckdb/src/function/scalar/system/parse_log_message.cpp index 950af5600..81a4454d3 100644 --- a/src/duckdb/src/function/scalar/system/parse_log_message.cpp +++ b/src/duckdb/src/function/scalar/system/parse_log_message.cpp @@ -29,21 +29,23 @@ struct ParseLogMessageData : FunctionData { } }; +void ParseLogMessageResolveTypes(ResolveScalarFunctionTypesInput &input) { + if (input.GetArgumentCount() != 2) { + throw BinderException("structured_log_schema: expects 1 argument", input.GetArgument(0).GetAlias()); + } + // resolve the constant first, so that unresolved parameters are deferred + input.GetConstant(0); + if (input.GetArgumentType(0).id() != LogicalTypeId::VARCHAR) { + throw BinderException("structured_log_schema: 'log_type' argument must be a string"); + } +} + unique_ptr ParseLogMessageBind(BindScalarFunctionInput &input) { auto &context = input.GetClientContext(); auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - - if (arguments.size() != 2) { - throw BinderException("structured_log_schema: expects 1 argument", arguments[0]->GetAlias()); - } auto type_val = input.GetConstant(0); - if (arguments[0]->GetReturnType().id() != LogicalTypeId::VARCHAR) { - throw BinderException("structured_log_schema: 'log_type' argument must be a string"); - } - auto type = StringValue::Get(type_val); auto lookup = LogManager::Get(context).LookupLogType(type); @@ -83,6 +85,7 @@ ScalarFunction ParseLogMessage::GetFunction() { auto fun = ScalarFunction({}, LogicalType::ANY, ParseLogMessageFunction, ParseLogMessageBind, nullptr, nullptr, LogicalType(LogicalTypeId::INVALID)); fun.GetSignature().AddParameter("type", LogicalType::VARCHAR).AddParameter("message", LogicalType::VARCHAR); + fun.SetResolveTypesCallback(ParseLogMessageResolveTypes); fun.SetErrorMode(FunctionErrors::CAN_THROW_RUNTIME_ERROR); return fun; } diff --git a/src/duckdb/src/function/scalar/system/write_log.cpp b/src/duckdb/src/function/scalar/system/write_log.cpp index 78c454354..de3757b05 100644 --- a/src/duckdb/src/function/scalar/system/write_log.cpp +++ b/src/duckdb/src/function/scalar/system/write_log.cpp @@ -47,18 +47,19 @@ struct WriteLogBindData : FunctionData { } }; -unique_ptr WriteLogBind(BindScalarFunctionInput &input) { - auto &context = input.GetClientContext(); - auto &bound_function = input.GetBoundFunction(); - auto &arguments = input.GetArguments(); - - if (arguments.empty()) { +void WriteLogResolveTypes(ResolveScalarFunctionTypesInput &input) { + if (input.GetArgumentCount() == 0) { throw BinderException("write_log takes at least one argument"); } - - if (arguments[0]->GetReturnType() != LogicalType::VARCHAR) { + if (input.GetArgumentType(0) != LogicalType::VARCHAR) { throw InvalidTypeException("write_log first argument must be a VARCHAR"); } +} + +unique_ptr WriteLogBind(BindScalarFunctionInput &input) { + auto &context = input.GetClientContext(); + auto &bound_function = input.GetBoundFunction(); + auto &arguments = input.GetArguments(); // Used to replace the actual log call with a nop: useful for benchmarking auto result = make_uniq(); @@ -172,6 +173,7 @@ ScalarFunctionSet WriteLogFun::GetFunctions() { ScalarFunction fun({{"string", LogicalType::VARCHAR}}, LogicalType::ANY, WriteLogFunction, WriteLogBind, nullptr, nullptr, LogicalType(LogicalTypeId::INVALID), FunctionStability::VOLATILE); fun.GetSignature().AddKwargs("kwargs", LogicalType::ANY); + fun.SetResolveTypesCallback(WriteLogResolveTypes); fun.GetProperties().SetRequiresExpressionNames(true); fun.SetUnbindCallback(WriteLogUnbind); set.AddFunction(std::move(fun)); diff --git a/src/duckdb/src/function/scalar_function.cpp b/src/duckdb/src/function/scalar_function.cpp index 6cc03f145..b019d3cf9 100644 --- a/src/duckdb/src/function/scalar_function.cpp +++ b/src/duckdb/src/function/scalar_function.cpp @@ -24,9 +24,27 @@ void ThrowNonFallibleFunctionError(const Identifier &name, std::exception &ex) { name, error.RawMessage()); } +const Expression &ResolveScalarFunctionTypesInput::GetArgument(idx_t arg_idx) const { + D_ASSERT(arg_idx < arguments.size()); + return *arguments[arg_idx]; +} + +const LogicalType &ResolveScalarFunctionTypesInput::GetArgumentType(idx_t arg_idx) const { + return GetArgument(arg_idx).GetReturnType(); +} + +vector ResolveScalarFunctionTypesInput::GetArgumentTypes() const { + vector result; + result.reserve(arguments.size()); + for (auto &argument : arguments) { + result.push_back(argument->GetReturnType()); + } + return result; +} + bool ScalarFunctionCallbacks::operator==(const ScalarFunctionCallbacks &rhs) const { - return bind == rhs.bind && init_local_state == rhs.init_local_state && statistics == rhs.statistics && - bind_lambda == rhs.bind_lambda && bind_expression == rhs.bind_expression && + return resolve_types == rhs.resolve_types && bind == rhs.bind && init_local_state == rhs.init_local_state && + statistics == rhs.statistics && bind_lambda == rhs.bind_lambda && bind_expression == rhs.bind_expression && get_modified_databases == rhs.get_modified_databases && serialize == rhs.serialize && deserialize == rhs.deserialize && filter_prune == rhs.filter_prune && unbind == rhs.unbind; } diff --git a/src/duckdb/src/function/table/system/duckdb_log.cpp b/src/duckdb/src/function/table/system/duckdb_log.cpp index 74c9b5d1a..40c9ffdc3 100644 --- a/src/duckdb/src/function/table/system/duckdb_log.cpp +++ b/src/duckdb/src/function/table/system/duckdb_log.cpp @@ -15,8 +15,6 @@ struct DuckDBLogData : public GlobalTableFunctionState { log_storage->InitializeScan(*scan_state); total_rows = log_storage->GetScanRowCount(LoggingTargetTable::LOG_ENTRIES); } - DuckDBLogData() : log_storage(nullptr) { - } //! The log storage we are scanning shared_ptr log_storage; @@ -47,18 +45,20 @@ static unique_ptr DuckDBLogBind(ClientContext &context, TableFunct } unique_ptr DuckDBLogInit(ClientContext &context, TableFunctionInitInput &input) { - if (LogManager::Get(context).CanScan(LoggingTargetTable::LOG_ENTRIES)) { - return make_uniq(LogManager::Get(context).GetLogStorage()); + auto &log_manager = LogManager::Get(context); + if (!log_manager.CanScan(LoggingTargetTable::LOG_ENTRIES)) { + throw InvalidConfigurationException( + "Log storage '%s' does not support this query. Select a queryable storage, such as 'memory' or 'file', " + "before generating logs.", + log_manager.GetConfig().storage); } - return make_uniq(); + return make_uniq(log_manager.GetLogStorage()); } void DuckDBLogFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) { auto &data = data_p.global_state->Cast(); - if (data.log_storage) { - data.log_storage->Scan(*data.scan_state, output); - data.scanned_rows.fetch_add(output.size(), std::memory_order_relaxed); - } + data.log_storage->Scan(*data.scan_state, output); + data.scanned_rows.fetch_add(output.size(), std::memory_order_relaxed); } static double DuckDBLogProgress(ClientContext &context, const FunctionData *bind_data, diff --git a/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp b/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp index 4c389d6d6..1a8f18a8d 100644 --- a/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp +++ b/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp @@ -16,8 +16,6 @@ struct DuckDBLogContextData : public GlobalTableFunctionState { scan_state = log_storage->CreateScanState(LoggingTargetTable::LOG_CONTEXTS); log_storage->InitializeScan(*scan_state); } - DuckDBLogContextData() : log_storage(nullptr) { - } //! The log storage we are scanning shared_ptr log_storage; @@ -48,17 +46,19 @@ static unique_ptr DuckDBLogContextBind(ClientContext &context, Tab } unique_ptr DuckDBLogContextInit(ClientContext &context, TableFunctionInitInput &input) { - if (LogManager::Get(context).CanScan(LoggingTargetTable::LOG_CONTEXTS)) { - return make_uniq(LogManager::Get(context).GetLogStorage()); + auto &log_manager = LogManager::Get(context); + if (!log_manager.CanScan(LoggingTargetTable::LOG_CONTEXTS)) { + throw InvalidConfigurationException( + "Log storage '%s' does not support this query. Select a queryable storage, such as 'memory' or 'file', " + "before generating logs.", + log_manager.GetConfig().storage); } - return make_uniq(); + return make_uniq(log_manager.GetLogStorage()); } void DuckDBLogContextFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) { auto &data = data_p.global_state->Cast(); - if (data.log_storage) { - data.log_storage->Scan(*data.scan_state, output); - } + data.log_storage->Scan(*data.scan_state, output); } static unique_ptr DuckDBLogContextsBindReplace(ClientContext &context, TableFunctionBindInput &input) { diff --git a/src/duckdb/src/function/table/version/pragma_version.cpp b/src/duckdb/src/function/table/version/pragma_version.cpp index a7a8215dc..76068116b 100644 --- a/src/duckdb/src/function/table/version/pragma_version.cpp +++ b/src/duckdb/src/function/table/version/pragma_version.cpp @@ -1,5 +1,5 @@ #ifndef DUCKDB_PATCH_VERSION -#define DUCKDB_PATCH_VERSION "0-alpha44738" +#define DUCKDB_PATCH_VERSION "0-alpha45672" #endif #ifndef DUCKDB_MINOR_VERSION #define DUCKDB_MINOR_VERSION 0 @@ -8,10 +8,10 @@ #define DUCKDB_MAJOR_VERSION 2 #endif #ifndef DUCKDB_VERSION -#define DUCKDB_VERSION "v2.0.0-alpha44738" +#define DUCKDB_VERSION "v2.0.0-alpha45672" #endif #ifndef DUCKDB_SOURCE_ID -#define DUCKDB_SOURCE_ID "df47ba32d9" +#define DUCKDB_SOURCE_ID "f2f9329721" #endif #include "duckdb/function/table/system_functions.hpp" #include "duckdb/main/database.hpp" diff --git a/src/duckdb/src/function/window/window_value_function.cpp b/src/duckdb/src/function/window/window_value_function.cpp index 967554e2c..a9735aa08 100644 --- a/src/duckdb/src/function/window/window_value_function.cpp +++ b/src/duckdb/src/function/window/window_value_function.cpp @@ -1334,7 +1334,10 @@ struct TryExtrapolateOperator { template static bool Operation(const T &lo, const double d, const T &hi, T &result) { if (lo > hi) { - return Operation(hi, -d, lo, result); + // Swap the endpoints to keep the offset positive. + // The slope in the exchanged frame is (1 - d), not (-d): + // lo + d*(hi - lo) == hi + (1 - d)*(lo - hi) + return Operation(hi, 1 - d, lo, result); } const auto delta = LossyNumericCast(hi) - LossyNumericCast(lo); T offset; diff --git a/src/duckdb/src/include/duckdb.h b/src/duckdb/src/include/duckdb.h index 435115a3a..608800432 100644 --- a/src/duckdb/src/include/duckdb.h +++ b/src/duckdb/src/include/duckdb.h @@ -5628,6 +5628,15 @@ DUCKDB_C_API duckdb_state duckdb_pending_prepared(duckdb_prepared_statement prep /*! * Closes the pending result and de-allocates all memory allocated for the result. * + * Destroying a pending result whose statement has not completed aborts the statement. On autocommit, its writes are + * rolled back. Inside a transaction, a statement that may write invalidates the transaction, and a read-only statement + * just stops. Preparing or running another statement on the connection aborts a statement that has not completed the + * same way, so a COMMIT issued before a statement that may write completed rolls the transaction back. + * `duckdb_pending_execution_is_finished` reporting true does not mean that the statement completed. To make sure a + * statement takes effect, complete it before destroying the pending result: call `duckdb_execute_pending`, and fetch a + * streaming result until `duckdb_fetch_chunk` returns NULL. A NULL chunk is also returned on an error, so check + * `duckdb_result_error` afterwards. + * * history: * - stable: v0.5.0 * @@ -6502,6 +6511,13 @@ DUCKDB_C_API duckdb_state duckdb_query(duckdb_connection connection, const char /*! * Closes the result and de-allocates all memory allocated for that result. * + * Destroying a streaming result whose statement has not completed aborts the statement. On autocommit, its writes are + * rolled back. Inside a transaction, a statement that may write invalidates the transaction, and a read-only statement + * just stops. Preparing or running another statement on the connection aborts a statement that has not completed the + * same way, so a COMMIT issued before a statement that may write completed rolls the transaction back. To make sure the + * statement takes effect, complete it by fetching until `duckdb_fetch_chunk` returns NULL before destroying the result. + * A NULL chunk is also returned on an error, so check `duckdb_result_error` afterwards. + * * history: * - stable: v0.1.0 * diff --git a/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp b/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp index 6887cfb2e..1ff0a4b04 100644 --- a/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +++ b/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp @@ -69,6 +69,9 @@ class DuckTableEntry : public TableCatalogEntry { bool IsDuckTable() const override { return true; } + optional_ptr TryGetDuckTableEntry() override { + return this; + } //! Returns the virtual columns for this table virtual_column_map_t GetVirtualColumns() const override; diff --git a/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp b/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp index 6c0177e67..53fa36533 100644 --- a/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +++ b/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp @@ -27,6 +27,7 @@ namespace duckdb { class DataTable; +class DuckTableEntry; struct CreateTriggerInfo; struct RenameColumnInfo; @@ -109,9 +110,16 @@ class TableCatalogEntry : public StandardEntry { virtual TableFunction GetScanFunction(ClientContext &context, unique_ptr &bind_data, const EntryLookupInfo &lookup_info); + //! Whether this table should be bound like a DuckDB table. Entries that are not a DuckTableEntry can also + //! return true (e.g. to have DML bound with the DuckDB table layout), so use TryGetDuckTableEntry() instead of + //! casting. virtual bool IsDuckTable() const { return false; } + //! Returns this entry as a DuckTableEntry, or nullptr if it is not one + virtual optional_ptr TryGetDuckTableEntry() { + return nullptr; + } DUCKDB_API static string ColumnsToSQL(const ColumnList &columns, const vector> &constraints); diff --git a/src/duckdb/src/include/duckdb/common/multi_file/multi_file_function.hpp b/src/duckdb/src/include/duckdb/common/multi_file/multi_file_function.hpp index 7ce10705a..40a636668 100644 --- a/src/duckdb/src/include/duckdb/common/multi_file/multi_file_function.hpp +++ b/src/duckdb/src/include/duckdb/common/multi_file/multi_file_function.hpp @@ -220,6 +220,7 @@ class MultiFileFunction : public TableFunction { result->table_columns = IdentifiersToStrings(names); } result->columns = MultiFileColumnDefinition::ColumnsFromNamesAndTypes(result->names, result->types); + result->file_options.VerifyColumnStatistics(result->names, result->types); return std::move(result); } @@ -1147,6 +1148,19 @@ class MultiFileFunction : public TableFunction { } } + // statistics the caller gave for the column (the "column_statistics" option) stand in for the files' - + // they describe the scan as a whole, which is what the optimizer asks about, where a file's describe one file + if (!bind_data.file_options.column_statistics.IsNull()) { + auto explicit_stats = bind_data.file_options.GetColumnStatistics(col_name, bind_data.types[primary_index]); + if (explicit_stats) { + if (!column_index.IsPushdownExtract()) { + return explicit_stats; + } + auto storage_index = StorageIndex::FromColumnIndex(column_index); + return explicit_stats->PushdownExtract(storage_index.GetChildIndexes()[0]); + } + } + // NOTE: we do not want to parse the file metadata for the sole purpose of getting column statistics const bool multiple_files = bind_data.file_list->GetExpandResult() == FileExpandResult::MULTIPLE_FILES; if (multiple_files && !bind_data.file_options.union_by_name) { diff --git a/src/duckdb/src/include/duckdb/common/multi_file/multi_file_options.hpp b/src/duckdb/src/include/duckdb/common/multi_file/multi_file_options.hpp index 0e7f829e0..c51c42a1f 100644 --- a/src/duckdb/src/include/duckdb/common/multi_file/multi_file_options.hpp +++ b/src/duckdb/src/include/duckdb/common/multi_file/multi_file_options.hpp @@ -14,6 +14,7 @@ #include "duckdb/common/multi_file/multi_file_data.hpp" namespace duckdb { +class BaseStatistics; struct BindInfo; class MultiFileList; @@ -40,6 +41,18 @@ struct MultiFileOptions { //! Whether to add a "file_row_number" column with the row number of each row within its file - it is read from the //! row number virtual column of the reader bool file_row_number = false; + //! (Optional) Column statistics given by the "column_statistics" option: a MAP of column key to a MAP of statistic + //! name to its value as text - "min", "max", "count", "null_count" and "distinct_count" - the shape + //! COPY ... (RETURN_STATS) reports them in, keys included: a quoted column path, "s"."x" for a struct field, + //! "l"."element" for list elements, "m"."key" / "m"."value" for a map (an unquoted key is a plain column name). + //! The keys name the columns OF THE SCAN - what it produces after union_by_name, schema mapping or renames + //! across its files - not the columns of any one file. They stand in for the statistics the files would be + //! opened for, which lets a caller that knows the data (a catalog, a query coordinator) hand them to the + //! optimizer without any file being read for them - and lets a scan of many files have statistics at all. + //! NULL when not given. + //! They never set the scan's cardinality: that is the reader's estimate or, when given, explicit_cardinality. + //! A column's "count" only tells, against its "null_count", whether the column has any non-NULL values. + Value column_statistics; case_insensitive_map_t hive_types_schema; @@ -59,6 +72,15 @@ struct MultiFileOptions { DUCKDB_API LogicalType GetHiveLogicalType(const string &hive_partition_column) const; DUCKDB_API Value GetHivePartitionValue(const string &base, const string &entry, ClientContext &context) const; DUCKDB_API bool AnySet() const; + //! Set "column_statistics" from an option value - see column_statistics for its shape + DUCKDB_API void SetColumnStatistics(const Identifier &key, const Value &val); + //! Check "column_statistics" against the scan's columns once they are bound: every key must name a column, or a + //! part of one, and every value must parse for it. Errors here, at bind, rather than when the optimizer asks. + DUCKDB_API void VerifyColumnStatistics(const vector &names, const vector &types) const; + //! The statistics the "column_statistics" option gives for a column of the given type, or nullptr when it says + //! nothing about it. The bounds are cast to the column's type; a value that does not cast is an error. + DUCKDB_API unique_ptr GetColumnStatistics(const Identifier &column_name, + const LogicalType &type) const; //! Set "maximum_sample_files" from an option value - a positive count, or -1 for all files DUCKDB_API void SetMaximumSampleFiles(const Identifier &key, const Value &val); //! Set "maximum_sample_files" from an option value, returning false if it is not a valid count diff --git a/src/duckdb/src/include/duckdb/common/types/geometry.hpp b/src/duckdb/src/include/duckdb/common/types/geometry.hpp index bd4e46583..1d673c17f 100644 --- a/src/duckdb/src/include/duckdb/common/types/geometry.hpp +++ b/src/duckdb/src/include/duckdb/common/types/geometry.hpp @@ -273,6 +273,9 @@ class Geometry { //! Get legacy geometry type (pre v1.5) static LogicalType GetSpatialGeometryType(); + //! Convert from WKT, returns false and sets error_message if the text is not valid WKT + DUCKDB_API static bool TryFromString(const string_t &wkt_text, string_t &result, StringHeap &heap, + string &error_message); //! Convert from WKT DUCKDB_API static bool FromString(const string_t &wkt_text, string_t &result, StringHeap &heap, bool strict, QueryLocation query_location); diff --git a/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp b/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp index e332c581d..284132e7a 100644 --- a/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +++ b/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp @@ -76,6 +76,10 @@ struct VariableReturnBindData : public FunctionData { auto stype = deserializer.ReadProperty(100, "variable_return_type"); return make_uniq(std::move(stype)); } + //! Bind callback that stores the (resolved) return type of the function + static unique_ptr Bind(BindScalarFunctionInput &input) { + return make_uniq(input.GetBoundFunction().GetReturnType()); + } }; template > diff --git a/src/duckdb/src/include/duckdb/function/scalar_function.hpp b/src/duckdb/src/include/duckdb/function/scalar_function.hpp index 58f8f876a..1cc218b74 100644 --- a/src/duckdb/src/include/duckdb/function/scalar_function.hpp +++ b/src/duckdb/src/include/duckdb/function/scalar_function.hpp @@ -137,11 +137,14 @@ struct FunctionToStringInput { }; class BindScalarFunctionInput; +class ResolveScalarFunctionTypesInput; //! The scalar function type typedef std::function scalar_function_t; //! The type to bind the scalar function and to create the function data typedef unique_ptr (*bind_scalar_function_t)(BindScalarFunctionInput &input); +//! The type to resolve the argument and return types of the scalar function, before casts are added to the arguments +typedef void (*resolve_scalar_types_t)(ResolveScalarFunctionTypesInput &input); //! The type to initialize a thread local state for the scalar function typedef unique_ptr (*init_local_state_t)(ExpressionState &state, const BoundFunctionExpression &expr, @@ -189,6 +192,8 @@ class ScalarFunctionCallbacks { scalar_function_t function = nullptr; //! Direct selection callback (if any) scalar_function_select_t select_function = nullptr; + //! Resolves the argument / return types (if any) + resolve_scalar_types_t resolve_types = nullptr; //! The bind function (if any) bind_scalar_function_t bind = nullptr; //! Init thread local state for the function (if any) @@ -275,6 +280,10 @@ class BaseScalarFunction { auto GetSelectCallback() const -> scalar_function_select_t { return callbacks.select_function; } auto SetSelectCallback(scalar_function_select_t callback) -> void { callbacks.select_function = callback; } + auto HasResolveTypesCallback() const -> bool { return callbacks.resolve_types != nullptr; } + auto GetResolveTypesCallback() const -> resolve_scalar_types_t { return callbacks.resolve_types; } + auto SetResolveTypesCallback(resolve_scalar_types_t callback) -> void { callbacks.resolve_types = callback; } + auto HasBindCallback() const -> bool { return callbacks.bind != nullptr; }; auto GetBindCallback() const -> bind_scalar_function_t { return callbacks.bind; }; auto SetBindCallback(bind_scalar_function_t callback) -> void { callbacks.bind = callback; } @@ -680,4 +689,40 @@ class BindScalarFunctionInput : public BindFunctionInput { optional_ptr binder; }; +//! Input of the resolve_types callback - the arguments are read-only, the bound function can be modified +class ResolveScalarFunctionTypesInput : private BindFunctionInput { +public: + ResolveScalarFunctionTypesInput(ClientContext &context_p, BoundScalarFunction &bound_function_p, + vector> &arguments_p, + const vector &argument_names_p) + : BindFunctionInput(context_p, bound_function_p, arguments_p, &argument_names_p), + bound_function(bound_function_p), arguments(arguments_p) { + } + + using BindFunctionInput::GetArgumentNames; + using BindFunctionInput::GetClientContext; + using BindFunctionInput::GetConstant; + using BindFunctionInput::GetNonNullConstant; + using BindFunctionInput::TryGetConstant; + + BoundScalarFunction &GetBoundFunction() const { + return bound_function; + } + //! The argument expressions - these must not be modified + const vector> &GetArguments() const { + return arguments; + } + idx_t GetArgumentCount() const { + return arguments.size(); + } + DUCKDB_API const Expression &GetArgument(idx_t arg_idx) const; + //! The type of the argument expression, before it is cast to the argument type of the bound function + DUCKDB_API const LogicalType &GetArgumentType(idx_t arg_idx) const; + DUCKDB_API vector GetArgumentTypes() const; + +private: + BoundScalarFunction &bound_function; + const vector> &arguments; +}; + } // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/logging/log_type.hpp b/src/duckdb/src/include/duckdb/logging/log_type.hpp index 3da7f584a..94bfbef13 100644 --- a/src/duckdb/src/include/duckdb/logging/log_type.hpp +++ b/src/duckdb/src/include/duckdb/logging/log_type.hpp @@ -10,6 +10,7 @@ #include "duckdb/logging/logging.hpp" #include "duckdb/common/string_util.hpp" +#include "duckdb/common/case_insensitive_map.hpp" namespace duckdb { @@ -81,13 +82,15 @@ class HTTPLogType : public LogType { public: static constexpr const char *NAME = "HTTP"; static constexpr LogLevel LEVEL = LogLevel::LOG_DEBUG; + static constexpr auto REDACTED_VALUE = "redacted"; //! Construct the log types HTTPLogType(); static LogicalType GetLogType(); - static string ConstructLogMessage(BaseRequest &request, optional_ptr response); + static string ConstructLogMessage(BaseRequest &request, optional_ptr response, + bool redact_http_logs = true); // FIXME: HTTPLogType should be structured probably static string ConstructLogMessage(const string &str) { diff --git a/src/duckdb/src/include/duckdb/main/capi_v2/capi_v2_function_internal.hpp b/src/duckdb/src/include/duckdb/main/capi_v2/capi_v2_function_internal.hpp index ee2e4aecb..82bef921e 100644 --- a/src/duckdb/src/include/duckdb/main/capi_v2/capi_v2_function_internal.hpp +++ b/src/duckdb/src/include/duckdb/main/capi_v2/capi_v2_function_internal.hpp @@ -38,6 +38,8 @@ class CV2FunctionBindInfo { public: void *in_user_data; + //! Whether the bind data is set through this handle - scalar functions set it through their own bind info + bool can_set_bind_data = true; //! The bind data the callback set, or nullptr shared_ptr out_bind_data; diff --git a/src/duckdb/src/include/duckdb/main/capi_v2/extension_api_v2.hpp b/src/duckdb/src/include/duckdb/main/capi_v2/extension_api_v2.hpp index 08caa5496..24c2bac25 100644 --- a/src/duckdb/src/include/duckdb/main/capi_v2/extension_api_v2.hpp +++ b/src/duckdb/src/include/duckdb/main/capi_v2/extension_api_v2.hpp @@ -571,9 +571,6 @@ typedef struct { duckdb_v2_value_handle value, DUCKDB_V2_FUNCTION_PARAMETER_KIND kind, duckdb_v2_error_info_handle *err); DUCKDB_V2_ERROR(*duckdb_v2_function_signature_set_return_type) (duckdb_v2_function_signature_handle sig, duckdb_v2_logical_type_handle type, duckdb_v2_error_info_handle *err); - DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_bind_set_return_type) - (duckdb_v2_scalar_function_bind_info_handle info, duckdb_v2_logical_type_handle return_type, - duckdb_v2_error_info_handle *err); DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_create_with_connection) (duckdb_v2_connection_handle connection, duckdb_v2_scalar_function_handle *function, duckdb_v2_error_info_handle *err); @@ -1329,6 +1326,14 @@ typedef struct { const duckdb_v2_identifier_t *parameter_names, const duckdb_v2_value_handle *parameter_values, idx_t parameter_count, idx_t batch_size, duckdb_v2_arrow_result_handle *out_result, duckdb_v2_error_info_handle *err); + DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_resolve_types_set_return_type) + (duckdb_v2_scalar_function_resolve_types_info_handle info, duckdb_v2_logical_type_handle return_type, + duckdb_v2_error_info_handle *err); + DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_set_resolve_types_callback) + (duckdb_v2_scalar_function_handle function, duckdb_v2_scalar_function_resolve_types_callback_fn callback, + duckdb_v2_error_info_handle *err); + DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_bind_set_bind_data) + (duckdb_v2_scalar_function_bind_info_handle info, duckdb_v2_opaque *data, duckdb_v2_error_info_handle *err); DUCKDB_V2_ERROR(*duckdb_v2_copy_to_set_statistics_callback) (duckdb_v2_copy_function_handle function, duckdb_v2_copy_to_statistics_callback_fn callback, duckdb_v2_error_info_handle *err); @@ -1621,7 +1626,6 @@ inline duckdb_ext_api_v2 CreateAPIv2(void) { result.duckdb_v2_context_log = duckdb_v2_context_log; result.duckdb_v2_function_signature_add_parameter = duckdb_v2_function_signature_add_parameter; result.duckdb_v2_function_signature_set_return_type = duckdb_v2_function_signature_set_return_type; - result.duckdb_v2_scalar_function_bind_set_return_type = duckdb_v2_scalar_function_bind_set_return_type; result.duckdb_v2_scalar_function_create_with_connection = duckdb_v2_scalar_function_create_with_connection; result.duckdb_v2_scalar_function_create_with_extension = duckdb_v2_scalar_function_create_with_extension; result.duckdb_v2_scalar_function_destroy = duckdb_v2_scalar_function_destroy; @@ -1977,6 +1981,10 @@ inline duckdb_ext_api_v2 CreateAPIv2(void) { result.duckdb_v2_arrow_result_wait = duckdb_v2_arrow_result_wait; result.duckdb_v2_prepared_statement_execute_arrow = duckdb_v2_prepared_statement_execute_arrow; result.duckdb_v2_statement_execute_arrow = duckdb_v2_statement_execute_arrow; + result.duckdb_v2_scalar_function_resolve_types_set_return_type = + duckdb_v2_scalar_function_resolve_types_set_return_type; + result.duckdb_v2_scalar_function_set_resolve_types_callback = duckdb_v2_scalar_function_set_resolve_types_callback; + result.duckdb_v2_scalar_function_bind_set_bind_data = duckdb_v2_scalar_function_bind_set_bind_data; result.duckdb_v2_copy_to_set_statistics_callback = duckdb_v2_copy_to_set_statistics_callback; result.duckdb_v2_copy_to_statistics_get_bind_data = duckdb_v2_copy_to_statistics_get_bind_data; result.duckdb_v2_copy_to_statistics_get_init_data = duckdb_v2_copy_to_statistics_get_init_data; diff --git a/src/duckdb/src/include/duckdb/main/client_context.hpp b/src/duckdb/src/include/duckdb/main/client_context.hpp index a2de25254..655062f52 100644 --- a/src/duckdb/src/include/duckdb/main/client_context.hpp +++ b/src/duckdb/src/include/duckdb/main/client_context.hpp @@ -320,6 +320,8 @@ class ClientContext : public enable_shared_from_this { //! Internal clean up, does not lock. Caller must hold the context_lock. void CleanupInternal(ClientContextLock &lock, BaseQueryResult *result = nullptr, bool invalidate_transaction = false); + //! Ends the active query as abandoned: nothing it did is committed + void AbortInternal(ClientContextLock &lock); unique_ptr SubmitStatement(ClientContextLock &lock, unique_ptr statement, const QueryParameters ¶meters); unique_ptr SubmitPreparedStatementInternal(ClientContextLock &lock, diff --git a/src/duckdb/src/include/duckdb/main/extension_entries.hpp b/src/duckdb/src/include/duckdb/main/extension_entries.hpp index 7defa34a4..c16da7c56 100644 --- a/src/duckdb/src/include/duckdb/main/extension_entries.hpp +++ b/src/duckdb/src/include/duckdb/main/extension_entries.hpp @@ -1322,6 +1322,7 @@ static constexpr ExtensionEntry EXTENSION_SETTINGS[] = { {"enable_curl_server_cert_verification", "httpfs"}, {"enable_geoparquet_conversion", "parquet"}, {"enable_global_s3_configuration", "httpfs"}, + {"enable_legacy_parser", "legacy_parser"}, {"enable_server_cert_verification", "httpfs"}, {"extra_http_headers", "httpfs"}, {"force_download", "httpfs"}, @@ -1560,10 +1561,32 @@ static constexpr ExtensionEntry EXTENSION_LOG_TYPES[] = { {"Iceberg", "iceberg"}, {"PostgresQueryLog", "postgres_scanner"}, {"Quack", "quack"}, }; // END_OF_EXTENSION_LOG_TYPES -static constexpr const char *AUTOLOADABLE_EXTENSIONS[] = { - "autocomplete", "avro", "aws", "azure", "core_functions", "delta", "ducklake", - "encodings", "excel", "fts", "httpfs", "iceberg", "icu", "inet", - "json", "motherduck", "mysql_scanner", "parquet", "postgres_scanner", "quack", "sqlite_scanner", - "sqlsmith", "tpcds", "tpch", "ui", "unity_catalog"}; // END_OF_AUTOLOADABLE_EXTENSIONS +static constexpr const char *AUTOLOADABLE_EXTENSIONS[] = {"autocomplete", + "avro", + "aws", + "azure", + "core_functions", + "delta", + "ducklake", + "encodings", + "excel", + "fts", + "httpfs", + "iceberg", + "icu", + "inet", + "json", + "legacy_parser", + "motherduck", + "mysql_scanner", + "parquet", + "postgres_scanner", + "quack", + "sqlite_scanner", + "sqlsmith", + "tpcds", + "tpch", + "ui", + "unity_catalog"}; // END_OF_AUTOLOADABLE_EXTENSIONS } // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/main/extension_install_info.hpp b/src/duckdb/src/include/duckdb/main/extension_install_info.hpp index c62cea70d..57bc8130e 100644 --- a/src/duckdb/src/include/duckdb/main/extension_install_info.hpp +++ b/src/duckdb/src/include/duckdb/main/extension_install_info.hpp @@ -92,6 +92,11 @@ struct ExtensionRepository { static constexpr const char *CORE_NIGHTLY_REPOSITORY_URL = "http://nightly-extensions.duckdb.org"; static constexpr const char *COMMUNITY_REPOSITORY_URL = "http://community-extensions.duckdb.org"; + //! Backup servers for the core and community repositories: they serve identical binaries and are used when the + //! primary server is unavailable + static constexpr const char *CORE_BACKUP_REPOSITORY_URL = "http://extensions.duckdb-backup.org"; + static constexpr const char *COMMUNITY_BACKUP_REPOSITORY_URL = "http://community-extensions.duckdb-backup.org"; + //! Debugging repositories (target local, relative paths that are produced by DuckDB's build system) static constexpr const char *BUILD_DEBUG_REPOSITORY_PATH = "./build/debug/repository"; static constexpr const char *BUILD_RELEASE_REPOSITORY_PATH = "./build/release/repository"; @@ -110,6 +115,8 @@ struct ExtensionRepository { static string TryGetRepositoryUrl(const string &repository); //! Try to convert a url to a known repository name, will return empty string if the repository is unknown static string TryConvertUrlToKnownRepository(const string &url); + //! Try to get the backup server url of a repository url, will return empty string if the repository has no backup + static string TryGetBackupRepositoryUrl(const string &url); //! Get the default repository, optionally passing a config to allow static ExtensionRepository GetDefaultRepository(optional_ptr config); diff --git a/src/duckdb/src/include/duckdb/main/http/http_util.hpp b/src/duckdb/src/include/duckdb/main/http/http_util.hpp index ef431386a..743c589ad 100644 --- a/src/duckdb/src/include/duckdb/main/http/http_util.hpp +++ b/src/duckdb/src/include/duckdb/main/http/http_util.hpp @@ -78,6 +78,10 @@ struct HTTPParams { friend class HTTPUtil; friend class HTTPTransportManager; + bool ShouldRedactLogs() const; + + //! Borrowed database. + optional_ptr db; //! Manager borrowed from the owning DatabaseInstance. optional_ptr transport_manager; //! Provider publication captured by the creating manager session. diff --git a/src/duckdb/src/include/duckdb/main/query_result.hpp b/src/duckdb/src/include/duckdb/main/query_result.hpp index 50e1f6e50..2ec03f0fd 100644 --- a/src/duckdb/src/include/duckdb/main/query_result.hpp +++ b/src/duckdb/src/include/duckdb/main/query_result.hpp @@ -117,7 +117,8 @@ class QueryResult : public BaseQueryResult { DUCKDB_API QueryResultState Poll(); //! Executes a single task of the query on the calling thread. Decides nothing: READY means the engine is //! waiting for the retention decision, and every further call returns READY, running nothing, until a - //! stream is opened or a retained-side call (Materialize, Complete, Collection, ...) is made. + //! stream is opened or a retained-side call (Materialize, Complete, Collection, ...) is made. Unless a + //! stream drains the result, the call that reports FINISHED ends the query and collects the rows. DUCKDB_API QueryResultState ExecuteTask(); //! Blocks until a task is runnable or the engine is waiting on the caller. Runs no task. DUCKDB_API void WaitForTask(); @@ -147,7 +148,8 @@ class QueryResult : public BaseQueryResult { } //! Get the rowcount of the result. Will materialize the full result if it hadn't yet. DUCKDB_API idx_t RowCount(); - //! Ends the query if it is still open. Idempotent. + //! Aborts the query unless a call already ended it: autocommit rolls it back, and inside a transaction a + //! statement that may write invalidates the transaction. Idempotent. DUCKDB_API void Close(); //! Whether this result is still the connection's open result. DUCKDB_API bool IsOpen(); @@ -213,6 +215,8 @@ class QueryResult : public BaseQueryResult { //! recorded, and reports it as an error state QueryResultState Cancelled(); void CompleteInternal(ClientContextLock &lock); + //! Ends a query whose retained execution finished and collects its rows + QueryResultState EndFinishedInternal(ClientContextLock &lock); void HandleFetchFailure(ClientContextLock &lock, ErrorData error); //! Ends the query and records a commit failure on this result without throwing void EndQuery(ClientContextLock &lock, bool invalidate_transaction = false); diff --git a/src/duckdb/src/include/duckdb/main/result_format.hpp b/src/duckdb/src/include/duckdb/main/result_format.hpp index b7065c322..3e58a3911 100644 --- a/src/duckdb/src/include/duckdb/main/result_format.hpp +++ b/src/duckdb/src/include/duckdb/main/result_format.hpp @@ -87,7 +87,8 @@ class ResultFormat { virtual void AppendToUnit(ResultFormatGlobalState &gstate, ResultFormatLocalState &lstate, DataChunk &chunk) = 0; //! True while a unit that reached the cap is ready to be taken virtual bool IsUnitFinished(ResultFormatLocalState &lstate) = 0; - //! The next finished unit; with none ready, the partial unit under construction; null when empty + //! The next finished unit; with none ready, the partial unit under construction; null when empty. Never a + //! unit without rows: a stream reads only a missing unit as its end virtual unique_ptr FinishUnit(ResultFormatGlobalState &gstate, ResultFormatLocalState &lstate) = 0; //! Called for each producer and once for the global instance the producers are merged into virtual unique_ptr CreateCollection(ClientContext &context, diff --git a/src/duckdb/src/include/duckdb/main/settings.hpp b/src/duckdb/src/include/duckdb/main/settings.hpp index fdf940eb1..c0be6c03a 100644 --- a/src/duckdb/src/include/duckdb/main/settings.hpp +++ b/src/duckdb/src/include/duckdb/main/settings.hpp @@ -2285,6 +2285,19 @@ struct ReadAheadDepthSetting { static void OnSet(SettingCallbackInfo &info, Value &input); }; +struct RedactHttpLogsSetting { + using RETURN_TYPE = bool; + static constexpr const char *Name = "redact_http_logs"; + static constexpr const char *Description = + "Redact HTTP header values in logs unless their names are explicitly allowed."; + static constexpr const char *InputType = "BOOLEAN"; + static constexpr bool IsDebug = false; + static constexpr bool IsDeprecated = false; + static constexpr const char *DefaultValue = "true"; + static constexpr SettingScopeTarget Scope = SettingScopeTarget::GLOBAL_ONLY; + static constexpr idx_t SettingIndex = NEXT_SETTING_INDEX(); +}; + struct RegexMatchOperatorSemanticsSetting { using RETURN_TYPE = RegexMatchOperatorSemantics; static constexpr const char *Name = "regex_match_operator_semantics"; diff --git a/src/duckdb/src/include/duckdb/parser/peg/inlined_grammar.hpp b/src/duckdb/src/include/duckdb/parser/peg/inlined_grammar.hpp index 81ff0aac0..50403b5a4 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/inlined_grammar.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/inlined_grammar.hpp @@ -973,7 +973,7 @@ const unsigned char INLINED_PEG_GRAMMAR[] = { 84, 111, 112, 70, 111, 114, 101, 105, 103, 110, 75, 101, 121, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 32, 60, 45, 32, 39, 70, 79, 82, 69, 73, 71, 78, 39, 32, 39, 75, 69, 89, 39, 32, 67, 111, 108, 117, 109, 110, 73, 100, 76, 105, 115, 116, 32, 70, 111, 114, 101, 105, 103, 110, 75, 101, 121, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 10, 67, 111, 108, 117, 109, 110, 73, 100, 76, 105, 115, 116, 32, 60, 45, 32, 80, 97, 114, 101, 110, 115, 40, 76, 105, 115, 116, 40, 67, 111, 108, 73, 100, 41, 41, 10, 80, 108, 97, 105, 110, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 60, 45, 32, 33, 82, 101, 115, 101, 114, 118, 101, 100, 75, 101, 121, 119, 111, 114, 100, 32, 60, 91, 97, 45, 122, 95, 93, 105, 91, 97, 45, 122, 48, 45, 57, 95, 93, 105, 42, 62, 10, - 81, 117, 111, 116, 101, 100, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 60, 45, 32, 39, 34, 39, 32, 91, 94, 34, 93, 42, 32, 39, 34, 39, 10, + 81, 117, 111, 116, 101, 100, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 60, 45, 32, 40, 39, 34, 39, 32, 91, 94, 34, 93, 42, 32, 39, 34, 39, 41, 32, 47, 32, 40, 39, 96, 39, 32, 91, 94, 96, 93, 42, 32, 39, 96, 39, 41, 10, 68, 111, 116, 116, 101, 100, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 60, 45, 32, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 68, 111, 116, 67, 111, 108, 76, 97, 98, 101, 108, 42, 10, 68, 111, 116, 67, 111, 108, 76, 97, 98, 101, 108, 32, 60, 45, 32, 39, 46, 39, 32, 67, 111, 108, 76, 97, 98, 101, 108, 10, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 60, 45, 32, 81, 117, 111, 116, 101, 100, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 47, 32, 80, 108, 97, 105, 110, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 10, diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher.hpp index e19ab4cfa..758766438 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher.hpp @@ -9,6 +9,7 @@ #pragma once #include "duckdb/common/arena_containers/arena_ptr.hpp" +#include "duckdb/common/arena_containers/arena_vector.hpp" #include "duckdb/common/string_util.hpp" #include "duckdb/common/identifier.hpp" #include "duckdb/common/vector.hpp" @@ -264,6 +265,31 @@ enum class MatcherType { CUSTOM }; +//! Over-approximation of the tokens a matcher can start with (its FIRST set), computed once per grammar. Lets the +//! matcher skip sub-matchers that certainly cannot match at the current token. +struct MatcherFirstSet { + bool computed = false; + //! the matcher can succeed without consuming a token + bool nullable = false; + //! no information: never skip + bool any = false; + //! MatcherTokenClass bits + uint8_t class_mask = 0; + //! bitset over grammar literal ids (keywords and symbols) + vector literals; + optional_ptr table; + + bool HasLiteral(idx_t literal_id) const { + auto word = literal_id / 64; + return word < literals.size() && (literals[word] >> (literal_id % 64)) & 1; + } + DUCKDB_API void AddLiteral(idx_t literal_id); + //! Merge other into this set, returns whether anything changed + DUCKDB_API bool Merge(const MatcherFirstSet &other); + //! False only if the matcher certainly cannot match at the current token + DUCKDB_API bool MightMatch(MatchState &state) const; +}; + class Matcher { public: explicit Matcher(MatcherType type = MatcherType::CUSTOM) : type(type) { @@ -298,7 +324,12 @@ class Matcher { bool HasName() const { return !name.empty(); } - string GetName() const; + //! The stored name, which lives as long as the grammar and can therefore be referenced by a parse result + const string &GetName() const { + return name; + } + //! The name to print for this matcher, which for an unnamed one renders the grammar it matches + string GetPrintName() const; optional_idx GetPackratId() const { return packrat_id; } @@ -315,6 +346,13 @@ class Matcher { bool IsCollapsible() const { return collapsible; } + //! The matcher runs the built-in implementation of its type (set by MatcherFactory, never for derived matchers) + void SetStructural() { + structural = true; + } + bool IsStructural() const { + return structural; + } public: template @@ -333,6 +371,9 @@ class Matcher { return reinterpret_cast(*this); } +public: + MatcherFirstSet first_set; + protected: friend class MatcherAllocator; MatcherType type; @@ -340,9 +381,13 @@ class Matcher { optional_idx packrat_id; bool packrat_memoized = false; bool collapsible = false; + bool structural = false; optional_ptr rule; }; +//! Compute the FIRST sets of all matchers reachable from root +DUCKDB_API void ComputeFirstSets(Matcher &root, const GrammarLiteralTable &table); + class AtomicMatcher : public Matcher { public: explicit AtomicMatcher(MatcherType type) : Matcher(type) { @@ -353,6 +398,10 @@ class AtomicMatcher : public Matcher { } DUCKDB_API arena_ptr StartMatch(MatchState &state) const final; virtual MatcherResult MatchAtomic(MatchState &state) const = 0; + //! Describes the tokens this matcher can start with; the default (no information) never skips the matcher + virtual void InitializeFirstSet(MatcherFirstSet &first_set, const GrammarLiteralTable &table) const { + first_set.any = true; + } }; class KeywordInfo { @@ -378,10 +427,42 @@ class MatcherAllocator { class ParseResultAllocator { public: - optional_ptr Allocate(unique_ptr parse_result); + ParseResultAllocator(); + ~ParseResultAllocator(); + + template + optional_ptr Make(ARGS &&... args) { + static_assert(std::is_base_of::value, "Expected a parse result"); + auto result = arena.Make(std::forward(args)...); + if (ParseResultNeedsDestructor::value) { + // held by an owner before growing the list, so the result is still destroyed if the growth throws + arena_ptr owned(result); + pending_destructors.push_back(std::move(owned)); + } + return optional_ptr(result); + } + + //! Copy a collected set of children into the arena, where it lives as long as the results it belongs to + unsafe_array_ptr> MakeChildren(const arena_vector> &children) { + auto count = children.size(); + arena.AlignNext(); + // an empty set still takes an address from the arena, which costs nothing and keeps the span non-null + auto target = + reinterpret_cast *>(arena.Allocate(count * sizeof(reference))); + if (count > 0) { + memcpy(static_cast(target), static_cast(children.data()), + count * sizeof(reference)); + } + return unsafe_array_ptr>(target, count); + } private: - vector> parse_results; + ArenaAllocator arena; + //! Dropping the arena reclaims the memory of every result at once but calls no destructors, so a result that + //! owns something has to be destroyed before that happens. An `arena_ptr` destroys what it points at without + //! freeing it, which is all these are here for. Only the node types that `ParseResultNeedsDestructor` selects end + //! up in the list, and nothing ever reads it. + arena_vector> pending_destructors; }; template @@ -390,15 +471,23 @@ arena_ptr MatchState::Make(ARGS &&... args) { return arena_ptr(context.process_allocator.Make(std::forward(args)...)); } +void ParseResult::SetNameFrom(const CompiledGrammarRule &rule_p) { + name = &rule_p.name; +} + +void ParseResult::SetNameFrom(const Matcher &matcher_p) { + name = &matcher_p.GetName(); +} + template MatcherResult MatchState::AllocateParseResult(ARGS &&... args) { if (!BuildParseResult()) { return MatcherResult::Success(); } - auto result = context.allocator.Allocate(make_uniq(std::forward(args)...)); + auto result = context.allocator.Make(std::forward(args)...); if (rule) { result->SetRule(*rule); - result->name = rule->name; + result->SetNameFrom(*rule); } return MatcherResult::Success(result); } diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/arithmetic_operator_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/arithmetic_operator_matcher.hpp index 2ac185f48..93f31f77f 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/arithmetic_operator_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/arithmetic_operator_matcher.hpp @@ -36,6 +36,10 @@ class ArithmeticOperatorMatcher : public AtomicMatcher { return "ARITHMETICOPERATOR"; } + void InitializeFirstSet(MatcherFirstSet &first_set, const GrammarLiteralTable &table) const override { + first_set.class_mask = MatcherTokenClass::OPERATOR; + } + private: bool MatchArithmeticOperator(MatchState &state) const { auto token = state.token_iterator.Current(); diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/choice_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/choice_matcher.hpp index 89b31ee3b..e76912036 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/choice_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/choice_matcher.hpp @@ -30,7 +30,7 @@ class ChoiceMatcher : public Matcher { if (!result.empty()) { result += " / "; } - result += matcher.get().GetName(); + result += matcher.get().GetPrintName(); } return result; } diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/identifier_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/identifier_matcher.hpp index 65df82b2b..f37612674 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/identifier_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/identifier_matcher.hpp @@ -16,11 +16,22 @@ class IdentifierMatcher : public AtomicMatcher { identifier_mask(keyword_helper_p.GetIdentifierMask(suggestion_type)) { } + static bool IsQuoteDelimiter(char c) { + return c == '"' || c == '`'; + } + bool IsQuoted(const string &text) const { - if (text.front() == '"' && text.back() == '"') { - return true; + if (text.size() < 2) { + return false; } - return false; + return IsQuoteDelimiter(text.front()) && text.front() == text.back(); + } + + //! Strip the surrounding delimiters of a quoted identifier and un-double any escaped delimiters + static void UnquoteIdentifier(string &text) { + const string delimiter(1, text.front()); + text = text.substr(1, text.size() - 2); + text = StringUtil::Replace(text, delimiter + delimiter, delimiter); } bool IsSingleQuoted(const string &text) const { @@ -64,8 +75,7 @@ class IdentifierMatcher : public AtomicMatcher { string result_text = token_text; if (IsQuoted(result_text)) { - result_text = result_text.substr(1, result_text.size() - 2); - result_text = StringUtil::Replace(result_text, "\"\"", "\""); + UnquoteIdentifier(result_text); } else if (IsSingleQuoted(result_text) && SupportsStringLiteral()) { // a single-quoted token in a table or file-name position is a path, so it is unwrapped but never folded result_text = result_text.substr(1, result_text.size() - 2); @@ -147,6 +157,10 @@ class IdentifierMatcher : public AtomicMatcher { } } + void InitializeFirstSet(MatcherFirstSet &first_set, const GrammarLiteralTable &table) const override { + first_set.class_mask = MatcherTokenClass::WORD; + } + private: bool IsAllowedKeyword(TokenIterator &tokens) const { auto info = tokens.CurrentLiteralInfo(literal_table); @@ -200,8 +214,7 @@ class ReservedIdentifierMatcher : public IdentifierMatcher { // unlike IdentifierMatcher this rule does not unwrap path literals, it only has to avoid folding them const bool is_path_literal = IsSingleQuoted(result_text) && SupportsStringLiteral(); if (IsQuoted(result_text)) { - result_text = result_text.substr(1, result_text.size() - 2); - result_text = StringUtil::Replace(result_text, "\"\"", "\""); + UnquoteIdentifier(result_text); } else if (!is_path_literal) { state.FoldIdentifier(result_text); } diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/keyword_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/keyword_matcher.hpp index 2d6c735bc..cc111d606 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/keyword_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/keyword_matcher.hpp @@ -35,7 +35,7 @@ class KeywordMatcher : public AtomicMatcher { } auto result = state.AllocateParseResult(token_text, start_offset, token_length); if (result.HasParseResult()) { - result.GetParseResult()->name = name; + result.GetParseResult()->SetNameFrom(*this); } return result; } @@ -57,6 +57,15 @@ class KeywordMatcher : public AtomicMatcher { return optional_idx(); } + void InitializeFirstSet(MatcherFirstSet &first_set, const GrammarLiteralTable &table) const override { + auto literal = GetDispatchLiteral(table); + if (literal.IsValid()) { + first_set.AddLiteral(literal.GetIndex()); + } else { + first_set.any = true; + } + } + private: bool MatchKeyword(MatchState &state) const { auto token = state.token_iterator.Current(); diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/list_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/list_matcher.hpp index 4cf93c474..4d6f6b56e 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/list_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/list_matcher.hpp @@ -37,7 +37,7 @@ class ListMatcher : public Matcher { if (!result.empty()) { result += " "; } - result += matcher.get().GetName(); + result += matcher.get().GetPrintName(); } return "(" + result + ")"; } diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/number_literal_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/number_literal_matcher.hpp index cb6fc468e..b7358cb14 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/number_literal_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/number_literal_matcher.hpp @@ -29,7 +29,7 @@ class NumberLiteralMatcher : public AtomicMatcher { state.token_iterator.SetPreviousTokenType(TokenType::NUMBER_LITERAL); auto result = state.AllocateParseResult(token_text, start_offset, token_length); if (result.HasParseResult()) { - result.GetParseResult()->name = name; + result.GetParseResult()->SetNameFrom(*this); } return result; } @@ -42,6 +42,10 @@ class NumberLiteralMatcher : public AtomicMatcher { return "NUMBER_LITERAL"; } + void InitializeFirstSet(MatcherFirstSet &first_set, const GrammarLiteralTable &table) const override { + first_set.class_mask = MatcherTokenClass::NUMBER; + } + private: static bool MatchNumberLiteral(MatchState &state) { auto token = state.token_iterator.Current(); diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/operator_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/operator_matcher.hpp index 8a8812b2f..581774acc 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/operator_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/operator_matcher.hpp @@ -39,6 +39,11 @@ class OperatorMatcher : public AtomicMatcher { return "OPERATOR"; } + void InitializeFirstSet(MatcherFirstSet &first_set, const GrammarLiteralTable &table) const override { + first_set.class_mask = mode == OperatorMatcherMode::GENERIC_PRECEDENCE ? MatcherTokenClass::GENERIC_OPERATOR + : MatcherTokenClass::OPERATOR; + } + private: bool MatchOperator(MatchState &state) const { auto token = state.token_iterator.Current(); @@ -59,9 +64,10 @@ class OperatorMatcher : public AtomicMatcher { return true; } -private: - static bool HasSpecialPrecedence(const string &operator_name); +public: + DUCKDB_API static bool HasSpecialPrecedence(const string &operator_name); +private: OperatorMatcherMode mode; }; diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/optional_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/optional_matcher.hpp index 66fcc8227..fcb770c1f 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/optional_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/optional_matcher.hpp @@ -21,7 +21,10 @@ class OptionalMatcher : public Matcher { } string ToString() const override { - return matcher.GetName() + "?"; + return matcher.GetPrintName() + "?"; + } + Matcher &GetChildMatcher() { + return matcher; } const Matcher &GetChildMatcher() const { return matcher; diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/repeat_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/repeat_matcher.hpp index 7053f5c88..48ac642ad 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/repeat_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/repeat_matcher.hpp @@ -20,7 +20,10 @@ class RepeatMatcher : public Matcher { } string ToString() const override { - return element.GetName() + "*"; + return element.GetPrintName() + "*"; + } + Matcher &GetChildMatcher() { + return element; } const Matcher &GetChildMatcher() const { return element; diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher/string_literal_matcher.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher/string_literal_matcher.hpp index 4ae03939a..086a51ecc 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher/string_literal_matcher.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher/string_literal_matcher.hpp @@ -55,7 +55,7 @@ class StringLiteralMatcher : public AtomicMatcher { auto result = state.AllocateParseResult(stripped_string, string_info.type, start_offset, token_length); if (result.HasParseResult()) { - result.GetParseResult()->name = name; + result.GetParseResult()->SetNameFrom(*this); } return result; } @@ -68,6 +68,10 @@ class StringLiteralMatcher : public AtomicMatcher { return "STRING_LITERAL"; } + void InitializeFirstSet(MatcherFirstSet &first_set, const GrammarLiteralTable &table) const override { + first_set.class_mask = MatcherTokenClass::STRING; + } + private: static bool IsStringLiteral(const MatcherToken &token, const SpecialStringInfo &string_info) { idx_t dollar_quote_delimiter_length; diff --git a/src/duckdb/src/include/duckdb/parser/peg/matcher_token.hpp b/src/duckdb/src/include/duckdb/parser/peg/matcher_token.hpp index fba6a2744..cbd5dd427 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/matcher_token.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/matcher_token.hpp @@ -9,16 +9,33 @@ #pragma once #include "duckdb/common/string.hpp" +#include "duckdb/common/winapi.hpp" #include "duckdb/parser/peg/token_type.hpp" #include "duckdb/parser/peg/grammar_literal_table.hpp" namespace duckdb { +//! Token classes for FIRST-set checks, derived from the TokenType assigned by the tokenizer +//! Each class is a superset of the tokens the corresponding atomic matchers accept +struct MatcherTokenClass { + static constexpr uint8_t WORD = 1; + static constexpr uint8_t OPERATOR = 2; + //! an operator without a precedence level of its own in the grammar + static constexpr uint8_t GENERIC_OPERATOR = 4; + static constexpr uint8_t STRING = 8; + static constexpr uint8_t NUMBER = 16; +}; + +//! The token class of a token as emitted by the tokenizer (implemented in base_tokenizer.cpp) +DUCKDB_API uint8_t ComputeMatcherTokenClass(TokenType type, const string &text); + +//! text, length and token_class are set together on construction: replace a token instead of editing its text struct MatcherToken { // NOLINTNEXTLINE: allow implicit conversion from text MatcherToken(string text_p, idx_t offset_p, TokenType type_p, bool unterminated_p = false) : type(type_p), text(std::move(text_p)), offset(offset_p), unterminated(unterminated_p) { length = text.length(); + token_class = ComputeMatcherTokenClass(type, text); } TokenType type; @@ -28,6 +45,8 @@ struct MatcherToken { bool unterminated = false; bool preceded_by_newline = false; bool preceded_by_block_comment = false; + //! MatcherTokenClass bits - fixed at tokenization, unaffected by later re-typing of the token + uint8_t token_class = 0; LiteralInfo GetLiteralInfo(const GrammarLiteralTable &table) { if (literal_table_id != table.CacheId()) { diff --git a/src/duckdb/src/include/duckdb/parser/peg/parsed_grammar.hpp b/src/duckdb/src/include/duckdb/parser/peg/parsed_grammar.hpp index abe159852..c01a903b7 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/parsed_grammar.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/parsed_grammar.hpp @@ -7,6 +7,7 @@ #pragma once +#include "duckdb/common/arena_containers/arena_ptr.hpp" #include "duckdb/common/case_insensitive_map.hpp" #include "duckdb/common/types/string_heap.hpp" #include "duckdb/parser/peg/peg_parser.hpp" @@ -25,7 +26,7 @@ class TransformProcess; class GrammarChange; using grammar_transform_process_function_t = - std::function(PEGTransformer &, ParseResult &)>; + std::function(PEGTransformer &, ParseResult &)>; using grammar_cursor_function_t = std::function; using terminal_rule_overrides_t = case_insensitive_map_t>; using terminal_rule_matcher_factory_t = std::function(const PEGKeywordHelper &)>; @@ -104,7 +105,7 @@ struct CompiledGrammarRule { : name(std::move(name_p)), transform_process(std::move(transform_process_p)), collapsible(collapsible_p) { } - unique_ptr StartTransform(PEGTransformer &transformer, ParseResult &parse_result) const; + arena_ptr StartTransform(PEGTransformer &transformer, ParseResult &parse_result) const; string name; grammar_transform_process_function_t transform_process; diff --git a/src/duckdb/src/include/duckdb/parser/peg/parser_packrat.hpp b/src/duckdb/src/include/duckdb/parser/peg/parser_packrat.hpp index 75f444fdf..bd15b4d82 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/parser_packrat.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/parser_packrat.hpp @@ -10,6 +10,7 @@ #include "duckdb/common/common.hpp" #include "duckdb/common/optional_ptr.hpp" #include "duckdb/common/unordered_map.hpp" +#include "duckdb/common/arena_containers/arena_unordered_map.hpp" namespace duckdb { class Matcher; @@ -37,14 +38,14 @@ struct ParserPackratEntry { class ParserPackratCache { public: - ParserPackratCache(); + explicit ParserPackratCache(ArenaAllocator &arena); ~ParserPackratCache(); optional_ptr Lookup(const Matcher &matcher, idx_t token_index) const; void Store(const Matcher &matcher, idx_t token_index, ParserPackratEntry entry); private: - unordered_map entries; + arena_unordered_map entries; }; } // namespace duckdb diff --git a/src/duckdb/src/include/duckdb/parser/peg/transformer/parse_result.hpp b/src/duckdb/src/include/duckdb/parser/peg/transformer/parse_result.hpp index f76920e95..215848489 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/transformer/parse_result.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/transformer/parse_result.hpp @@ -1,6 +1,7 @@ #pragma once #include "utf8proc_wrapper.hpp" #include "duckdb/common/arena_linked_list.hpp" +#include "duckdb/common/array_ptr.hpp" #include "duckdb/common/exception.hpp" #include "duckdb/common/optional_ptr.hpp" #include "duckdb/common/string.hpp" @@ -62,6 +63,7 @@ inline string TokenTypeToString(TokenType type) { class PEGTransformer; // Forward declaration struct CompiledGrammarRule; +class Matcher; enum class ParseResultType : uint8_t { LIST, @@ -131,13 +133,12 @@ class ParseResult { TARGET &Cast() { if (TARGET::TYPE != ParseResultType::INVALID && type != TARGET::TYPE) { throw InternalException("Failed to cast parse result of type %s to type %s for rule %s", - ParseResultToString(TARGET::TYPE), ParseResultToString(type), name); + ParseResultToString(TARGET::TYPE), ParseResultToString(type), Name()); } return reinterpret_cast(*this); } ParseResultType type; - string name; optional_ptr rule; //! Set when a collapsible rule handed this result out in place of its own, so the transformer runs this //! result's rule rather than the one the parent asked for @@ -149,6 +150,19 @@ class ParseResult { void SetRule(const CompiledGrammarRule &rule_p) { rule = rule_p; } + //! The name of the rule (or matcher) that produced this result. Rule names live in the compiled grammar and + //! outlive every parse, so a result points at one instead of owning a copy of it. + const string &Name() const { + static const string EMPTY; + return name ? *name : EMPTY; + } + //! Only a pointer to the name is kept, so these only take a grammar object that owns it, or a result that already + //! points at one. + inline void SetNameFrom(const CompiledGrammarRule &rule_p); + inline void SetNameFrom(const Matcher &matcher_p); + void SetNameFrom(const ParseResult &other) { + name = other.name; + } optional_ptr GetRule() const { return rule; } @@ -175,8 +189,8 @@ class ParseResult { virtual void ToStringInternal(std::stringstream &ss, std::unordered_set &visited, const std::string &indent, bool is_last) const { ss << indent << (is_last ? "└─" : "├─") << " " << ParseResultToString(type); - if (!name.empty()) { - ss << " (" << name << ")"; + if (!Name().empty()) { + ss << " (" << Name() << ")"; } } @@ -188,6 +202,9 @@ class ParseResult { ToStringInternal(ss, visited, "", true); return ss.str(); } + +private: + const string *name = nullptr; }; struct IdentifierParseResult : ParseResult { @@ -253,15 +270,18 @@ struct ListParseResult : ParseResult { static constexpr ParseResultType TYPE = ParseResultType::LIST; public: - explicit ListParseResult(vector> results_p, string name_p, optional_idx offset) - : ParseResult(TYPE, offset), children(std::move(results_p)) { - name = std::move(name_p); + explicit ListParseResult(unsafe_array_ptr> results_p, + optional_ptr named_matcher, optional_idx offset) + : ParseResult(TYPE, offset), children(results_p) { + if (named_matcher) { + SetNameFrom(*named_matcher); + } for (auto &child : children) { EncloseChild(child.get()); } } - vector> GetChildren() const { + unsafe_array_ptr> GetChildren() const { return children; } @@ -282,14 +302,14 @@ struct ListParseResult : ParseResult { ss << indent << (is_last ? "└─" : "├─"); if (visited.count(this)) { - ss << " List (" << name << ") [... already printed ...]\n"; + ss << " List (" << Name() << ") [... already printed ...]\n"; return; } visited.insert(this); ss << " " << ParseResultToString(type); - if (!name.empty()) { - ss << " (" << name << ")"; + if (!Name().empty()) { + ss << " (" << Name() << ")"; } ss << " [" << children.size() << " children]\n"; @@ -300,20 +320,20 @@ struct ListParseResult : ParseResult { } private: - vector> children; + unsafe_array_ptr> children; }; struct RepeatParseResult : ParseResult { static constexpr ParseResultType TYPE = ParseResultType::REPEAT; - explicit RepeatParseResult(vector> results_p, optional_idx offset) - : ParseResult(TYPE, offset), children(std::move(results_p)) { + explicit RepeatParseResult(unsafe_array_ptr> results_p, optional_idx offset) + : ParseResult(TYPE, offset), children(results_p) { for (auto &child : children) { EncloseChild(child.get()); } } - vector> GetChildren() const { + unsafe_array_ptr> GetChildren() const { return children; } @@ -330,14 +350,14 @@ struct RepeatParseResult : ParseResult { ss << indent << (is_last ? "└─" : "├─"); if (visited.count(this)) { - ss << " Repeat (" << name << ") [... already printed ...]\n"; + ss << " Repeat (" << Name() << ") [... already printed ...]\n"; return; } visited.insert(this); ss << " " << ParseResultToString(type); - if (!name.empty()) { - ss << " (" << name << ")"; + if (!Name().empty()) { + ss << " (" << Name() << ")"; } ss << " [" << children.size() << " children]\n"; @@ -348,7 +368,7 @@ struct RepeatParseResult : ParseResult { } private: - vector> children; + unsafe_array_ptr> children; }; struct OptionalParseResult : ParseResult { @@ -358,7 +378,7 @@ struct OptionalParseResult : ParseResult { } explicit OptionalParseResult(optional_ptr result_p, optional_idx offset) : ParseResult(TYPE, offset), optional_result(result_p) { - name = result_p->name; + SetNameFrom(*result_p); EncloseChild(*result_p); } @@ -400,7 +420,7 @@ class ChoiceParseResult : public ParseResult { explicit ChoiceParseResult(ParseResult &parse_result_p, idx_t selected_idx_p, optional_idx offset) : ParseResult(TYPE, offset), result(parse_result_p), selected_idx(selected_idx_p) { - name = parse_result_p.name; + SetNameFrom(parse_result_p); EncloseChild(parse_result_p); } @@ -424,6 +444,22 @@ class ChoiceParseResult : public ParseResult { idx_t selected_idx; }; +//! Whether the parse result allocator has to keep a pointer to a node of exactly this type, to destroy it before the +//! arena is dropped. Most node types only hold spans and pointers into the arena and can be left alone. This is a +//! trait on the exact type rather than a member, so a subclass that adds an owning member does not inherit the opt-out. +template +struct ParseResultNeedsDestructor : std::true_type {}; +template <> +struct ParseResultNeedsDestructor : std::false_type {}; +template <> +struct ParseResultNeedsDestructor : std::false_type {}; +template <> +struct ParseResultNeedsDestructor : std::false_type {}; +template <> +struct ParseResultNeedsDestructor : std::false_type {}; +template <> +struct ParseResultNeedsDestructor : std::false_type {}; + class NumberParseResult : public ParseResult { public: static constexpr ParseResultType TYPE = ParseResultType::NUMBER; diff --git a/src/duckdb/src/include/duckdb/parser/peg/transformer/peg_transformer.hpp b/src/duckdb/src/include/duckdb/parser/peg/transformer/peg_transformer.hpp index 2c4c3a46f..800dd8de7 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/transformer/peg_transformer.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/transformer/peg_transformer.hpp @@ -1,8 +1,10 @@ #pragma once +#include "duckdb/common/deque.hpp" #include "duckdb/parser/peg/ast/unpivot_name_values.hpp" #include "duckdb/parser/qualified_name_set.hpp" #include "duckdb/parser/peg/transformer/parse_result.hpp" +#include "duckdb/parser/peg/matcher.hpp" #include "duckdb/parser/peg/transformer/transform_result.hpp" #include "duckdb/parser/peg/ast/add_column_entry.hpp" #include "duckdb/parser/peg/ast/column_constraint_entry.hpp" @@ -55,6 +57,8 @@ #include "duckdb/parser/tableref/basetableref.hpp" #include "duckdb/parser/peg/parsed_grammar.hpp" #include "duckdb/storage/arena_allocator.hpp" +#include "duckdb/common/arena_containers/arena_vector.hpp" +#include "duckdb/common/arena_containers/arena_ptr.hpp" #include "duckdb/parser/query_node/select_node.hpp" #include "duckdb/parser/statement/drop_statement.hpp" #include "duckdb/parser/statement/insert_statement.hpp" @@ -156,6 +160,8 @@ DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.Value", Value); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.WindowBoundaryExpression", WindowBoundaryExpression); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.WindowExcludeMode", WindowExcludeMode); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.WindowFrame", WindowFrame); +DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.arena_ptr", + arena_ptr); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.bool", bool); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.case_insensitive_map_t>", case_insensitive_map_t>); @@ -217,8 +223,6 @@ DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.unique_ptr); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.unique_ptr", unique_ptr); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.unique_ptr", unique_ptr); -DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.unique_ptr", - unique_ptr); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.unique_ptr", unique_ptr); DUCKDB_REGISTER_TRANSFORM_RESULT_TYPE("duckdb.transform_result.unique_ptr", unique_ptr); @@ -253,8 +257,8 @@ class TransformProcess; class GeneratedTransformProcess; using transform_process_initialize_t = void (*)(PEGTransformer &transformer, GeneratedTransformProcess &process); -using transform_process_finalize_t = unique_ptr (*)(PEGTransformer &transformer, - GeneratedTransformProcess &process); +using transform_process_finalize_t = arena_ptr (*)(PEGTransformer &transformer, + GeneratedTransformProcess &process); struct TransformFrameOps { const char *name; @@ -286,24 +290,24 @@ struct TransformInput { ParseResult &parse_result; }; -//! Essentially a std::variant>. +//! Essentially a std::variant>. //! Produced by TransformProcess::Resume to control the next execution step. class TransformStep { public: static TransformStep Child(TransformInput input); - static TransformStep Complete(unique_ptr result); + static TransformStep Complete(arena_ptr result); optional GetChild(); - unique_ptr TakeResult(); + arena_ptr TakeResult(); private: - TransformStep(optional child_p, unique_ptr result_p) + TransformStep(optional child_p, arena_ptr result_p) : child(std::move(child_p)), result(std::move(result_p)) { } private: optional child; - unique_ptr result; + arena_ptr result; }; class TransformProcess { @@ -311,7 +315,7 @@ class TransformProcess { virtual ~TransformProcess() = default; //! Resume transforming, optionally with the result of the previously requested child. - virtual TransformStep Resume(unique_ptr child_result) = 0; + virtual TransformStep Resume(arena_ptr child_result) = 0; }; class GeneratedTransformProcess final : public TransformProcess { @@ -319,9 +323,9 @@ class GeneratedTransformProcess final : public TransformProcess { GeneratedTransformProcess(PEGTransformer &transformer, TransformInput input, const TransformFrameOps &info); void ReserveChildSlots(idx_t count); - void SetChildResult(idx_t slot, unique_ptr result); + void SetChildResult(idx_t slot, arena_ptr result); void PushChild(TransformInput input, idx_t slot); - TransformStep Resume(unique_ptr child_result) override; + TransformStep Resume(arena_ptr child_result) override; template T TakeResult(idx_t slot) { @@ -358,7 +362,7 @@ class GeneratedTransformProcess final : public TransformProcess { ParseResult &parse_result; const TransformFrameOps &info; idx_t manual_state = 0; - vector> child_results; + arena_vector> child_results; private: struct PendingChild { @@ -370,19 +374,19 @@ class GeneratedTransformProcess final : public TransformProcess { private: PEGTransformer &transformer; - vector pending_children; + arena_vector pending_children; optional_idx child_result_slot; bool completed = false; }; using transform_finalize_function_t = - std::function(PEGTransformer &transformer, ParseResult &parse_result)>; + std::function(PEGTransformer &transformer, ParseResult &parse_result)>; class FinalizeTransformProcess final : public TransformProcess { public: FinalizeTransformProcess(PEGTransformer &transformer, ParseResult &parse_result, transform_finalize_function_t finalize); - TransformStep Resume(unique_ptr child_result) override; + TransformStep Resume(arena_ptr child_result) override; private: PEGTransformer &transformer; @@ -396,8 +400,8 @@ struct TransformStackFrame { optional_ptr rule; ParseResult &parse_result; - unique_ptr process; - unique_ptr child_result; + arena_ptr process; + arena_ptr child_result; }; #ifdef DEBUG @@ -409,14 +413,14 @@ using frame_stack_t = stack; class TransformStack { public: explicit TransformStack(PEGTransformer &transformer); - unique_ptr Execute(TransformInput input); + arena_ptr Execute(TransformInput input); template T Execute(TransformInput input) { auto base_result = Execute(input); auto *result_value = TryGetTransformResult(*base_result); if (!result_value) { - throw InternalException("Unexpected transformer result type for root rule '%s'", input.parse_result.name); + throw InternalException("Unexpected transformer result type for root rule '%s'", input.parse_result.Name()); } return std::move(*result_value); } @@ -428,7 +432,7 @@ class TransformStack { private: void PushFrame(TransformInput input); void InitializeFrame(TransformStackFrame &frame); - unique_ptr ExecuteFrame(TransformStackFrame &frame); + arena_ptr ExecuteFrame(TransformStackFrame &frame); private: PEGTransformer &transformer; @@ -458,7 +462,7 @@ class PEGTransformer { SetResultLocation(bridged_result, parse_result.GetLocation()); return bridged_result; } - throw InternalException("Transformer for rule '" + parse_result.name + "' returned an unexpected type."); + throw InternalException("Transformer for rule '" + parse_result.Name() + "' returned an unexpected type."); } auto result = std::move(*result_value); @@ -493,6 +497,22 @@ class PEGTransformer { return allocator.Make(std::forward(args)...); } + //! Transform processes live exactly as long as one transform run, so they are carved out of the same arena + template + arena_ptr MakeProcess(Args &&...args) { + return arena_ptr(allocator.Make(std::forward(args)...)); + } + + //! The result a transformer hands back, carved out of the same arena + template + arena_ptr MakeResult(Args &&...args) { + return arena_ptr(allocator.Make>(std::forward(args)...)); + } + + ArenaAllocator &GetAllocator() { + return allocator; + } + void Clear(); void ClearParameters(); static void ParamTypeCheck(PreparedParamType last_type, PreparedParamType new_type); @@ -510,7 +530,7 @@ class PEGTransformer { void SetQueryLocation(TableRef &ref, QueryLocation query_location); private: - unique_ptr TransformInternal(ParseResult &parse_result); + arena_ptr TransformInternal(ParseResult &parse_result); void SetResultLocation(ParseResult &parse_result, TransformResultValue &result); template @@ -540,7 +560,7 @@ class PEGTransformer { idx_t prepared_statement_parameter_index = 0; PreparedParamType last_param_type = PreparedParamType::INVALID; - identifier_map_t> window_clauses; + deque>> window_clauses; vector> pivot_entries; vector> stored_cte_map; @@ -665,3460 +685,3460 @@ class PEGTransformerFactory { unique_ptr expression); static void InitializePivotStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnpivotStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnpivotStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUnpivotStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLiteralExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLiteralExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializePrefixExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePrefixExpressionTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeLiteralExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializePrefixExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizePrefixExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOverClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOverClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOverClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectStatementInternalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSelectStatementInternalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSimpleSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSimpleSelectTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSimpleSelectTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWindowDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWindowDefinitionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWindowDefinitionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); //===--------------------------------------------------------------------===// // START GENERATED TRAMPOLINE RULES //===--------------------------------------------------------------------===// static void InitializeStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIdentifierOrKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIdentifierOrKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIdentifierOrKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterTableStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterTableStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterTableStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterSchemaStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterSchemaStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterSchemaStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterSchemaOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterSchemaOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeAlterTableOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterTableOptionsTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeAlterSchemaOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeAlterTableOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterTableOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAddConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAddConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAddConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAddColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAddColumnTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAddColumnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAddColumnEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAddColumnEntryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAddColumnEntryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropColumnTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropColumnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterColumnTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterColumnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRenameColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRenameColumnTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRenameColumnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNestedColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNestedColumnNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNestedColumnNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIdentifierDotTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIdentifierDotTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIdentifierDotTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRenameAlterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRenameAlterTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRenameAlterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetPartitionedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetPartitionedByTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetPartitionedByTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeResetPartitionedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeResetPartitionedByTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeResetPartitionedByTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetSortedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetSortedByTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetSortedByTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeResetSortedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeResetSortedByTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeResetSortedByTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeResetOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeResetOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeResetOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterColumnEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterColumnEntryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterColumnEntryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAddOrDropDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAddOrDropDefaultTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAddOrDropDefaultTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAddDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAddDefaultTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAddDefaultTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropDefaultTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropDefaultTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeChangeNullabilityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeChangeNullabilityTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeChangeNullabilityTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropOrSetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropOrSetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropOrSetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropNullabilityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropNullabilityTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSetNullabilityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetNullabilityTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDropNullabilityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSetNullabilityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSetNullabilityTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUsingExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUsingExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUsingExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterViewStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterViewStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterViewStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterSequenceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterSequenceStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterSequenceStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedSequenceNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQualifiedSequenceNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeQualifiedSequenceNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterSequenceOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterSequenceOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAlterSequenceOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRenameAlterSequenceOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeRenameAlterSequenceOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSetSequenceOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetSequenceOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetSequenceOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAlterDatabaseStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAlterDatabaseStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeAnalyzeStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnalyzeStatementTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeAlterDatabaseStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeAnalyzeStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeAnalyzeStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAnalyzeTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnalyzeTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAnalyzeTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAnalyzeVerboseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnalyzeVerboseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAnalyzeVerboseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAttachStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAttachStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAttachStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDatabasePathTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDatabasePathTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeAttachAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAttachAliasTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDatabasePathTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeAttachAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeAttachAliasTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAttachOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAttachOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAttachOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCallStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCallStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCallStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCheckpointStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCheckpointStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCheckpointStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCheckpointForceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCheckpointForceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCheckpointForceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentStringLiteralIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCommentStringLiteralIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCommentOnTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentOnTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeCommentTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentTableTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeCommentOnTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeCommentTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentTableTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentSequenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentSequenceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentSequenceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentMacroTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentMacroTableTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentMacroTableTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentMacroTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentMacroTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeCommentViewTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentViewTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeCommentMacroTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeCommentViewTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentViewTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentDatabaseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentDatabaseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentDatabaseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentIndexTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentIndexTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentSchemaTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentSchemaTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommentColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentColumnTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeCommentValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommentValueTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeCommentColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeCommentValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCommentValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStringLiteralValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStringLiteralValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStringLiteralValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAnalyzeKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnalyzeKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAnalyzeKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExpressionStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExpressionStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExpressionStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExpressionAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExpressionAliasTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExpressionAliasTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIndexNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIndexNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIndexNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeConstraintNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeConstraintNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeConstraintNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSequenceNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSequenceNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSequenceNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCollationNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCollationNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCollationNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNumberLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNumberLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNumberLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStringLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStringLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTypeVariationsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTypeVariationsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTypeVariationsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSimpleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSimpleTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSimpleTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCharacterSimpleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCharacterSimpleTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCharacterSimpleTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedSimpleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQualifiedSimpleTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeQualifiedSimpleTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntervalTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntervalTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalIntervalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntervalIntervalTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntervalIntervalTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalWithSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntervalWithSpecifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntervalWithSpecifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalWithRangeSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeIntervalWithRangeSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeIntervalWithSimpleSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeIntervalWithSimpleSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeIntervalWithoutSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeIntervalWithoutSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeIntervalToIntervalAsTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeIntervalToIntervalAsTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeYearKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeYearKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeYearKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMonthKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMonthKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMonthKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDayKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDayKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDayKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeHourKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeHourKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeHourKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMinuteKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMinuteKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMinuteKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSecondKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSecondKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSecondKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMillisecondKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMillisecondKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMillisecondKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMicrosecondKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMicrosecondKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMicrosecondKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWeekKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWeekKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWeekKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQuarterKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQuarterKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeDecadeKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDecadeKeywordTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeQuarterKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeDecadeKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeDecadeKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCenturyKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCenturyKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCenturyKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMillenniumKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMillenniumKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMillenniumKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntervalTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntervalTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalToIntervalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntervalToIntervalTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntervalToIntervalTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeYearToMonthTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeYearToMonthTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeYearToMonthTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDayToHourTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDayToHourTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDayToHourTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDayToMinuteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDayToMinuteTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDayToMinuteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDayToSecondTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDayToSecondTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDayToSecondTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeHourToMinuteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeHourToMinuteTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeHourToMinuteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeHourToSecondTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeHourToSecondTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeHourToSecondTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMinuteToSecondTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMinuteToSecondTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMinuteToSecondTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBitTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBitTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBitTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGeometryTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGeometryTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeVariantTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVariantTypeTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeGeometryTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeVariantTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeVariantTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNumericTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNumericTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNumericTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSimpleNumericTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSimpleNumericTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSimpleNumericTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDecimalNumericTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDecimalNumericTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDecimalNumericTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntegerTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntegerTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntegerTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSmallintTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSmallintTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSmallintTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBigintTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBigintTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBigintTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRealTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRealTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRealTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBooleanTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBooleanTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeDoubleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDoubleTypeTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeBooleanTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static void InitializeFloatTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFloatTypeTrampoline(PEGTransformer &transformer, + static void InitializeDoubleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeDoubleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeFloatTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeFloatTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDecimalTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDecimalTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDecimalTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDecTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDecTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDecTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNumericModTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNumericModTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNumericModTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedTypeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQualifiedTypeNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeQualifiedTypeNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTypeNameAsQualifiedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeTypeNameAsQualifiedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCatalogReservedSchemaTypeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCatalogReservedSchemaTypeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSchemaReservedTypeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeSchemaReservedTypeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSchemaReservedTypeNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTypeModifiersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTypeModifiersTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTypeModifiersTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRowTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRowTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRowTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetofTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetofTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetofTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnionTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnionTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUnionTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColIdTypeListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColIdTypeListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColIdTypeListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMapTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMapTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMapTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTupleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTupleTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTupleTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColIdTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColIdTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColIdTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeArrayBoundsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeArrayBoundsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeArrayBoundsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeArrayKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeArrayKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeArrayKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeArrayKeywordWithBoundsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeArrayKeywordWithBoundsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeArrayKeywordWithBoundsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSquareBracketsArrayTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSquareBracketsArrayTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSquareBracketsArrayTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTimeTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTimeTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTimeTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTimeOrTimestampTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTimeOrTimestampTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTimeOrTimestampTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTimeTypeIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTimeTypeIdTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTimeTypeIdTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTimestampTypeIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTimestampTypeIdTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTimestampTypeIdTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTimeZoneTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTimeZoneTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTimeZoneTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithOrWithoutTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithOrWithoutTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithOrWithoutTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithoutRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithoutRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithoutRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeConnectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeConnectStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeConnectStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDisconnectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDisconnectStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDisconnectStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSessionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSessionTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSessionTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLocalSessionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLocalSessionTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLocalSessionTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStringSessionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStringSessionTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStringSessionTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCatalogSessionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCatalogSessionTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCatalogSessionTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyVariationsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyVariationsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyVariationsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyTableTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeFromOrToTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFromOrToTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeCopyTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeFromOrToTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeFromOrToTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyFromTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyFromTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyFromTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyToTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyToTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyToTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopySelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopySelectTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopySelectTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyFileNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyFileNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyFileNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyFileNameExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeCopyFileNameExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyFileNameExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyFileNameStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCopyFileNameStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCopyFileNameIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeCopyFileNameIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyFileNameIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyFileNameIdentifierColIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCopyFileNameIdentifierColIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeIdentifierColIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIdentifierColIdTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIdentifierColIdTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyFileNameSuffixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyFileNameSuffixTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyFileNameSuffixTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyOptionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyOptionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSpecializedOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSpecializedOptionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSpecializedOptionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSpecializedOptionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSpecializedOptionTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSpecializedOptionTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSpecializedOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSpecializedOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSpecializedOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSingleOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSingleOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSingleOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBinaryOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBinaryOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBinaryOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFreezeOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFreezeOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFreezeOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOidsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOidsOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeCsvOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCsvOptionTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeOidsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeCsvOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCsvOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeHeaderOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeHeaderOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeHeaderOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNullAsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNullAsOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNullAsOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDelimiterAsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDelimiterAsOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDelimiterAsOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQuoteAsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQuoteAsOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeQuoteAsOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEscapeAsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEscapeAsOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEscapeAsOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEncodingOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEncodingOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEncodingOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeForceQuoteOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForceQuoteOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeForceQuoteOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStarSymbolColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStarSymbolColumnListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStarSymbolColumnListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeForceQuoteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForceQuoteTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeForceQuoteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePartitionByOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePartitionByOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePartitionByOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePartitionByColumnListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePartitionByColumnListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStarPartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeStarPartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeParenthesizedPartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeParenthesizedPartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSinglePartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSinglePartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeForceNullOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForceNullOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeForceNullOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeForceNotNullTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForceNotNullTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeForceNotNullTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyGenericOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyGenericOptionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyGenericOptionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyGenericOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyGenericOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyGenericOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOrderByCopyOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOrderByCopyOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOrderByCopyOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePartitionedByCopyOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizePartitionedByCopyOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeGenericCopyOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGenericCopyOptionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGenericCopyOptionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGenericCopyOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGenericCopyOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGenericCopyOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGenericCopyOptionValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeGenericCopyOptionValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeGenericCopyOptionValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGenericCopyOptionOrderListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeGenericCopyOptionOrderListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeGenericCopyOptionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeGenericCopyOptionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeGenericCopyOptionParenthesizedExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeGenericCopyOptionParenthesizedExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCopyFromDatabaseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyFromDatabaseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyFromDatabaseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyFromDatabaseWithFlagTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCopyFromDatabaseWithFlagTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCopyFromDatabaseWithoutFlagTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCopyFromDatabaseWithoutFlagTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCopyDatabaseFlagTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyDatabaseFlagTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyDatabaseFlagTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSchemaOrDataTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSchemaOrDataTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSchemaOrDataTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopySchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopySchemaTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopySchemaTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCopyDataTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCopyDataTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCopyDataTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateIndexStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateIndexStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateIndexStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRelOptionOrOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRelOptionOrOidsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRelOptionOrOidsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRelOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRelOptionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRelOptionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOidsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOidsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithOrWithoutOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithOrWithoutOidsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithOrWithoutOidsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithOidsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithOidsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithoutOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithoutOidsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithoutOidsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIndexElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIndexElementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeUniqueIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUniqueIndexTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeIndexElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeUniqueIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeUniqueIndexTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIndexTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIndexTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIndexTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRelOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRelOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRelOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRelOptionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRelOptionNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRelOptionNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDottedColLabelTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDottedColLabelTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDottedColLabelTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRelOptionArgumentOptTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRelOptionArgumentOptTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRelOptionArgumentOptTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDefArgTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDefArgTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDefArgTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDefArgNullTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDefArgNullTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDefArgNullTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDefArgKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDefArgKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDefArgKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDefArgStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDefArgStringLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDefArgStringLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNoneLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNoneLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNoneLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateMacroStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateMacroStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateMacroStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMacroOrFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMacroOrFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMacroOrFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMacroKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMacroKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMacroKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFunctionKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFunctionKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFunctionKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMacroDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMacroDefinitionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMacroDefinitionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMacroDefinitionBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMacroDefinitionBodyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMacroDefinitionBodyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMacroParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMacroParametersTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeMacroParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMacroParameterTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeMacroParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeMacroParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeMacroParameterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSimpleParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSimpleParameterTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSimpleParameterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeScalarMacroDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeScalarMacroDefinitionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeScalarMacroDefinitionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableMacroDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableMacroDefinitionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableMacroDefinitionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateSchemaStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateSchemaStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateSchemaStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithOptionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithOptionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateSecretStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateSecretStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateSecretStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSecretStorageSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeSecretStorageSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSecretStorageSpecifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSecretNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSecretNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSecretNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateSequenceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateSequenceStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateSequenceStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSequenceOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSequenceOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSequenceOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSeqSetCycleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqSetCycleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSeqSetCycleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSeqCycleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqCycleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSeqCycleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSeqNoCycleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqNoCycleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSeqNoCycleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSeqSetIncrementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqSetIncrementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSeqSetIncrementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSeqSetMinMaxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqSetMinMaxTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSeqNoMinMaxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqNoMinMaxTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeSeqSetMinMaxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSeqNoMinMaxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSeqNoMinMaxTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSeqStartWithTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqStartWithTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSeqStartWithTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSeqOwnedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqOwnedByTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSeqOwnedByTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSeqMinOrMaxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSeqMinOrMaxTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSeqMinOrMaxTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMinValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMinValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMinValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMaxValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMaxValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMaxValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateStatementVariationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCreateStatementVariationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeOrReplaceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOrReplaceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOrReplaceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTemporaryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTemporaryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTemporaryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePersistentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePersistentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePersistentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTempPersistentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTempPersistentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTempPersistentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTemporaryPersistentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTemporaryPersistentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTemporaryPersistentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateTableStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTableStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTableStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateTableDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTableDefinitionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTableDefinitionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateTableAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTableAsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTableAsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePartitionSortedOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizePartitionSortedOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizePartitionSortedOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePartitionOptSortedOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizePartitionOptSortedOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSortedOptPartitionOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSortedOptPartitionOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializePartitionOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePartitionOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePartitionOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSortedOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSortedOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSortedOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithDataTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithDataTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithDataTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithDataOnlyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithDataOnlyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithDataOnlyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithNoDataTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithNoDataTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithNoDataTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIdentifierListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIdentifierListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIdentifierListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateColumnListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateColumnListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIfNotExistsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIfNotExistsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIfNotExistsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQualifiedNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeQualifiedNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSchemaReservedIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSchemaReservedIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCatalogReservedSchemaIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCatalogReservedSchemaIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeReservedIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeReservedIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCatalogQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCatalogQualificationTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCatalogQualificationTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSchemaQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSchemaQualificationTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSchemaQualificationTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReservedSchemaQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeReservedSchemaQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeTableQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableQualificationTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableQualificationTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReservedTableQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeReservedTableQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCreateTableColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTableColumnListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTableColumnListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateTableColumnElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCreateTableColumnElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCreateTableColumnDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCreateTableColumnDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCreateTableConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTableConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTableConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColumnDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnDefinitionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnDefinitionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColumnConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotNullConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotNullConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNotNullConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNullConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNullConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNullConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotNullColumnConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeNotNullColumnConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeUniqueConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUniqueConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUniqueConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePrimaryKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePrimaryKeyConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePrimaryKeyConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDefaultValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDefaultValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDefaultValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCheckConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCheckConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCheckConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeForeignKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForeignKeyConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeForeignKeyConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColumnCollationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnCollationTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnCollationTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColumnCompressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnCompressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnCompressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeKeyActionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeKeyActionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeKeyActionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateFirstKeyActionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateFirstKeyActionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateFirstKeyActionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDeleteFirstKeyActionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDeleteFirstKeyActionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDeleteFirstKeyActionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDeleteActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDeleteActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDeleteActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeKeyActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeKeyActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNoKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNoKeyActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNoKeyActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRestrictKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRestrictKeyActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeCascadeKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCascadeKeyActionTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeRestrictKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeCascadeKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCascadeKeyActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetNullKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetNullKeyActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetNullKeyActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetDefaultKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetDefaultKeyActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeTopLevelConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTopLevelConstraintTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeSetDefaultKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeTopLevelConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeTopLevelConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTopLevelConstraintListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeTopLevelConstraintListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeTopLevelConstraintListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTopCheckConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTopCheckConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTopCheckConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTopPrimaryKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeTopPrimaryKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeTopUniqueConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTopUniqueConstraintTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTopUniqueConstraintTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTopForeignKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeTopForeignKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeColumnIdListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnIdListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnIdListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDottedIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDottedIdentifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDottedIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDotColLabelTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDotColLabelTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIdentifierTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDotColLabelTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColIdTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColIdTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColIdOrStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColIdOrStringTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeTypeFuncNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTypeFuncNameTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeColIdOrStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeTypeFuncNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeTypeFuncNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTypeFuncKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTypeFuncKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTypeFuncKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColLabelTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColLabelTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColLabelTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColLabelOrStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColLabelOrStringTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColLabelOrStringTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColLabelIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColLabelIdentifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColLabelIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStringLiteralIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeStringLiteralIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeGeneratedColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGeneratedColumnTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGeneratedColumnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGeneratedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGeneratedTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGeneratedTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGeneratedAlwaysTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGeneratedAlwaysTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGeneratedAlwaysTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGeneratedByDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGeneratedByDefaultTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGeneratedByDefaultTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGeneratedColumnTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGeneratedColumnTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGeneratedColumnTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommitActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommitActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommitActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePreserveOrDeleteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePreserveOrDeleteTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePreserveOrDeleteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePreserveRowsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePreserveRowsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePreserveRowsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDeleteRowsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDeleteRowsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDeleteRowsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVirtualGeneratedColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeVirtualGeneratedColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeVirtualGeneratedColumnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStoredGeneratedColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStoredGeneratedColumnTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStoredGeneratedColumnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateTriggerStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTriggerStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTriggerStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerBodyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerBodyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReferencingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReferencingClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReferencingClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReferencingItemTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReferencingItemTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReferencingItemTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReferencingNewTableAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReferencingNewTableAsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReferencingNewTableAsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReferencingOldTableAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReferencingOldTableAsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReferencingOldTableAsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerTimingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerTimingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerTimingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerBeforeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerBeforeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeTriggerAfterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerAfterTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeTriggerBeforeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeTriggerAfterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerAfterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerInsteadOfTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerInsteadOfTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerInsteadOfTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerEventTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerEventTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerEventTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerEventInsertTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerEventInsertTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerEventInsertTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerEventDeleteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerEventDeleteTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerEventDeleteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerEventUpdateTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerEventUpdateTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerEventUpdateTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerEventUpdateOfTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerEventUpdateOfTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerEventUpdateOfTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTriggerColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTriggerColumnListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTriggerColumnListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeForEachClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForEachClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeForEachClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeForEachRowTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForEachRowTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeForEachRowTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeForEachStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForEachStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeForEachStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateTypeStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTypeStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTypeStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateTypeFromTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateTypeFromTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateTypeFromTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEnumSelectTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEnumSelectTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEnumSelectTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEnumStringLiteralListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEnumStringLiteralListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEnumStringLiteralListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateViewStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateViewStmtTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateViewStmtTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateRecursiveTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateRecursiveTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateRecursiveTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCreateSecureTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCreateSecureTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCreateSecureTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDeallocateStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDeallocateStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDeallocateStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDeallocatePrepareTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDeallocatePrepareTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDeallocatePrepareTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDeleteStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDeleteStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDeleteStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTruncateStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTruncateStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTruncateStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTargetOptAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTargetOptAliasTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTargetOptAliasTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTargetAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTargetAliasTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTargetAliasTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDeleteUsingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDeleteUsingClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDeleteUsingClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescribeStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescribeStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeShowDeprecatedSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowDeprecatedSelectTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeShowDeprecatedSelectTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescribeSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeSelectTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeShowAllTablesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowAllTablesTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDescribeSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeShowAllTablesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeShowAllTablesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeShowTablesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowTablesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeShowTablesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeShowByNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowByNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeShowByNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescribeByNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeByNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescribeByNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescribeOrSummarizeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeOrSummarizeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescribeOrSummarizeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeShowTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeShowTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeShowDeprecatedQualifiedTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeShowDeprecatedQualifiedTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeShowSettingNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowSettingNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeDescribeTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeTargetTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeShowSettingNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeDescribeTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeDescribeTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescribeBaseTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeBaseTableNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescribeBaseTableNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescribeStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeStringLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescribeStringLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSummarizeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSummarizeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSummarizeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSummarizeRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSummarizeRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSummarizeRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeShowOrDescribeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowOrDescribeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeShowOrDescribeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeShowRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeShowRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescribeRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescribeRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescribeLongRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescribeLongRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescribeLongRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDetachStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDetachStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDetachStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropEntriesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropEntriesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropEntriesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropTriggerTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropTriggerTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropTriggerTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropTableTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropTableTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropTableFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropTableFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropSchemaTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeDropIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropIndexTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDropSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeDropIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeDropIndexTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedIndexNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQualifiedIndexNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeQualifiedIndexNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedIndexNameStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeQualifiedIndexNameStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSchemaReservedIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSchemaReservedIndexTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSchemaReservedIndexTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCatalogReservedSchemaIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCatalogReservedSchemaIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeDropSequenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropSequenceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropSequenceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropCollationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropCollationTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropCollationTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropSecretTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropSecretTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropSecretTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableOrViewTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableOrViewTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableOrViewTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMaterializedViewEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMaterializedViewEntryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMaterializedViewEntryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFunctionTypeMacroTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFunctionTypeMacroTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFunctionTypeMacroTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFunctionTypeMacroKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeFunctionTypeMacroKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeFunctionTypeFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFunctionTypeFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFunctionTypeFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropBehaviorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropBehaviorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDropBehaviorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCascadeDropBehaviorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCascadeDropBehaviorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCascadeDropBehaviorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRestrictDropBehaviorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRestrictDropBehaviorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRestrictDropBehaviorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIfExistsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIfExistsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIfExistsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropSecretStorageTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDropSecretStorageTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeExecuteStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExecuteStatementTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDropSecretStorageTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeExecuteStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeExecuteStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExplainStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExplainStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExplainStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExplainOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExplainOptionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExplainOptionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExplainOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExplainOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExplainOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExplainOptionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExplainOptionNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExplainOptionNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExplainSelectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeExplainSelectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeExplainSelectStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExplainableStatementsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExplainableStatementsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExplainableStatementsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExportStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExportStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExportStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExportSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExportSourceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExportSourceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeImportStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeImportStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeImportStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColumnReferenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnReferenceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnReferenceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNestedSchemaTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeNestedSchemaTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCatalogReservedSchemaTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCatalogReservedSchemaTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSchemaReservedTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSchemaReservedTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeTableReservedColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeTableReservedColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeFunctionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFunctionExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFunctionExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFunctionExpressionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeFunctionExpressionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeFunctionExpressionArgumentListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeFunctionExpressionArgumentListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeFunctionArgumentListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFunctionArgumentListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFunctionArgumentListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFunctionIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFunctionIdentifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFunctionIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFunctionNameAsQualifiedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeFunctionNameAsQualifiedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCatalogReservedSchemaFunctionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCatalogReservedSchemaFunctionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSchemaReservedFunctionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSchemaReservedFunctionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeDistinctOrAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDistinctOrAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDistinctOrAllTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDistinctKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDistinctKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDistinctKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAllKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAllKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAllKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithinGroupClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithinGroupClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithinGroupClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFilterClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFilterClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFilterClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFilterClauseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeFilterClauseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeFilterClauseExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFilterClauseContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFilterClauseContentsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFilterClauseContentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIgnoreOrRespectNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIgnoreOrRespectNullsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIgnoreOrRespectNullsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIgnoreNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIgnoreNullsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIgnoreNullsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRespectNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRespectNullsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRespectNullsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeParenthesisExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeParenthesisExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeParenthesisExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeConstantLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeConstantLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeConstantLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNullLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNullLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNullLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTrueLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTrueLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTrueLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFalseLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFalseLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFalseLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCastExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCastExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeCastArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCastArgumentsTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeCastExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeCastArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCastArgumentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCastOrTryCastTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCastOrTryCastTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCastOrTryCastTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCastKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCastKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCastKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTryCastKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTryCastKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTryCastKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColIdDotTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColIdDotTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColIdDotTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStarExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStarExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStarExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStarQualifierListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStarQualifierListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStarQualifierListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeNamesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeNamesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeNamesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeNameListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeNameListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeNameSingleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeNameSingleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeNameSingleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeDottedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeDottedNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeDottedNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeColumnNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeColumnNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReplaceListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReplaceListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReplaceListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReplaceEntriesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReplaceEntriesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReplaceEntriesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReplaceEntrySingleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReplaceEntrySingleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReplaceEntrySingleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReplaceEntryListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReplaceEntryListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReplaceEntryListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReplaceEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReplaceEntryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReplaceEntryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRenameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRenameListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRenameListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRenameEntriesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRenameEntriesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRenameEntriesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRenameEntryListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRenameEntryListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRenameEntryListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSingleRenameEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSingleRenameEntryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSingleRenameEntryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRenameEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRenameEntryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRenameEntryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubqueryExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubqueryExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSubqueryExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubqueryNotTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubqueryNotTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSubqueryNotTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubqueryExistsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubqueryExistsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSubqueryExistsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCaseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCaseExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCaseExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCaseWhenThenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCaseWhenThenTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCaseWhenThenTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCaseElseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCaseElseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCaseElseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTypeLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTypeLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTypeLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntervalLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntervalLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntervalParameterTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntervalParameterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntervalStringParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeIntervalStringParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeFrameClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFrameClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFrameClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFramingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFramingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFramingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRowsFramingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRowsFramingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRowsFramingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRangeFramingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRangeFramingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRangeFramingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupsFramingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupsFramingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupsFramingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFrameExtentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFrameExtentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFrameExtentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSingleFrameExtentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSingleFrameExtentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSingleFrameExtentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBetweenFrameExtentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBetweenFrameExtentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBetweenFrameExtentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFrameBoundTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFrameBoundTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFrameBoundTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFrameUnboundedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFrameUnboundedTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFrameUnboundedTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFrameExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFrameExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFrameExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFrameCurrentRowTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFrameCurrentRowTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFrameCurrentRowTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePrecedingOrFollowingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePrecedingOrFollowingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePrecedingOrFollowingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePrecedingFrameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePrecedingFrameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePrecedingFrameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFollowingFrameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFollowingFrameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFollowingFrameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWindowExcludeClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWindowExcludeClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWindowExcludeClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWindowExcludeElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWindowExcludeElementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWindowExcludeElementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeCurrentRowTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeCurrentRowTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeCurrentRowTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeGroupTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeGroupTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeExcludeTiesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeTiesTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeExcludeGroupTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeExcludeTiesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeTiesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeNoOthersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeNoOthersTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeNoOthersTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWindowFrameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWindowFrameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWindowFrameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIdentifierWindowFrameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIdentifierWindowFrameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIdentifierWindowFrameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeParensIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeParensIdentifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeParensIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWindowFrameDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWindowFrameDefinitionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWindowFrameDefinitionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWindowFrameNameContentsParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeWindowFrameNameContentsParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeWindowFrameNameContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeWindowFrameNameContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeWindowFrameContentsParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeWindowFrameContentsParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeWindowFrameContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWindowFrameContentsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWindowFrameContentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBaseWindowNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBaseWindowNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBaseWindowNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWindowPartitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWindowPartitionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeListExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeListExpressionTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeWindowPartitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeListExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeListExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeArrayBoundedListExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeArrayBoundedListExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeArrayParensSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeArrayParensSelectTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeArrayParensSelectTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBoundedListExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBoundedListExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBoundedListExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStructExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStructExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStructExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStructFieldTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStructFieldTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStructFieldTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMapExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMapExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMapExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMapStructExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMapStructExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMapStructExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMapStructFieldTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMapStructFieldTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMapStructFieldTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupingExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupingExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupingExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupingOrGroupingIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupingOrGroupingIdTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupingOrGroupingIdTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupingKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupingKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupingKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupingIdKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupingIdKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupingIdKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeParameterTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeParameterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQuestionMarkNumberedParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeQuestionMarkNumberedParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeAnonymousParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnonymousParameterTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeNumberedParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNumberedParameterTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeAnonymousParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeNumberedParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeNumberedParameterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColLabelParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColLabelParameterTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColLabelParameterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePositionalExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePositionalExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePositionalExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDefaultExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDefaultExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDefaultExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeListComprehensionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeListComprehensionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeListComprehensionFilterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeListComprehensionFilterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeParensExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeParensExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeParensExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSingleExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSingleExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSingleExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColumnDefaultExprTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnDefaultExprTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnDefaultExprTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLambdaArrowExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLambdaArrowExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLambdaArrowExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSingleArrowPairTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSingleArrowPairTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSingleArrowPairTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLogicalOrExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLogicalOrExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLogicalOrExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLogicalOrExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeLogicalOrExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeColDefOrExprTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColDefOrExprTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColDefOrExprTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColDefOrExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeColDefOrExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeColDefOrExpressionTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLogicalAndExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLogicalAndExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLogicalAndExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLogicalAndExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeLogicalAndExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeColDefAndExprTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColDefAndExprTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColDefAndExprTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColDefAndExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeColDefAndExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeLogicalNotExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLogicalNotExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLogicalNotExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNotExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNotKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsExpressionContinuationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeIsExpressionContinuationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeIsExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsExpressionTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsExpressionTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsTestTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsTestTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsTestTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsDistinctTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsDistinctTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsDistinctTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsComparisonTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsComparisonTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsComparisonTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsOtherOperatorTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsOtherOperatorTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsOtherOperatorTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsTestTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsTestTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsTestTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsLiteralValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsLiteralValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsLiteralValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnknownLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnknownLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUnknownLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotNullTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotNullTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNotNullTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotNullKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotNullKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNotNullKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotNullOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotNullOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNotNullOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsNullTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsNullTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsNullTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsNullOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsNullOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsNullOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsDistinctFromExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeIsDistinctFromExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeIsDistinctFromTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsDistinctFromTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsDistinctFromTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIsDistinctFromOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIsDistinctFromOpTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIsDistinctFromOpTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeComparisonExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeComparisonExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeComparisonExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeComparisonExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeComparisonExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeComparisonOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeComparisonOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeComparisonOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOperatorEqualTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOperatorEqualTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOperatorEqualTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOperatorNotEqualTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOperatorNotEqualTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOperatorNotEqualTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOperatorLessThanTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOperatorLessThanTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOperatorLessThanTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOperatorGreaterThanTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOperatorGreaterThanTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOperatorGreaterThanTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOperatorLessThanEqualsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeOperatorLessThanEqualsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeOperatorLessThanEqualsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOperatorGreaterThanEqualsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeOperatorGreaterThanEqualsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeBetweenInLikeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeBetweenInLikeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeInPredicateTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInPredicateTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInPredicateTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBetweenLikeOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBetweenLikeOpTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBetweenLikeOpTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBetweenLikeOpExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeBetweenLikeOpExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeLikeClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLikeClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLikeClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEscapeClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEscapeClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEscapeClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLikeVariationsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLikeVariationsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLikeVariationsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLikeTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLikeTokenTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLikeTokenTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeILikeTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeILikeTokenTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeGlobTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGlobTokenTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeILikeTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeGlobTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeGlobTokenTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSimilarToTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSimilarToTokenTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSimilarToTokenTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRegexMatchTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRegexMatchTokenTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRegexMatchTokenTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRegexInsensitiveMatchTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeRegexInsensitiveMatchTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeNotILikeOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotILikeOpTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeNotLikeOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotLikeOpTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeNotILikeOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeNotLikeOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeNotLikeOpTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotRegexInsensitiveMatchOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeNotRegexInsensitiveMatchOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeNotSimilarToOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotSimilarToOpTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNotSimilarToOpTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInContainsExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInContainsExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInContainsExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInExpressionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInExpressionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInSelectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInSelectStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInSelectStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBetweenClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBetweenClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBetweenClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOtherOperatorExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeOtherOperatorExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeInfixOtherOperatorExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeInfixOtherOperatorExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCustomPrefixExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeCustomPrefixExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCustomPrefixExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOtherOperatorTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOtherOperatorTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOtherOperatorTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOtherOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOtherOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOtherOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAnyAllParsedOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnyAllParsedOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAnyAllParsedOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNamedOtherOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNamedOtherOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNamedOtherOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOperatorLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOperatorLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOperatorLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAnyOperatorLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnyOperatorLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAnyOperatorLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAnyAllOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnyAllOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAnyAllOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAnyOrAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAnyOrAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAnyOrAllTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubqueryAnyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubqueryAnyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSubqueryAnyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubqueryAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubqueryAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSubqueryAllTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQualifiedOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeQualifiedOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedOperatorContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeQualifiedOperatorContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeBitwiseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBitwiseExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBitwiseExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBitwiseExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBitwiseExpressionTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBitwiseExpressionTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBitOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBitOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBitOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTildeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTildeExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTildeExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAdditiveExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAdditiveExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAdditiveExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAdditiveExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeAdditiveExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeAdditiveExpressionTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTermTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTermTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTermTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMultiplicativeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeMultiplicativeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeMultiplicativeExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeMultiplicativeExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeFactorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFactorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFactorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExponentiationExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExponentiationExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeExponentiationExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExponentiationExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeExponentOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExponentOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExponentOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCollateExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCollateExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCollateExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCollateExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCollateExpressionTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCollateExpressionTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAtTimeZoneExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAtTimeZoneExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAtTimeZoneExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAtTimeZoneExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeAtTimeZoneExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializePrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePrefixOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePrefixOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMinusPrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMinusPrefixOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializePlusPrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePlusPrefixOperatorTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeMinusPrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializePlusPrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizePlusPrefixOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTildePrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTildePrefixOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTildePrefixOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBaseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBaseExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBaseExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIndirectionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIndirectionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIndirectionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIndirectionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIndirectionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIndirectionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCastOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCastOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeDotOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDotOperatorTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeCastOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeDotOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeDotOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDotMethodOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDotMethodOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDotMethodOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDotColumnOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDotColumnOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeMethodExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMethodExpressionTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDotColumnOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeMethodExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeMethodExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMethodExpressionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeMethodExpressionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeMethodExpressionArgumentListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeMethodExpressionArgumentListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeMethodFunctionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeMethodFunctionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSliceExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSliceExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSliceExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSliceBoundTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSliceBoundTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSliceBoundTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEndSliceBoundTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEndSliceBoundTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEndSliceBoundTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEndSliceValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEndSliceValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEndSliceValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEndSliceMinusTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEndSliceMinusTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEndSliceMinusTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStepSliceBoundTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStepSliceBoundTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStepSliceBoundTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePostfixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePostfixOperatorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePostfixOperatorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSpecialFunctionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSpecialFunctionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCoalesceExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCoalesceExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCoalesceExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnpackExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnpackExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUnpackExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTryExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTryExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTryExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColumnsExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnsExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnsExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExtractExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExtractExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeExtractArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExtractArgumentsTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeExtractExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeExtractArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeExtractArgumentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLambdaExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLambdaExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLambdaExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNullIfExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNullIfExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeNullIfArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNullIfArgumentsTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeNullIfExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeNullIfArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeNullIfArgumentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePositionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePositionExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializePositionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePositionArgumentsTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizePositionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializePositionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizePositionArgumentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRowExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRowExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRowExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubstringExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubstringExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSubstringArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubstringArgumentsTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeSubstringExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSubstringArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSubstringArgumentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubstringExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSubstringExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSubstringParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubstringParametersTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSubstringParametersTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubstringFromForTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubstringFromForTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSubstringFromForTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSubstringFromOptionalForTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSubstringFromOptionalForTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSubstringForTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubstringForTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSubstringForTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTrimExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTrimExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeTrimArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTrimArgumentsTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeTrimExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeTrimArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeTrimArgumentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTrimDirectionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTrimDirectionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTrimDirectionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTrimBothTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTrimBothTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTrimBothTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTrimLeadingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTrimLeadingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTrimLeadingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTrimTrailingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTrimTrailingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTrimTrailingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTrimSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTrimSourceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTrimSourceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOverlayExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOverlayExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeOverlayArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOverlayArgumentsTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeOverlayExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeOverlayArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeOverlayArgumentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOverlayParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOverlayParametersTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOverlayParametersTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFromExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFromExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeForExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeForExpressionTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeFromExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeForExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeForExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOverlayExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOverlayExpressionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOverlayExpressionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExtractArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExtractArgumentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExtractArgumentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExtractDatePartArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExtractDatePartArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeExtractIdentifierArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExtractIdentifierArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeExtractStringArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExtractStringArgumentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExtractStringArgumentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExtractDatePartTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExtractDatePartTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExtractDatePartTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExternalResourceStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExternalResourceStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCreateExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCreateExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeRegisterExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeRegisterExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeDestroyExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeDestroyExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeShowExternalResourcesStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeShowExternalResourcesStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeShowAllModifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeShowAllModifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeShowAllModifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExternalResourceCreationOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExternalResourceCreationOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeAttachToExternalResourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeAttachToExternalResourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeConnectToExternalResourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeConnectToExternalResourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeExternalResourceSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeExternalResourceSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeExternalResourceSourceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExternalResourceCreateClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExternalResourceCreateClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeExternalResourceReferenceClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExternalResourceReferenceClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeInsertStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOrActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOrActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOrActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertOrReplaceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertOrReplaceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeInsertOrIgnoreTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertOrIgnoreTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeInsertOrReplaceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeInsertOrIgnoreTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertOrIgnoreTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeByNameOrPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeByNameOrPositionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeByNameOrPositionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertByNameOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertByNameOrderTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertByNameOrderTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertByPositionOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertByPositionOrderTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertByPositionOrderTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertByNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertByNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertByNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertByPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertByPositionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertByPositionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeInsertAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertAliasTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeInsertTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static void InitializeColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnListTrampoline(PEGTransformer &transformer, + static void InitializeInsertAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertColumnListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertColumnListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertValuesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertValuesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectInsertValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectInsertValuesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectInsertValuesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDefaultValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDefaultValuesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDefaultValuesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOnConflictClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOnConflictClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOnConflictClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOnConflictTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOnConflictTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOnConflictTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOnConflictExpressionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeOnConflictExpressionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeOnConflictIndexTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOnConflictIndexTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOnConflictIndexTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOnConflictActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOnConflictActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOnConflictActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOnConflictUpdateTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOnConflictUpdateTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOnConflictUpdateTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOnConflictNothingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOnConflictNothingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOnConflictNothingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReturningClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReturningClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReturningClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLoadStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLoadStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLoadStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExtensionAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExtensionAliasTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExtensionAliasTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInstallStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInstallStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInstallStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInstallAndLoadTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInstallAndLoadTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInstallAndLoadTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateExtensionsStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeUpdateExtensionsStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeFromSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFromSourceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFromSourceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFromSourceIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFromSourceIdentifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFromSourceIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFromSourceStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFromSourceStringTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFromSourceStringTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVersionNumberTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVersionNumberTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeVersionNumberTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExtensionRepositoryStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExtensionRepositoryStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeCreateExtensionRepositoryStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCreateExtensionRepositoryStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeRepositoryPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRepositoryPrefixTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRepositoryPrefixTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRepositoryPublicKeyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRepositoryPublicKeyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRepositoryPublicKeyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDropExtensionRepositoryStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeDropExtensionRepositoryStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeMergeIntoStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMergeIntoStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMergeIntoStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMergeIntoUsingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMergeIntoUsingClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMergeIntoUsingClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMergeMatchTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMergeMatchTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMergeMatchTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMatchedClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMatchedClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMatchedClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMatchedClauseActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMatchedClauseActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMatchedClauseActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateMatchClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateMatchClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateMatchInfoTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateMatchInfoTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateMatchInfoTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateMatchSetActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateMatchSetActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateMatchSetActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateByNameOrPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeUpdateByNameOrPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateByNameOrPositionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDeleteMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDeleteMatchClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDeleteMatchClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertMatchClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertMatchClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertMatchInfoTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertMatchInfoTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertMatchInfoTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertDefaultValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertDefaultValuesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertDefaultValuesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertByNameOrPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeInsertByNameOrPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertByNameOrPositionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInsertValuesListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInsertValuesListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInsertValuesListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDoNothingMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDoNothingMatchClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDoNothingMatchClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeErrorMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeErrorMatchClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeErrorMatchClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateMatchSetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateMatchSetClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateMatchSetClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateMatchSetInfoTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateMatchSetInfoTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateMatchSetInfoTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAndExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAndExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAndExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNotMatchedClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNotMatchedClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNotMatchedClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBySourceOrTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBySourceOrTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBySourceOrTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBySourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBySourceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBySourceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeByTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeByTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializePivotOnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotOnTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeByTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializePivotOnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizePivotOnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotUsingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotUsingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotUsingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotColumnListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotColumnListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotColumnEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotColumnEntryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotColumnEntryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotColumnExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotColumnExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotColumnExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotColumnSubqueryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotColumnSubqueryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotColumnSubqueryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntoNameValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntoNameValuesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntoNameValuesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOptionalParensNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeOptionalParensNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeOptionalParensNameListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeParenthesizedNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeParenthesizedNameListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeParenthesizedNameListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBareNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBareNameListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBareNameListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIncludeOrExcludeNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIncludeOrExcludeNullsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIncludeOrExcludeNullsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIncludeNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIncludeNullsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIncludeNullsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExcludeNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExcludeNullsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExcludeNullsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnpivotHeaderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnpivotHeaderTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUnpivotHeaderTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnpivotHeaderSingleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnpivotHeaderSingleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUnpivotHeaderSingleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnpivotHeaderListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnpivotHeaderListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUnpivotHeaderListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePragmaStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePragmaStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePragmaStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePragmaAssignOrFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizePragmaAssignOrFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizePragmaAssignOrFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePragmaAssignTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePragmaAssignTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePragmaAssignTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePragmaFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePragmaFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePragmaFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePragmaParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePragmaParametersTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePragmaParametersTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePrepareStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePrepareStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePrepareStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTypeListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTypeListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTypeListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectSetOpChainTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectSetOpChainTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectSetOpChainTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectSetOpChainTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectSetOpChainTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectSetOpChainTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntersectChainTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntersectChainTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntersectChainTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeIntersectChainTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeIntersectChainTailTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeIntersectChainTailTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetIntersectClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetIntersectClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetIntersectClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectAtomTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectAtomTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectAtomTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectParensTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSetopClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetopClauseTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeSelectParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSetopClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSetopClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetopTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetopTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetopTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetopUnionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetopUnionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetopUnionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetopExceptTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetopExceptTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetopExceptTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectStatementTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectStatementTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectStatementTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeResultModifiersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeResultModifiersTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeResultModifiersTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLimitOffsetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLimitOffsetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLimitOffsetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLimitOffsetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLimitOffsetClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLimitOffsetClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOffsetLimitClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOffsetLimitClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOffsetLimitClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOffsetFetchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOffsetFetchClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOffsetFetchClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFetchOffsetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFetchOffsetClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFetchOffsetClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFetchOnlyClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFetchOnlyClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeTableStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableStatementTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeFetchOnlyClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeTableStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeTableStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOptionalParensSimpleSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeOptionalParensSimpleSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSimpleSelectParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSimpleSelectParensTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSimpleSelectParensTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectFromTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectFromTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectFromTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectFromClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectFromClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectFromClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFromSelectClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFromSelectClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFromSelectClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWithStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCTEBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCTEBodyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCTEBodyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCTESelectBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCTESelectBodyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCTESelectBodyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCTEDMLBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCTEDMLBodyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCTEDMLBodyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUsingKeyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUsingKeyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUsingKeyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeMaterializedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeMaterializedTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeMaterializedTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSelectClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSelectClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSelectClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTargetListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTargetListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTargetListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColumnAliasesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColumnAliasesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColumnAliasesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDistinctClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDistinctClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDistinctClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDistinctAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDistinctAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeDistinctOnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDistinctOnTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDistinctAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeDistinctOnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeDistinctOnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDistinctOnTargetsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDistinctOnTargetsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDistinctOnTargetsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInnerTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInnerTableRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInnerTableRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableSubqueryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableSubqueryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeBaseTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBaseTableRefTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeTableSubqueryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeBaseTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeBaseTableRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableAliasColonTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableAliasColonTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableAliasColonTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeValuesRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeValuesRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeValuesRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeParensTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeParensTableRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeParensTableRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeJoinOrPivotTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeJoinOrPivotTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeJoinOrPivotTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTablePivotClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTablePivotClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTablePivotClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTablePivotClauseBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTablePivotClauseBodyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTablePivotClauseBodyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotGroupByListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotGroupByListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotGroupByListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableUnpivotClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableUnpivotClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableUnpivotClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableUnpivotClauseBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeTableUnpivotClauseBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeTableUnpivotClauseBodyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotHeaderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotHeaderTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotHeaderTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotValueListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotValueListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotValueListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotValueTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotValueTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializePivotEnumTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotEnumTargetTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizePivotValueTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializePivotEnumTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizePivotEnumTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePivotListTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotListTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePivotListTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnpivotValueListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnpivotValueListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializePivotTargetListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePivotTargetListTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeUnpivotValueListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializePivotTargetListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizePivotTargetListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnpivotTargetListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUnpivotTargetListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUnpivotTargetListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLateralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLateralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLateralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBaseTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBaseTableNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBaseTableNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUnqualifiedBaseTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeUnqualifiedBaseTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeQualifiedTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQualifiedTableNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeQualifiedTableNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSchemaReservedTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSchemaReservedTableTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSchemaReservedTableTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCatalogReservedSchemaTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeCatalogReservedSchemaTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableFunctionLateralOptTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeTableFunctionLateralOptTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeTableFunctionAliasColonTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeTableFunctionAliasColonTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeWithOrdinalityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWithOrdinalityTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWithOrdinalityTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifiedTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeQualifiedTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeQualifiedTableFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableFunctionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeTableFunctionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeTableFunctionArgumentsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFunctionArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFunctionArgumentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFunctionArgumentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNamedFunctionArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNamedFunctionArgumentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNamedFunctionArgumentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePositionalFunctionArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizePositionalFunctionArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeNamedParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNamedParameterTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNamedParameterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableAliasTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableAliasTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableAliasAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableAliasAsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableAliasAsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTableAliasWithoutAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTableAliasWithoutAsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTableAliasWithoutAsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAtClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAtClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAtClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAtSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAtSpecifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAtSpecifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAtUnitTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAtUnitTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAtUnitTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVersionAtUnitTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVersionAtUnitTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeVersionAtUnitTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTimestampAtUnitTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTimestampAtUnitTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTimestampAtUnitTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeJoinClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeJoinClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeJoinClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestJoinClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestJoinClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestJoinClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestJoinAliasedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestJoinAliasedTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestJoinAliasedTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestJoinBareTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestJoinBareTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestJoinBareTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestBareTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestBareTableRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestBareTableRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestValuesRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestValuesRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestValuesRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestTableFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestTableFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestTableSubqueryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestTableSubqueryTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestTableSubqueryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestBaseTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestBaseTableRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestBaseTableRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestParensTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestParensTableRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestParensTableRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeApproxOrExactTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeApproxOrExactTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeApproxOrExactTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestApproxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestApproxTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeNearestExactTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestExactTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeNearestApproxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeNearestExactTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestExactTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDistanceOrSimilarityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDistanceOrSimilarityTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDistanceOrSimilarityTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestDistanceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestDistanceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestDistanceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNearestSimilarityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNearestSimilarityTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNearestSimilarityTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRegularJoinClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRegularJoinClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRegularJoinClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeJoinByClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeJoinByClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeJoinByClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAsofTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAsofTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAsofTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeJoinWithoutOnClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeJoinWithoutOnClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeJoinWithoutOnClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeJoinQualifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeJoinQualifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeJoinQualifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOnClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOnClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOnClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUsingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUsingClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUsingClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUsingColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUsingColumnNameTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUsingColumnNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeJoinTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeJoinTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeJoinTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeJoinPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeJoinPrefixTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeJoinPrefixTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCrossJoinPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCrossJoinPrefixTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCrossJoinPrefixTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNaturalJoinPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNaturalJoinPrefixTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNaturalJoinPrefixTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializePositionalJoinPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizePositionalJoinPrefixTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizePositionalJoinPrefixTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFullJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFullJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFullJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLeftJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLeftJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLeftJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRightJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRightJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSemiJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSemiJoinTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeRightJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSemiJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSemiJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAntiJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAntiJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAntiJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeInnerJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeInnerJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeInnerJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFromClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFromClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFromClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWhereClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWhereClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeWhereClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupByClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupByClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeHavingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeHavingClauseTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeGroupByClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeHavingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeHavingClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeQualifyClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeQualifyClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSampleClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleClauseTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeQualifyClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSampleClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeWindowClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeWindowClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSampleEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleEntryTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeWindowClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSampleEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleEntryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSampleEntryCountTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleEntryCountTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleEntryCountTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSampleEntryFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleEntryFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleEntryFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSampleFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleFunctionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleFunctionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSamplePropertiesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSamplePropertiesTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSamplePropertiesTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRepeatableSampleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRepeatableSampleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRepeatableSampleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSampleSeedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleSeedTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleSeedTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSampleCountTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleCountTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleCountTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSampleValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSampleUnitTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleUnitTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeSampleValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSampleUnitTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleUnitTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSamplePercentageTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSamplePercentageTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSamplePercentageTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSampleRowsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSampleRowsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSampleRowsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupByExpressionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupByExpressionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupByExpressionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupByAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupByAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupByAllTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupByListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupByListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupByListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupByExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupByExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupByExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupByBaseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupByBaseExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeGroupByBaseExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeEmptyGroupingItemTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeEmptyGroupingItemTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeEmptyGroupingItemTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCubeOrRollupClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCubeOrRollupClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCubeOrRollupClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCubeOrRollupTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCubeOrRollupTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeCubeKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCubeKeywordTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeCubeOrRollupTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeCubeKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCubeKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRollupKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRollupKeywordTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRollupKeywordTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeGroupingSetsClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGroupingSetsClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSubqueryReferenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSubqueryReferenceTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeGroupingSetsClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSubqueryReferenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSubqueryReferenceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOrderByExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOrderByExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOrderByExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescOrAscTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescOrAscTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDescOrAscTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDescendingOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDescendingOrderTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeAscendingOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAscendingOrderTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeDescendingOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeAscendingOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeAscendingOrderTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNullsFirstOrLastTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNullsFirstOrLastTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNullsFirstOrLastTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNullsFirstTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNullsFirstTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeNullsLastTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNullsLastTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeNullsFirstTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeNullsLastTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeNullsLastTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOrderByClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOrderByClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOrderByClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOrderByExpressionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOrderByExpressionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOrderByExpressionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOrderByExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOrderByExpressionListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOrderByExpressionListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOrderByAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOrderByAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOrderByAllTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLimitClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLimitClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLimitClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOffsetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOffsetClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeOffsetValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOffsetValueTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeOffsetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static void InitializeLimitValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLimitValueTrampoline(PEGTransformer &transformer, + static void InitializeOffsetValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeOffsetValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeLimitValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeLimitValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLimitAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLimitAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLimitAllTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLimitLiteralPercentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLimitLiteralPercentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLimitLiteralPercentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLimitExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLimitExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLimitExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFetchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFetchClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFetchClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFetchClauseWithoutValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeFetchClauseWithoutValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeFetchClauseWithValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFetchClauseWithValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFetchClauseWithValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeFetchValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeFetchValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeFetchValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeAliasedExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeAliasedExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeAliasedExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeColIdExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeColIdExpressionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeColIdExpressionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExpressionAsCollabelTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeExpressionAsCollabelTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeExpressionAsCollabelTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeExpressionOptIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeExpressionOptIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeValuesClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeValuesClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeValuesClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeValuesExpressionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeValuesExpressionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeValuesExpressionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetAssignmentOrTimeZoneTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeSetAssignmentOrTimeZoneTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeResetStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeResetStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeResetStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetSchemaTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetSchemaTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeStandardAssignmentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeStandardAssignmentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeStandardAssignmentTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetVariableOrSettingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetVariableOrSettingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetVariableOrSettingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetTimeZoneTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetTimeZoneTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetTimeZoneTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeZoneValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeZoneValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeZoneValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeZoneLocalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeZoneLocalTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeZoneLocalTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeZoneDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeZoneDefaultTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeZoneDefaultTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeZoneStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeZoneStringLiteralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeZoneStringLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeZoneIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeZoneIdentifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeZoneIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeZoneIntervalWithIntervalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeZoneIntervalWithIntervalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeZoneIntervalWithPrecisionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr + static arena_ptr FinalizeZoneIntervalWithPrecisionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); static void InitializeSetSettingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetSettingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetSettingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetVariableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetVariableTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSetVariableTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVariableScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVariableScopeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeSettingScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSettingScopeTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeVariableScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeSettingScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeSettingScopeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeLocalScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeLocalScopeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeLocalScopeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSessionScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSessionScopeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeGlobalScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeGlobalScopeTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeSessionScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeGlobalScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeGlobalScopeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSetAssignmentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSetAssignmentTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeVariableListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVariableListTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeSetAssignmentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeVariableListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeVariableListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeTransactionStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeTransactionStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeTransactionStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBeginTransactionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBeginTransactionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBeginTransactionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeRollbackTransactionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeRollbackTransactionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeRollbackTransactionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCommitTransactionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeCommitTransactionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeCommitTransactionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReadOrWriteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReadOrWriteTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReadOrWriteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReadOnlyOrReadWriteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReadOnlyOrReadWriteTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReadOnlyOrReadWriteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReadOnlyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReadOnlyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReadOnlyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeReadWriteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeReadWriteTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeReadWriteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBaseTableSetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBaseTableSetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBaseTableSetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeBaseTableAliasSetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeBaseTableAliasSetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeBaseTableAliasSetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateAliasTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateAliasTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateSetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateSetClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); - static void InitializeUpdateSetTupleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateSetTupleTrampoline(PEGTransformer &transformer, + static arena_ptr FinalizeUpdateSetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static void InitializeUpdateSetTupleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateSetTupleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateSetElementListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateSetElementListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateSetElementListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateSetElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateSetElementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateSetElementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUpdateSetColumnTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUpdateSetColumnTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUpdateSetColumnTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUseStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUseStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUseStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUseTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeUseTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeUseTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeSchemaNameAsUseTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeSchemaNameAsUseTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeSchemaNameAsUseTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeCatalogNameAsUseTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeCatalogNameAsUseTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeCatalogNameAsUseTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeUseTargetCatalogSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr - FinalizeUseTargetCatalogSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); + static arena_ptr FinalizeUseTargetCatalogSchemaTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeDotIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeDotIdentifierTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeDotIdentifierTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVacuumStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVacuumStatementTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeVacuumStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVacuumOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVacuumOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeVacuumOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVacuumParensOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVacuumParensOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeVacuumParensOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVacuumLegacyOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVacuumLegacyOptionsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeVacuumLegacyOptionsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeVacuumOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeVacuumOptionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeVacuumOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOptAnalyzeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOptAnalyzeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOptAnalyzeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOptFullTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOptFullTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOptFullTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOptFreezeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOptFreezeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOptFreezeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeOptVerboseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeOptVerboseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeOptVerboseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static void InitializeNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process); - static unique_ptr FinalizeNameListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process); + static arena_ptr FinalizeNameListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process); static unique_ptr TransformAlterStatement(PEGTransformer &transformer, unique_ptr alter_options); static unique_ptr TransformAlterTableStmt(PEGTransformer &transformer, const optional &if_exists, diff --git a/src/duckdb/src/include/duckdb/parser/peg/transformer/transform_result.hpp b/src/duckdb/src/include/duckdb/parser/peg/transformer/transform_result.hpp index f8d3f0b2d..a97eca852 100644 --- a/src/duckdb/src/include/duckdb/parser/peg/transformer/transform_result.hpp +++ b/src/duckdb/src/include/duckdb/parser/peg/transformer/transform_result.hpp @@ -1,6 +1,7 @@ #pragma once #include "duckdb/common/common.hpp" +#include "duckdb/common/arena_containers/arena_ptr.hpp" #include diff --git a/src/duckdb/src/include/duckdb_extension_v2.h b/src/duckdb/src/include/duckdb_extension_v2.h index fcbe3a051..397cba13a 100644 --- a/src/duckdb/src/include/duckdb_extension_v2.h +++ b/src/duckdb/src/include/duckdb_extension_v2.h @@ -636,9 +636,6 @@ typedef struct { duckdb_v2_value_handle value, DUCKDB_V2_FUNCTION_PARAMETER_KIND kind, duckdb_v2_error_info_handle *err); DUCKDB_V2_ERROR(*duckdb_v2_function_signature_set_return_type) (duckdb_v2_function_signature_handle sig, duckdb_v2_logical_type_handle type, duckdb_v2_error_info_handle *err); - DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_bind_set_return_type) - (duckdb_v2_scalar_function_bind_info_handle info, duckdb_v2_logical_type_handle return_type, - duckdb_v2_error_info_handle *err); DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_create_with_connection) (duckdb_v2_connection_handle connection, duckdb_v2_scalar_function_handle *function, duckdb_v2_error_info_handle *err); @@ -1394,6 +1391,14 @@ typedef struct { const duckdb_v2_identifier_t *parameter_names, const duckdb_v2_value_handle *parameter_values, idx_t parameter_count, idx_t batch_size, duckdb_v2_arrow_result_handle *out_result, duckdb_v2_error_info_handle *err); + DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_resolve_types_set_return_type) + (duckdb_v2_scalar_function_resolve_types_info_handle info, duckdb_v2_logical_type_handle return_type, + duckdb_v2_error_info_handle *err); + DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_set_resolve_types_callback) + (duckdb_v2_scalar_function_handle function, duckdb_v2_scalar_function_resolve_types_callback_fn callback, + duckdb_v2_error_info_handle *err); + DUCKDB_V2_ERROR(*duckdb_v2_scalar_function_bind_set_bind_data) + (duckdb_v2_scalar_function_bind_info_handle info, duckdb_v2_opaque *data, duckdb_v2_error_info_handle *err); #if DUCKDB_V2_API_ALLOW_UNSTABLE DUCKDB_V2_ERROR(*duckdb_v2_copy_to_set_statistics_callback) (duckdb_v2_copy_function_handle function, duckdb_v2_copy_to_statistics_callback_fn callback, @@ -1699,7 +1704,6 @@ typedef struct { #define duckdb_v2_context_log duckdb_ext_api.duckdb_v2_context_log #define duckdb_v2_function_signature_add_parameter duckdb_ext_api.duckdb_v2_function_signature_add_parameter #define duckdb_v2_function_signature_set_return_type duckdb_ext_api.duckdb_v2_function_signature_set_return_type -#define duckdb_v2_scalar_function_bind_set_return_type duckdb_ext_api.duckdb_v2_scalar_function_bind_set_return_type #define duckdb_v2_scalar_function_create_with_connection duckdb_ext_api.duckdb_v2_scalar_function_create_with_connection #define duckdb_v2_scalar_function_create_with_extension duckdb_ext_api.duckdb_v2_scalar_function_create_with_extension #define duckdb_v2_scalar_function_destroy duckdb_ext_api.duckdb_v2_scalar_function_destroy @@ -2092,6 +2096,11 @@ typedef struct { #define duckdb_v2_arrow_result_wait duckdb_ext_api.duckdb_v2_arrow_result_wait #define duckdb_v2_prepared_statement_execute_arrow duckdb_ext_api.duckdb_v2_prepared_statement_execute_arrow #define duckdb_v2_statement_execute_arrow duckdb_ext_api.duckdb_v2_statement_execute_arrow +#define duckdb_v2_scalar_function_resolve_types_set_return_type \ + duckdb_ext_api.duckdb_v2_scalar_function_resolve_types_set_return_type +#define duckdb_v2_scalar_function_set_resolve_types_callback \ + duckdb_ext_api.duckdb_v2_scalar_function_set_resolve_types_callback +#define duckdb_v2_scalar_function_bind_set_bind_data duckdb_ext_api.duckdb_v2_scalar_function_bind_set_bind_data #if DUCKDB_V2_API_ALLOW_UNSTABLE #define duckdb_v2_copy_to_set_statistics_callback duckdb_ext_api.duckdb_v2_copy_to_set_statistics_callback #endif diff --git a/src/duckdb/src/include/duckdb_v2.h b/src/duckdb/src/include/duckdb_v2.h index 739c0832e..834e5aded 100644 --- a/src/duckdb/src/include/duckdb_v2.h +++ b/src/duckdb/src/include/duckdb_v2.h @@ -2806,7 +2806,8 @@ DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_function_bind_get_user_data(duckdb_v2_fun * * The bind data is stored with the bound call site and retrievable from every later callback. The opaque handle bundles * the pointer with an optional destructor, invoked when the bind data is no longer needed, and an optional equality - * callback used when comparing two bound call sites; without one, pointer equality is used. + * callback used when comparing two bound call sites; without one, pointer equality is used. Scalar functions set their + * bind data through `duckdb_v2_scalar_function_bind_set_bind_data()` instead. * * history: * - stable: v2.0.0 @@ -8535,10 +8536,19 @@ typedef struct _duckdb_v2_scalar_function { void *internal_ptr; } * duckdb_v2_scalar_function_handle; +/*! + * A borrowed opaque handle to the result of a scalar function's "resolve types" phase. The "resolve types" callback + * receives this handle next to a `duckdb_v2_function_bind_info_handle`, which gives access to the arguments and the + * user data, and can use it to set the return type of the call site being bound. + */ +typedef struct _duckdb_v2_scalar_function_resolve_types_info { + void *internal_ptr; +} * duckdb_v2_scalar_function_resolve_types_info_handle; + /*! * A borrowed opaque handle to the result of a scalar function's "bind" phase. The "bind" callback receives this handle - * next to a `duckdb_v2_function_bind_info_handle`, which gives access to the arguments, the user data and the bind - * data, and can use it to set the return type of the call site being bound. + * next to a `duckdb_v2_function_bind_info_handle`, which gives access to the arguments and the user data, and can use + * it to set the bind data of the call site being bound. */ typedef struct _duckdb_v2_scalar_function_bind_info { void *internal_ptr; @@ -8566,6 +8576,10 @@ typedef struct _duckdb_v2_scalar_function_exec_info { /* --- Function pointer typedefs for scalar --- */ +typedef void (*duckdb_v2_scalar_function_resolve_types_callback_fn)( + duckdb_v2_function_bind_info_handle info, duckdb_v2_scalar_function_resolve_types_info_handle result, + duckdb_v2_context_handle context, duckdb_v2_error_info_handle *err); + typedef void (*duckdb_v2_scalar_function_bind_callback_fn)(duckdb_v2_function_bind_info_handle info, duckdb_v2_scalar_function_bind_info_handle result, duckdb_v2_context_handle context, @@ -8709,13 +8723,36 @@ DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_scalar_function_set_property(duckdb_v2_sc DUCKDB_V2_FUNCTION_PROPERTY_VALUE value, duckdb_v2_error_info_handle *err); +/*! + * Sets the optional resolve types callback of the scalar function. + * + * The resolve types callback is invoked during query planning for each call site of the function, before the arguments + * are cast to the parameter types of the signature. Through its `duckdb_v2_function_bind_info_handle` it can inspect + * the argument types as they were passed and constant argument values. Through its + * `duckdb_v2_scalar_function_resolve_types_info_handle` it can set a concrete return type. It cannot set "bind data", + * use the bind callback for that. + * + * history: + * - stable: v2.0.0 + * + * @param function The function to set the resolve types callback of. + * @param callback The resolve types callback to set. + * @param err Optional. On failure, receives an opaque info handle the caller must destroy via + * `duckdb_v2_error_info_destroy()`. + * @return DUCKDB_V2_ERROR + */ +DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_scalar_function_set_resolve_types_callback( + duckdb_v2_scalar_function_handle function, duckdb_v2_scalar_function_resolve_types_callback_fn callback, + duckdb_v2_error_info_handle *err); + /*! * Sets the optional bind callback of the scalar function. * - * The bind callback is invoked during query planning for each call site of the function. Through its - * `duckdb_v2_function_bind_info_handle` it can inspect the argument types and constant argument values and set "bind - * data" that is shared with the init and exec callbacks. Through its `duckdb_v2_scalar_function_bind_info_handle` it - * can set a concrete return type. + * The bind callback is invoked during query planning for each call site of the function, after the resolve types + * callback and after the arguments have been cast to the parameter types of the signature. Through its + * `duckdb_v2_function_bind_info_handle` it can inspect the argument types and constant argument values. Through its + * `duckdb_v2_scalar_function_bind_info_handle` it can set "bind data" that is shared with the init and exec callbacks. + * It cannot change the types of the call site, use the resolve types callback for that. * * history: * - stable: v2.0.0 @@ -8779,16 +8816,36 @@ DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_scalar_function_set_exec_callback( * history: * - stable: v2.0.0 * - * @param info The bind info handle. + * @param info The resolve types info handle. * @param return_type The return type to set. Borrowed for the call only. * @param err Optional. On failure, receives an opaque info handle the caller must destroy via * `duckdb_v2_error_info_destroy()`. * @return DUCKDB_V2_ERROR */ -DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_scalar_function_bind_set_return_type( - duckdb_v2_scalar_function_bind_info_handle info, duckdb_v2_logical_type_handle return_type, +DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_scalar_function_resolve_types_set_return_type( + duckdb_v2_scalar_function_resolve_types_info_handle info, duckdb_v2_logical_type_handle return_type, duckdb_v2_error_info_handle *err); +/*! + * Sets the function's "bind data" from the bind callback. + * + * The bind data is stored with the bound call site and retrievable from the init and exec callbacks. The opaque handle + * bundles the pointer with an optional destructor, invoked when the bind data is no longer needed, and an optional + * equality callback used when comparing two bound call sites; without one, pointer equality is used. Scalar functions + * set their bind data through this function, `duckdb_v2_function_bind_set_bind_data()` is not available to them. + * + * history: + * - stable: v2.0.0 + * + * @param info The bind info handle. + * @param data Opaque handle bundling the bind data pointer plus optional destructor and equality callbacks. + * @param err Optional. On failure, receives an opaque info handle the caller must destroy via + * `duckdb_v2_error_info_destroy()`. + * @return DUCKDB_V2_ERROR + */ +DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_scalar_function_bind_set_bind_data( + duckdb_v2_scalar_function_bind_info_handle info, duckdb_v2_opaque *data, duckdb_v2_error_info_handle *err); + /*! * Retrieves the user data set via `duckdb_v2_scalar_function_set_user_data()`. * @@ -8970,9 +9027,9 @@ DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_scalar_function_exec_get_result(duckdb_v2 * * The function is registered on the target given at creation: the connection's database or the loading extension. * Registration requires a name, an exec callback, and a signature with a complete return type; an ANY return type is - * accepted only together with a bind callback that sets the concrete type per call site. The caller still owns the - * handle after registration and must destroy it with `duckdb_v2_scalar_function_destroy()`, which does not affect the - * registered function. + * accepted only together with a resolve types callback that sets the concrete type per call site. The caller still owns + * the handle after registration and must destroy it with `duckdb_v2_scalar_function_destroy()`, which does not affect + * the registered function. * * history: * - stable: v2.0.0 @@ -11775,9 +11832,10 @@ DUCKDB_C_API DUCKDB_V2_ERROR duckdb_v2_statement_execute(duckdb_v2_connection_ha * Destroys a result handle. * * Null-safe: passing nullptr or a slot already set to nullptr is a no-op. Frees the memory the result owns and releases - * the connection for its next query. Safe at any point in the stream's life, though destroying a partially consumed - * result abandons the remaining execution, including side effects not yet applied. Chunks already fetched are - * caller-owned and stay valid. On success the slot is set to nullptr. + * the connection for its next query. Safe at any point in the stream's life. Destroying a result before its statement + * ended (drained, or stepped to FINISHED) aborts the statement. On autocommit, its writes are rolled back. Inside a + * transaction, a statement that may write invalidates the transaction, and a read-only statement just stops. Chunks + * already fetched are caller-owned and stay valid. On success the slot is set to nullptr. * * history: * - stable: v2.0.0 diff --git a/src/duckdb/src/logging/log_types.cpp b/src/duckdb/src/logging/log_types.cpp index 798ea47db..ec4f514db 100644 --- a/src/duckdb/src/logging/log_types.cpp +++ b/src/duckdb/src/logging/log_types.cpp @@ -60,6 +60,130 @@ LogicalType FileSystemLogType::GetLogType() { //===--------------------------------------------------------------------===// // HTTPLogType //===--------------------------------------------------------------------===// +static const case_insensitive_set_t &HTTPRequestHeaderAllowList() { + //! For extra info, the advise from OpenTelemetry: + //! https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header + static const case_insensitive_set_t allow_list = { + // HTTP semantics (https://www.rfc-editor.org/rfc/rfc9110.html). + "accept", // Accepted media types and parameters. + "accept-charset", // Accepted character sets. + "accept-encoding", // Accepted content codings. + "accept-language", // Preferred response languages. + "connection", // Connection handling options. + "content-encoding", // Applied content codings. + "content-language", // Languages of the intended audience. + "content-length", // Content size in bytes. + "content-type", // Content media type and parameters. + "date", // Message timestamp. + "expect", // Expected server behavior before sending content. + "if-modified-since", // Modification timestamp used for conditional requests. + "if-unmodified-since", // Modification timestamp used for conditional requests. + "max-forwards", // Remaining forwarding limit. + "range", // Requested ranges. + "te", // Accepted transfer codings and trailer support. + "trailer", // Names of fields sent in trailers. + "upgrade", // Proposed or selected protocols. + "user-agent", // Client product and version information. + // "via", // Intermediary protocols, hosts and software comments. + // "authorization", // Contains credentials and signatures. + // "content-location", // URI can contain sensitive paths or query parameters. + // "from", // Contains the user's email address. + // "host", // Identifies the endpoint, including bucket or tenant names. + // "if-match", // Contains opaque resource validators. + // "if-none-match", // Contains opaque resource validators. + // "if-range", // Can contain an opaque resource validator instead of a date. + // "proxy-authorization", // Contains proxy credentials. + // "referer", // URI can contain sensitive paths or query parameters. + + // Headers defined outside RFC 9110. + "cache-control", // Caching directives. + "transfer-encoding", // Applied transfer codings. + // "cookie", // Can contain session credentials and user data. + + // S3 common headers (https://docs.aws.amazon.com/AmazonS3/latest/developerguide/RESTCommonRequestHeaders.html). + "x-amz-date", // Request signing timestamp. + // "content-md5", // Fingerprints the request content. + // "x-amz-content-sha256", // Can fingerprint the payload, not just contain a fixed signing marker. + // "x-amz-security-token", // Contains session credentials. + + // S3 PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html). + "x-amz-request-payer", // Requester-pays billing mode. + "x-amz-server-side-encryption", // Server-side encryption algorithm. + // "x-amz-expected-bucket-owner", // Identifies an AWS account. + // "x-amz-server-side-encryption-aws-kms-key-id", // Identifies an encryption key and possibly its account. + // "x-amz-server-side-encryption-context", // Contains caller-provided encryption context. + // "x-amz-server-side-encryption-customer-key", // Contains the customer encryption key. + // "x-amz-server-side-encryption-customer-key-md5", // Fingerprints the customer encryption key. + // "x-amz-tagging", // Contains caller-provided object tags. + // "x-amz-website-redirect-location", // URI can contain sensitive paths or query parameters. + + // S3 CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html). + // "x-amz-copy-source", // Contains a bucket, object path and possibly a version ID. + // "x-amz-copy-source-if-match", // Contains opaque resource validators. + // "x-amz-copy-source-if-none-match", // Contains opaque resource validators. + // "x-amz-copy-source-server-side-encryption-customer-key", // Contains the source encryption key. + // "x-amz-copy-source-server-side-encryption-customer-key-md5", // Fingerprints the source encryption key. + // "x-amz-source-expected-bucket-owner", // Identifies an AWS account. + + // S3 session authorization (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html). + // "x-amz-s3session-token", // Contains S3 Express session credentials. + }; + return allow_list; +} + +static const case_insensitive_set_t &HTTPResponseHeaderAllowList() { + static const case_insensitive_set_t allow_list = { + // HTTP semantics (https://www.rfc-editor.org/rfc/rfc9110.html). + "accept", // Accepted media types and parameters. + "accept-encoding", // Accepted content codings. + "accept-ranges", // Supported range units. + "allow", // Supported HTTP methods. + "connection", // Connection handling options. + "content-encoding", // Applied content codings. + "content-language", // Languages of the intended audience. + "content-length", // Content size in bytes. + "content-range", // Transferred range and total size. + "content-type", // Content media type and parameters. + "date", // Message timestamp. + "last-modified", // Resource modification timestamp. + "retry-after", // Retry delay or timestamp. + "server", // Server product and version information. + "trailer", // Names of fields sent in trailers. + "upgrade", // Proposed or selected protocols. + "vary", // Request field names used for response selection. + // "via", // Intermediary protocols, hosts and software comments. + // "authentication-info", // Can contain authentication tokens and parameters. + // "content-location", // URI can contain sensitive paths or query parameters. + // "etag", // Contains an opaque resource validator. + // "location", // Redirect URI can contain credentials or signed query parameters. + // "proxy-authenticate", // Authentication challenges can contain tokens and realm information. + // "proxy-authentication-info", // Can contain authentication tokens and parameters. + // "www-authenticate", // Authentication challenges can contain tokens and realm information. + + // HTTP caching (https://www.rfc-editor.org/rfc/rfc9111.html). + "age", // Time spent in caches. + "cache-control", // Caching directives. + "expires", // Cache expiration timestamp. + + // Other HTTP headers. + "transfer-encoding", // Applied transfer codings. + // "set-cookie", // Can contain session credentials and user data. + + // S3 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). + "x-amz-bucket-region", // Bucket region. + "x-amz-server-side-encryption", // Server-side encryption algorithm. + // "x-amz-abort-rule-id", // Identifies a lifecycle rule. + // "x-amz-copy-source-version-id", // Identifies a source object version. + // "x-amz-expiration", // Includes a lifecycle rule ID as well as a date. + // "x-amz-id-2", // Request correlation ID, enabling it exposes request identity. + // "x-amz-request-id", // Request correlation ID, enabling it exposes request identity. + // "x-amz-server-side-encryption-aws-kms-key-id", // Identifies an encryption key and possibly its account. + // "x-amz-server-side-encryption-customer-key-md5", // Fingerprints the customer encryption key. + // "x-amz-version-id", // Identifies an object version. + }; + return allow_list; +} + HTTPLogType::HTTPLogType() : LogType(NAME, LEVEL, GetLogType()) { } @@ -86,16 +210,56 @@ LogicalType HTTPLogType::GetLogType() { return LogicalType::STRUCT(child_list); } -static Value CreateHTTPHeadersValue(const HTTPHeaders &headers) { +static Value CreateHTTPHeadersValue(const HTTPHeaders &headers, const case_insensitive_set_t &allow_list, + bool redact_http_logs) { vector keys; vector values; for (const auto &header : headers) { keys.emplace_back(header.first); - values.emplace_back(header.second); + const bool allow_value = !redact_http_logs || allow_list.find(header.first) != allow_list.end(); + values.emplace_back(allow_value ? header.second : HTTPLogType::REDACTED_VALUE); } return Value::MAP(LogicalType::VARCHAR, LogicalType::VARCHAR, keys, values); } +static string BuildLogURL(const BaseRequest &request, bool redact_http_logs) { + string url; + url.reserve(request.proto_host_port.size() + request.path.size()); + + if (!redact_http_logs) { + url.append(request.proto_host_port); + url.append(request.path); + return url; + } + + // Redact user info, e.g. https://user:pass@duckdb.org -> https://redacted@duckdb.org + const auto pos_at = request.proto_host_port.rfind('@'); + if (pos_at != string::npos) { + auto pos_proto_end = request.proto_host_port.find("://"); + if (pos_proto_end == string::npos) { + // Without a scheme separator, redact from the start. + pos_proto_end = 0; + } else { + pos_proto_end += 3; + } + url.append(request.proto_host_port, 0, pos_proto_end); + url.append(HTTPLogType::REDACTED_VALUE); + url.append(request.proto_host_port, pos_at, string::npos); + } else { + url += request.proto_host_port; + } + + // Redact the query parameters or fragment + const auto pos_end_of_path = request.path.find_first_of("?#"); + if (pos_end_of_path == string::npos) { + url += request.path; + } else { + url.append(request.path, 0, pos_end_of_path + 1); + url.append(HTTPLogType::REDACTED_VALUE); + } + return url; +} + static string HTTPStatusToLogString(HTTPStatusCode status) { try { return EnumUtil::ToString(status); @@ -104,11 +268,12 @@ static string HTTPStatusToLogString(HTTPStatusCode status) { } } -string HTTPLogType::ConstructLogMessage(BaseRequest &request, optional_ptr response) { +string HTTPLogType::ConstructLogMessage(BaseRequest &request, optional_ptr response, + bool redact_http_logs) { child_list_t request_child_list = { {"type", Value(EnumUtil::ToString(request.type))}, - {"url", Value(request.url)}, - {"headers", CreateHTTPHeadersValue(request.headers)}, + {"url", Value(BuildLogURL(request, redact_http_logs))}, + {"headers", CreateHTTPHeadersValue(request.headers, HTTPRequestHeaderAllowList(), redact_http_logs)}, {"start_time", request.have_request_timing ? Value::TIMESTAMP(request.request_system_start) : Value()}, {"duration_ms", request.have_request_timing @@ -121,7 +286,7 @@ string HTTPLogType::ConstructLogMessage(BaseRequest &request, optional_ptr response_child_list = { {"status", Value(HTTPStatusToLogString(response->status))}, {"reason", Value(response->reason.empty() ? response->GetRequestError() : response->reason)}, - {"headers", CreateHTTPHeadersValue(response->headers)}, + {"headers", CreateHTTPHeadersValue(response->headers, HTTPResponseHeaderAllowList(), redact_http_logs)}, }; response_value = Value::STRUCT(response_child_list); } diff --git a/src/duckdb/src/main/capi/v2/capi_v2_func.cpp b/src/duckdb/src/main/capi/v2/capi_v2_func.cpp index 8a55a6d6d..9365f1cdb 100644 --- a/src/duckdb/src/main/capi/v2/capi_v2_func.cpp +++ b/src/duckdb/src/main/capi/v2/capi_v2_func.cpp @@ -84,6 +84,10 @@ DUCKDB_V2_ERROR duckdb_v2_function_bind_set_bind_data(duckdb_v2_function_bind_in DUCKDB_CHECK_ARG(info); DUCKDB_CHECK_ARG(data); return WithErrorHandler(err, [&]() { + if (!Convert(info)->can_set_bind_data) { + throw duckdb::InvalidInputException( + "Scalar functions set the bind data through duckdb_v2_scalar_function_bind_set_bind_data"); + } Convert(info)->out_bind_data = data->ptr ? duckdb::make_shared_ptr(data->ptr, data->destroy, data->equals) : nullptr; }); diff --git a/src/duckdb/src/main/capi/v2/capi_v2_func_scalar.cpp b/src/duckdb/src/main/capi/v2/capi_v2_func_scalar.cpp index c2ad8eb6b..d5727f548 100644 --- a/src/duckdb/src/main/capi/v2/capi_v2_func_scalar.cpp +++ b/src/duckdb/src/main/capi/v2/capi_v2_func_scalar.cpp @@ -28,9 +28,31 @@ class CV2FunctionLocalState final : public FunctionLocalState { CV2UserData handle; }; +//! The arguments of a scalar call before they are cast to the parameter types - the bind data cannot be set +class CV2ResolveTypesBindInfo final : public CV2FunctionBindInfo { +public: + CV2ResolveTypesBindInfo(const BoundScalarFunction &function, void *user_data, + const ResolveScalarFunctionTypesInput &input) + : CV2FunctionBindInfo(function, user_data), input(input) { + D_ASSERT(GetArgCount() == input.GetArgumentCount()); + can_set_bind_data = false; + } + + LogicalType GetArgType(idx_t index) const override { + return input.GetArgumentType(index); + } + Value GetArgValue(idx_t index) const override { + return input.GetConstant(index); + } + +private: + const ResolveScalarFunctionTypesInput &input; +}; + class CV2BindInfo { public: - BindScalarFunctionInput *in_input = nullptr; + //! The bind data the callback set, or nullptr + shared_ptr out_bind_data; }; static auto Convert(duckdb_v2_scalar_function_bind_info_handle info) -> CV2BindInfo * { @@ -40,6 +62,21 @@ static auto Convert(CV2BindInfo *info) -> duckdb_v2_scalar_function_bind_info_ha return reinterpret_cast(info); } +class CV2ResolveTypesInfo { +public: + explicit CV2ResolveTypesInfo(BoundScalarFunction &bound_function) : bound_function(bound_function) { + } + + BoundScalarFunction &bound_function; +}; + +static auto Convert(duckdb_v2_scalar_function_resolve_types_info_handle info) -> CV2ResolveTypesInfo * { + return reinterpret_cast(info); +} +static auto Convert(CV2ResolveTypesInfo *info) -> duckdb_v2_scalar_function_resolve_types_info_handle { + return reinterpret_cast(info); +} + class CV2InitInfo { public: void *in_user_data = nullptr; @@ -76,28 +113,45 @@ static auto Convert(CV2ExecInfo *info) -> duckdb_v2_scalar_function_exec_info_ha class CV2ScalarFunctionInfo : public ScalarFunctionInfo { public: + duckdb_v2_scalar_function_resolve_types_callback_fn resolve_types_cb = nullptr; duckdb_v2_scalar_function_bind_callback_fn bind_cb = nullptr; duckdb_v2_scalar_function_init_callback_fn init_cb = nullptr; duckdb_v2_scalar_function_exec_callback_fn exec_cb = nullptr; shared_ptr user_data = nullptr; }; +static auto CV2ScalarResolveTypes(ResolveScalarFunctionTypesInput &input) -> void { + auto &bound_function = input.GetBoundFunction(); + const auto &info = bound_function.GetExtraFunctionInfo().Cast(); + + CV2ResolveTypesBindInfo bind_info(bound_function, info.user_data ? info.user_data->GetData() : nullptr, input); + CV2ResolveTypesInfo result_info(bound_function); + + CV2ErrorInfo err = {}; + auto err_ptr = Convert(&err); + info.resolve_types_cb(Convert(&bind_info), Convert(&result_info), Convert(&input.GetClientContext()), &err_ptr); + + if (err.HasError()) { + err.ThrowAsException(); + } +} + static auto CV2ScalarBind(BindScalarFunctionInput &input) -> unique_ptr { const auto &info = input.GetBoundFunction().GetExtraFunctionInfo().Cast(); auto &bound_function = input.GetBoundFunction(); CV2ExpressionBindInfo bind_info(bound_function, info.user_data ? info.user_data->GetData() : nullptr, input); - CV2BindInfo result_info = {}; - result_info.in_input = &input; + bind_info.can_set_bind_data = false; + CV2BindInfo result_info; CV2ErrorInfo err = {}; auto err_ptr = Convert(&err); info.bind_cb(Convert(&bind_info), Convert(&result_info), Convert(&input.GetClientContext()), &err_ptr); unique_ptr result = nullptr; - if (bind_info.out_bind_data) { + if (result_info.out_bind_data) { auto set_result = make_uniq(); - set_result->handle = std::move(bind_info.out_bind_data); + set_result->handle = std::move(result_info.out_bind_data); result = std::move(set_result); } @@ -188,11 +242,12 @@ class CV2ScalarFunction { const auto &return_type = signature.GetReturnType(); - // ANY is allowed as a placeholder return type only when a bind callback is present to resolve the actual type. + // ANY is allowed as a placeholder return type only when a resolve types callback is present to resolve the + // actual type. if (return_type.id() == LogicalTypeId::ANY) { - if (info.bind_cb == nullptr) { + if (info.resolve_types_cb == nullptr) { throw InvalidInputException( - "An ANY return type requires a bind callback to set the concrete return type."); + "An ANY return type requires a resolve types callback to set the concrete return type."); } } else { if (return_type.id() == LogicalTypeId::INVALID) { @@ -209,6 +264,9 @@ class CV2ScalarFunction { function.SetProperties(properties); function.GetSignature() = signature; + if (info.resolve_types_cb) { + function.SetResolveTypesCallback(CV2ScalarResolveTypes); + } if (info.bind_cb) { function.SetBindCallback(CV2ScalarBind); } @@ -338,6 +396,14 @@ DUCKDB_V2_ERROR duckdb_v2_scalar_function_set_property(duckdb_v2_scalar_function return WithErrorHandler(err, [&]() { SetScalarFunctionProperty(Convert(function)->properties, key, value); }); } +DUCKDB_V2_ERROR +duckdb_v2_scalar_function_set_resolve_types_callback(duckdb_v2_scalar_function_handle function, + duckdb_v2_scalar_function_resolve_types_callback_fn callback, + duckdb_v2_error_info_handle *err) { + DUCKDB_CHECK_ARG(function); + return WithErrorHandler(err, [&]() { Convert(function)->info.resolve_types_cb = callback; }); +} + DUCKDB_V2_ERROR duckdb_v2_scalar_function_set_bind_callback(duckdb_v2_scalar_function_handle function, duckdb_v2_scalar_function_bind_callback_fn callback, duckdb_v2_error_info_handle *err) { @@ -359,14 +425,25 @@ DUCKDB_V2_ERROR duckdb_v2_scalar_function_set_exec_callback(duckdb_v2_scalar_fun return WithErrorHandler(err, [&]() { Convert(function)->info.exec_cb = callback; }); } -DUCKDB_V2_ERROR duckdb_v2_scalar_function_bind_set_return_type(duckdb_v2_scalar_function_bind_info_handle info, - duckdb_v2_logical_type_handle return_type, - duckdb_v2_error_info_handle *err) { +DUCKDB_V2_ERROR +duckdb_v2_scalar_function_resolve_types_set_return_type(duckdb_v2_scalar_function_resolve_types_info_handle info, + duckdb_v2_logical_type_handle return_type, + duckdb_v2_error_info_handle *err) { DUCKDB_CHECK_ARG(info); DUCKDB_CHECK_ARG(return_type); return WithErrorHandler(err, [&]() { auto type = Convert(return_type); - Convert(info)->in_input->GetBoundFunction().SetReturnType(*type); + Convert(info)->bound_function.SetReturnType(*type); + }); +} + +DUCKDB_V2_ERROR duckdb_v2_scalar_function_bind_set_bind_data(duckdb_v2_scalar_function_bind_info_handle info, + duckdb_v2_opaque *data, duckdb_v2_error_info_handle *err) { + DUCKDB_CHECK_ARG(info); + DUCKDB_CHECK_ARG(data); + return WithErrorHandler(err, [&]() { + Convert(info)->out_bind_data = + data->ptr ? duckdb::make_shared_ptr(data->ptr, data->destroy, data->equals) : nullptr; }); } diff --git a/src/duckdb/src/main/client_context_execution.cpp b/src/duckdb/src/main/client_context_execution.cpp index 4884de69d..ec55c60bc 100644 --- a/src/duckdb/src/main/client_context_execution.cpp +++ b/src/duckdb/src/main/client_context_execution.cpp @@ -162,6 +162,14 @@ void ClientContext::CleanupInternal(ClientContextLock &lock, BaseQueryResult *re D_ASSERT(!active_query); } +void ClientContext::AbortInternal(ClientContextLock &lock) { + D_ASSERT(active_query); + auto &prepared = active_query->prepared; + // No savepoint isolates a single statement, so partial writes can only be dropped with the whole transaction + const bool may_write = !prepared || !prepared->properties.IsReadOnly(); + CleanupInternal(lock, nullptr, may_write); +} + Executor &ClientContext::GetExecutor() { D_ASSERT(active_query); D_ASSERT(active_query->executor); @@ -376,8 +384,10 @@ QueryResultState ClientContext::FailQueryInternal(ClientContextLock &lock, BaseQ } void ClientContext::InitialCleanup(ClientContextLock &lock) { - //! Cleanup any open results and reset the interrupted flag - CleanupInternal(lock); + //! Abandon the query of an open result that no call ended, as Close would, and reset the interrupted flag + if (active_query) { + AbortInternal(lock); + } interrupt_state = ClientInterruptState::NOT_INTERRUPTED; } diff --git a/src/duckdb/src/main/config.cpp b/src/duckdb/src/main/config.cpp index 5152ee48f..0697a5455 100644 --- a/src/duckdb/src/main/config.cpp +++ b/src/duckdb/src/main/config.cpp @@ -237,6 +237,7 @@ static const ConfigurationOption internal_options[] = { DUCKDB_LOCAL(ProfilingRendererSettingsSetting), DUCKDB_LOCAL(ProgressBarTimeSetting), DUCKDB_SETTING_CALLBACK(ReadAheadDepthSetting), + DUCKDB_SETTING(RedactHttpLogsSetting), DUCKDB_SETTING_CALLBACK(RegexMatchOperatorSemanticsSetting), DUCKDB_SETTING(ScalarSubqueryErrorOnMultipleRowsSetting), DUCKDB_SETTING(SchedulerProcessPartialSetting), diff --git a/src/duckdb/src/main/database_manager.cpp b/src/duckdb/src/main/database_manager.cpp index 72ac623c1..86bf27271 100644 --- a/src/duckdb/src/main/database_manager.cpp +++ b/src/duckdb/src/main/database_manager.cpp @@ -135,7 +135,7 @@ shared_ptr DatabaseManager::AttachDatabase(ClientContext &cont auto existing_mode = existing_db->IsReadOnly() ? AccessMode::READ_ONLY : AccessMode::READ_WRITE; auto existing_mode_str = EnumUtil::ToString(existing_mode); auto attached_mode = EnumUtil::ToString(options.access_mode); - throw BinderException("Database \"%s\" is already attached in %s mode, cannot re-attach in %s mode", + throw BinderException("Database %s is already attached in %s mode, cannot re-attach in %s mode", info.name, existing_mode_str, attached_mode); } if (!options.default_table.Name().empty()) { @@ -239,7 +239,7 @@ optional_ptr DatabaseManager::FinalizeAttach(ClientContext &co detached_db = std::move(entry.first->second); databases[name] = attached_db; } else { - throw BinderException("Failed to attach database: database with name \"%s\" already exists", name); + throw BinderException("Failed to attach database: database with name %s already exists", name); } } } diff --git a/src/duckdb/src/main/extension/extension_install_dynamic.cpp b/src/duckdb/src/main/extension/extension_install_dynamic.cpp index af02f0f5f..58252fc07 100644 --- a/src/duckdb/src/main/extension/extension_install_dynamic.cpp +++ b/src/duckdb/src/main/extension/extension_install_dynamic.cpp @@ -201,11 +201,38 @@ static unique_ptr DirectInstallExtension(DatabaseInstance return make_uniq(info); } -static unique_ptr InstallFromHttpUrl(DatabaseInstance &db, const string &url, - const string &extension_name, const string &temp_path, - const string &local_extension_path, - ExtensionInstallOptions &options, - optional_ptr context) { +//! Perform the GET request for an extension against a single url +static unique_ptr RequestExtension(DatabaseInstance &db, optional_ptr context, + const string &url, const HTTPHeaders &headers) { + auto &manager = db.config.GetHTTPTransportManager(); + auto session = context ? manager.CreateSession(*context, url) : manager.CreateSession(db, url); + auto ¶ms = session.Parameters(); + + // Unclear what's peculiar about extension install flow, but those two parameters are needed + // to avoid lengthy retry on 304 + params.follow_location = false; + params.keep_alive = false; + + GetRequestInfo get_request(url, headers, params, nullptr, nullptr); + get_request.try_request = true; + + return session.Request(get_request); +} + +//! Whether a failed response means the server itself is unavailable, as opposed to e.g. the extension not existing +static bool ServerUnavailable(const HTTPResponse &response) { + if (response.HasRequestError()) { + // the request never completed: DNS failure, connection refused, timeout, ... + return true; + } + return response.status >= HTTPStatusCode::InternalServerError_500; +} + +//! Install an extension from a http url. If a backup url is given it is tried when the server at url is unavailable +static unique_ptr +InstallFromHttpUrl(DatabaseInstance &db, const string &url, const string &extension_name, const string &temp_path, + const string &local_extension_path, ExtensionInstallOptions &options, + optional_ptr context, const string &backup_url = string()) { unique_ptr install_info; { auto &fs = FileSystem::GetLocal(db); @@ -227,19 +254,17 @@ static unique_ptr InstallFromHttpUrl(DatabaseInstance &db, headers.Insert("If-None-Match", StringUtil::Format("%s", install_info->etag)); } - auto &manager = db.config.GetHTTPTransportManager(); - auto session = context ? manager.CreateSession(*context, url) : manager.CreateSession(db, url); - auto ¶ms = session.Parameters(); - - // Unclear what's peculiar about extension install flow, but those two parameters are needed - // to avoid lengthy retry on 304 - params.follow_location = false; - params.keep_alive = false; - - GetRequestInfo get_request(url, headers, params, nullptr, nullptr); - get_request.try_request = true; - - auto response = session.Request(get_request); + string download_url = url; + auto response = RequestExtension(db, context, url, headers); + if (!response->Success() && !backup_url.empty() && ServerUnavailable(*response)) { + // the server is unavailable - retry against the backup server. If that fails as well we report the error of + // the primary server, as that is the one the user asked for + auto backup_response = RequestExtension(db, context, backup_url, headers); + if (backup_response->Success()) { + download_url = backup_url; + response = std::move(backup_response); + } + } if (!response->Success()) { // if we should not retry or exceeded the number of retries - bubble up the error string message; @@ -283,13 +308,13 @@ static unique_ptr InstallFromHttpUrl(DatabaseInstance &db, if (options.repository) { info.mode = ExtensionInstallMode::REPOSITORY; - info.full_path = url; + info.full_path = download_url; info.repository_url = options.repository->path; info.repository_type = options.repository->type; info.repository_name = options.repository->name; } else { info.mode = ExtensionInstallMode::CUSTOM_PATH; - info.full_path = url; + info.full_path = download_url; } QueryContext query_context(context); @@ -310,10 +335,20 @@ static unique_ptr InstallFromRepository(DatabaseInstance & // Special handling for http repository: avoid using regular filesystem (note: the filesystem is not used here) if (HTTPUtil::IsHTTPProtocol(options.repository->path)) { + // The core and community repositories have backup servers that serve the same binaries - fall back to those + // if the primary server is unavailable. Custom repositories have no backup, so there the error surfaces + // directly + string backup_url; + auto backup_repository_url = ExtensionRepository::TryGetBackupRepositoryUrl(options.repository->path); + if (!backup_repository_url.empty()) { + backup_url = StringUtil::Replace(generated_url, options.repository->path, backup_repository_url); + } if (db.ExtensionIsLoaded("httpfs")) { HTTPUtil::BumpToSecureProtocol(generated_url); + HTTPUtil::BumpToSecureProtocol(backup_url); } - return InstallFromHttpUrl(db, generated_url, extension_name, temp_path, local_extension_path, options, context); + return InstallFromHttpUrl(db, generated_url, extension_name, temp_path, local_extension_path, options, context, + backup_url); } // Default case, let the FileSystem figure it out diff --git a/src/duckdb/src/main/extension_install_info.cpp b/src/duckdb/src/main/extension_install_info.cpp index 35143e0c3..1a6d43fce 100644 --- a/src/duckdb/src/main/extension_install_info.cpp +++ b/src/duckdb/src/main/extension_install_info.cpp @@ -68,6 +68,16 @@ string ExtensionRepository::TryConvertUrlToKnownRepository(const string &url) { return ""; } +string ExtensionRepository::TryGetBackupRepositoryUrl(const string &url) { + if (url == CORE_REPOSITORY_URL) { + return CORE_BACKUP_REPOSITORY_URL; + } + if (url == COMMUNITY_REPOSITORY_URL) { + return COMMUNITY_BACKUP_REPOSITORY_URL; + } + return ""; +} + ExtensionRepository ExtensionRepository::GetDefaultRepository(optional_ptr config) { if (config) { auto custom_extension_repo = Settings::Get(*config); diff --git a/src/duckdb/src/main/http/http_util.cpp b/src/duckdb/src/main/http/http_util.cpp index 13f160b9c..573e0a070 100644 --- a/src/duckdb/src/main/http/http_util.cpp +++ b/src/duckdb/src/main/http/http_util.cpp @@ -18,6 +18,10 @@ namespace duckdb { HTTPParams::~HTTPParams() { } +bool HTTPParams::ShouldRedactLogs() const { + return !db || Settings::Get(*db); +} + idx_t HTTPParams::GetTransportReuseDomain() const { return transport_reuse_domain; } @@ -250,7 +254,7 @@ void HTTPUtil::LogRequest(BaseRequest &request, optional_ptr respo if (!request.params.logger || !request.params.logger->ShouldLog(HTTPLogType::NAME, HTTPLogType::LEVEL)) { return; } - auto log_string = HTTPLogType::ConstructLogMessage(request, response); + auto log_string = HTTPLogType::ConstructLogMessage(request, response, request.params.ShouldRedactLogs()); request.params.logger->WriteLog(HTTPLogType::NAME, HTTPLogType::LEVEL, log_string); } @@ -448,7 +452,7 @@ HTTPUtil::RunRequestWithRetry(const std::function(void) } void HTTPParams::Initialize(optional_ptr opener) { - auto db = FileOpener::TryGetDatabase(opener); + db = FileOpener::TryGetDatabase(opener); if (db) { auto &http_proxy_setting = db->config.options.http_proxy; if (!http_proxy_setting.empty()) { diff --git a/src/duckdb/src/main/query_result.cpp b/src/duckdb/src/main/query_result.cpp index eb297adc0..e765ecf70 100644 --- a/src/duckdb/src/main/query_result.cpp +++ b/src/duckdb/src/main/query_result.cpp @@ -231,9 +231,20 @@ QueryResultState QueryResult::Poll() { } QueryResultState QueryResult::ExecuteTask() { + if (IsCollected()) { + // An earlier call ended the query: keep reporting the terminal state + return QueryResultState::FINISHED; + } + // Ending the query drops the handle's reference to the context, which the lock below outlives + auto keep_alive = context; auto lock = LockContext(); CheckExecutableInternal(*lock); - return context->ExecuteTaskInternal(*lock, *this); + auto state = context->ExecuteTaskInternal(*lock, *this); + // Only a statement that sank no row finishes undecided, since producers park until the decision + if (state == QueryResultState::FINISHED && buffer && buffer->Lifetime() != ResultLifetime::DRAINING) { + return EndFinishedInternal(*lock); + } + return state; } void QueryResult::WaitForTask() { @@ -254,9 +265,8 @@ void QueryResult::Close() { if (context) { auto lock = context->LockContext(); if (context->IsActiveResult(*lock, *this)) { - // Abandoned before the result was consumed: release the active-query state now (matching - // InitialCleanup) instead of leaking it until the next query or context teardown - context->CleanupInternal(*lock, this, false); + // No call ended the query, so it was abandoned and nothing it ran may be committed + context->AbortInternal(*lock); } } context.reset(); @@ -351,14 +361,20 @@ void QueryResult::CompleteInternal(ClientContextLock &lock) { } } if (state == QueryResultState::FINISHED) { - auto produced = context->GetExecutor().GetResult(); - // Cleanup can fail on an autocommit commit; it records the error on this result - context->CleanupInternal(lock, this, false); - if (!HasError()) { - AdoptCollected(*produced); - } + EndFinishedInternal(lock); + } + context.reset(); +} + +QueryResultState QueryResult::EndFinishedInternal(ClientContextLock &lock) { + auto produced = context->GetExecutor().GetResult(); + // Cleanup can fail on an autocommit commit; it records the error on this result + context->CleanupInternal(lock, this, false); + if (!HasError()) { + AdoptCollected(*produced); } context.reset(); + return HasError() ? QueryResultState::EXECUTION_ERROR : QueryResultState::FINISHED; } void QueryResult::ThrowNoCollection() const { diff --git a/src/duckdb/src/main/query_result_stream.cpp b/src/duckdb/src/main/query_result_stream.cpp index ea8a4a953..5a5652607 100644 --- a/src/duckdb/src/main/query_result_stream.cpp +++ b/src/duckdb/src/main/query_result_stream.cpp @@ -101,11 +101,10 @@ QueryResultState ResultStreamBase::TryFetchUnit(unique_ptr &out_unit } if (state == QueryResultState::READY) { out_unit = buffer.Scan(); - } - if (out_unit && out_unit->row_count != 0) { + // READY is only reported with a unit queued + D_ASSERT(out_unit); return QueryResultState::READY; } - out_unit.reset(); if (state == QueryResultState::FINISHED) { // The buffer is drained and execution is done: this is the end of the stream buffer.AssertNoBlockedSinks(); @@ -113,10 +112,6 @@ QueryResultState ResultStreamBase::TryFetchUnit(unique_ptr &out_unit // Cleanup can fail on an autocommit commit. It records the error without throwing return handle->HasError() ? QueryResultState::EXECUTION_ERROR : QueryResultState::FINISHED; } - if (state == QueryResultState::READY) { - // A unit was announced but the scan came up empty: the stream has not ended yet - return QueryResultState::NOT_READY; - } return state; }); if (IsTerminal(state)) { @@ -133,7 +128,9 @@ unique_ptr ResultStreamBase::FetchUnitInternal(ClientContextLock &lo return nullptr; } auto unit = buffer.Scan(); - if (!unit || unit->row_count == 0) { + if (!unit) { + // READY is only reported with a unit queued, so an empty scan means execution finished + D_ASSERT(state == QueryResultState::FINISHED); handle->EndQuery(lock); return nullptr; } @@ -158,7 +155,7 @@ unique_ptr ResultStreamBase::FetchUnit() { handle->CheckExecutableInternal(*lock); unit = FetchUnitInternal(*lock); } - if (!unit || unit->row_count == 0) { + if (!unit) { if (!HasError()) { handle->buffer->AssertNoBlockedSinks(); } diff --git a/src/duckdb/src/optimizer/filter_combiner.cpp b/src/duckdb/src/optimizer/filter_combiner.cpp index 6b1168ca1..336c20454 100644 --- a/src/duckdb/src/optimizer/filter_combiner.cpp +++ b/src/duckdb/src/optimizer/filter_combiner.cpp @@ -568,13 +568,8 @@ FilterPushdownResult FilterCombiner::TryPushdownLikeFilter(TableFilterSet &table auto &constant_value_expr = func.GetChildren()[1]->Cast(); auto proj_index = column_ref.Binding().column_index; - // constant value expr can sometimes be null. if so, push is not null filter, which will - // make the filter unsatisfiable and return no results. if (constant_value_expr.GetValue().IsNull()) { - auto is_not_null = ExpressionFilter::CreateNullCheckExpression( - CreateFilterTargetExpression(*func.GetChildren()[0]), ExpressionType::OPERATOR_IS_NOT_NULL); - table_filters.PushFilter(proj_index, make_uniq(std::move(is_not_null))); - return FilterPushdownResult::PUSHED_DOWN_FULLY; + return FilterPushdownResult::NO_PUSHDOWN; } auto &like_string = StringValue::Get(constant_value_expr.GetValue()); if (like_string[0] == '%' || like_string[0] == '_') { diff --git a/src/duckdb/src/optimizer/rule/like_optimizations.cpp b/src/duckdb/src/optimizer/rule/like_optimizations.cpp index e4ae279ac..fdf8c596d 100644 --- a/src/duckdb/src/optimizer/rule/like_optimizations.cpp +++ b/src/duckdb/src/optimizer/rule/like_optimizations.cpp @@ -17,9 +17,10 @@ LikeOptimizationRule::LikeOptimizationRule(ExpressionRewriter &rewriter) : Rule( func->matchers.push_back(make_uniq()); func->matchers.push_back(make_uniq()); func->policy = SetMatcher::Policy::ORDERED; - // we match on LIKE ("~~"), NOT LIKE ("!~~"), GLOB ("~~~"), and NOT GLOB ("!~~~") - func->function = make_uniq( - identifier_set_t {Identifier("!~~"), Identifier("~~"), Identifier("!~~~"), Identifier("~~~")}); + // we match on LIKE ("~~"), NOT LIKE ("!~~"), GLOB ("~~~"), NOT GLOB ("!~~~"), ILIKE ("~~*"), and NOT ILIKE ("!~~*") + func->function = + make_uniq(identifier_set_t {Identifier("!~~"), Identifier("~~"), Identifier("!~~~"), + Identifier("~~~"), Identifier("~~*"), Identifier("!~~*")}); root = std::move(func); } @@ -139,6 +140,11 @@ unique_ptr LikeOptimizationRule::Apply(LogicalOperator &op, vector(Value(root.GetReturnType())); } + bool is_ilike = root.Function().GetName() == "~~*" || root.Function().GetName() == "!~~*"; + if (is_ilike) { + return nullptr; + } + // the constant_expr is a scalar expression that we have to fold if (!constant_expr.IsFoldable()) { return nullptr; diff --git a/src/duckdb/src/parser/peg/compiled_grammar.cpp b/src/duckdb/src/parser/peg/compiled_grammar.cpp index eaa44442d..a497c1756 100644 --- a/src/duckdb/src/parser/peg/compiled_grammar.cpp +++ b/src/duckdb/src/parser/peg/compiled_grammar.cpp @@ -140,6 +140,7 @@ shared_ptr CompiledGrammar::Create(const vectorGetLiteralTable()); auto new_matcher = shared_ptr(new CompiledGrammar(std::move(allocator), std::move(keyword_helper), std::move(tokenizer), std::move(rules), diff --git a/src/duckdb/src/parser/peg/matcher.cpp b/src/duckdb/src/parser/peg/matcher.cpp index e3c48c950..8874b7e17 100644 --- a/src/duckdb/src/parser/peg/matcher.cpp +++ b/src/duckdb/src/parser/peg/matcher.cpp @@ -37,7 +37,7 @@ SuggestionType Matcher::AddSuggestion(MatchState &state) const { return AddSuggestionInternal(state); } -string Matcher::GetName() const { +string Matcher::GetPrintName() const { if (name.empty()) { return ToString(); } @@ -59,10 +59,9 @@ Matcher &MatcherAllocator::Allocate(unique_ptr matcher) { return result; } -optional_ptr ParseResultAllocator::Allocate(unique_ptr parse_result) { - auto result_ptr = parse_result.get(); - parse_results.push_back(std::move(parse_result)); - return optional_ptr(result_ptr); +ParseResultAllocator::ParseResultAllocator() : arena(Allocator::DefaultAllocator()), pending_destructors(arena) { } +ParseResultAllocator::~ParseResultAllocator() = default; + } // namespace duckdb diff --git a/src/duckdb/src/parser/peg/matcher_factory.cpp b/src/duckdb/src/parser/peg/matcher_factory.cpp index a2ebc9ca0..f9f5487d7 100644 --- a/src/duckdb/src/parser/peg/matcher_factory.cpp +++ b/src/duckdb/src/parser/peg/matcher_factory.cpp @@ -271,8 +271,15 @@ unique_ptr MatcherFactory::CreateKeyword(const string &keyword, return make_uniq(keyword, info, keyword_helper); } +template +static unique_ptr MakeStructural(ARGS &&... args) { + auto result = make_uniq(std::forward(args)...); + result->SetStructural(); + return result; +} + unique_ptr MatcherFactory::CreateList() const { - return make_uniq(); + return MakeStructural(); } unique_ptr MatcherFactory::CreateChoice(vector> &&matchers) const { @@ -282,26 +289,26 @@ unique_ptr MatcherFactory::CreateChoice(vector for (idx_t i = 0; i < matchers.size(); i++) { auto &matcher = matchers[i].get(); if (matcher.Type() != MatcherType::KEYWORD) { - return make_uniq(std::move(matchers)); + return MakeStructural(std::move(matchers)); } auto literal = matcher.Cast().GetDispatchLiteral(table); if (!literal.IsValid()) { - return make_uniq(std::move(matchers)); + return MakeStructural(std::move(matchers)); } // Preserve the first alternative when spellings share an ID. literal_children.emplace(static_cast(literal.GetIndex()), i); } - return make_uniq(std::move(matchers), table, std::move(literal_children)); + return MakeStructural(std::move(matchers), table, std::move(literal_children)); } - return make_uniq(std::move(matchers)); + return MakeStructural(std::move(matchers)); } unique_ptr MatcherFactory::CreateOptional(Matcher &matcher) const { - return make_uniq(matcher); + return MakeStructural(matcher); } unique_ptr MatcherFactory::CreateRepeat(Matcher &matcher) const { - return make_uniq(matcher); + return MakeStructural(matcher); } KeywordMatcher &MatcherFactory::Keyword(const string &keyword) const { diff --git a/src/duckdb/src/parser/peg/matcher_first_set.cpp b/src/duckdb/src/parser/peg/matcher_first_set.cpp new file mode 100644 index 000000000..e11efc38b --- /dev/null +++ b/src/duckdb/src/parser/peg/matcher_first_set.cpp @@ -0,0 +1,196 @@ +#include "duckdb/parser/peg/matcher.hpp" +#include "duckdb/parser/peg/matcher/list.hpp" +#include "duckdb/common/reference_map.hpp" + +namespace duckdb { + +//===--------------------------------------------------------------------===// +// FIRST sets +//===--------------------------------------------------------------------===// +bool MatcherFirstSet::Merge(const MatcherFirstSet &other) { + bool changed = false; + if (other.any && !any) { + any = changed = true; + } + if ((class_mask | other.class_mask) != class_mask) { + class_mask |= other.class_mask; + changed = true; + } + if (other.literals.size() > literals.size()) { + literals.resize(other.literals.size(), 0); + } + for (idx_t i = 0; i < other.literals.size(); i++) { + auto merged = literals[i] | other.literals[i]; + if (merged != literals[i]) { + literals[i] = merged; + changed = true; + } + } + return changed; +} + +void MatcherFirstSet::AddLiteral(idx_t literal_id) { + auto word = literal_id / 64; + if (word >= literals.size()) { + literals.resize(word + 1, 0); + } + literals[word] |= uint64_t(1) << (literal_id % 64); +} + +//! Calls fun(child) for every child of a built-in composite matcher +template +static void ForEachChild(Matcher &matcher, FUN &&fun) { + switch (matcher.Type()) { + case MatcherType::LIST: + for (auto &child : matcher.Cast().matchers) { + fun(child.get()); + } + break; + case MatcherType::CHOICE: + for (auto &child : matcher.Cast().matchers) { + fun(child.get()); + } + break; + case MatcherType::OPTIONAL: + fun(matcher.Cast().GetChildMatcher()); + break; + case MatcherType::REPEAT: + fun(matcher.Cast().GetChildMatcher()); + break; + default: + break; + } +} + +//! Derived matchers can override StartMatch, so only matchers marked as structural follow the semantics of their type +static bool IsComposite(const Matcher &matcher) { + if (!matcher.IsStructural()) { + return false; + } + auto type = matcher.Type(); + return type == MatcherType::LIST || type == MatcherType::CHOICE || type == MatcherType::OPTIONAL || + type == MatcherType::REPEAT; +} + +//! Recomputes the FIRST set of a composite matcher from its children, returns whether anything changed +static bool UpdateFirstSet(Matcher &matcher) { + auto &first = matcher.first_set; + bool changed = false; + bool nullable; + switch (matcher.Type()) { + case MatcherType::LIST: + // the first non-nullable element ends the FIRST set of a sequence + nullable = true; + for (auto &child : matcher.Cast().matchers) { + auto &child_first = child.get().first_set; + changed |= first.Merge(child_first); + if (!child_first.nullable) { + nullable = false; + break; + } + } + break; + case MatcherType::CHOICE: + nullable = false; + for (auto &child : matcher.Cast().matchers) { + auto &child_first = child.get().first_set; + changed |= first.Merge(child_first); + nullable = nullable || child_first.nullable; + } + break; + case MatcherType::OPTIONAL: + changed |= first.Merge(matcher.Cast().GetChildMatcher().first_set); + nullable = true; + break; + case MatcherType::REPEAT: { + auto &child_first = matcher.Cast().GetChildMatcher().first_set; + changed |= first.Merge(child_first); + nullable = child_first.nullable; + break; + } + default: + throw InternalException("UpdateFirstSet called on a matcher that is not composite"); + } + if (nullable && !first.nullable) { + first.nullable = true; + changed = true; + } + return changed; +} + +struct FirstSetTraversalEntry { + explicit FirstSetTraversalEntry(Matcher &matcher) : matcher(matcher) { + } + + reference matcher; + bool expanded = false; +}; + +void ComputeFirstSets(Matcher &root, const GrammarLiteralTable &table) { + // collect the reachable matchers, children before their parents (except for recursive references) + vector> matchers; + vector> composites; + reference_set_t seen; + vector pending; + pending.emplace_back(root); + seen.insert(root); + while (!pending.empty()) { + auto &entry = pending.back(); + auto &matcher = entry.matcher.get(); + if (entry.expanded) { + pending.pop_back(); + matchers.push_back(matcher); + continue; + } + entry.expanded = true; + // entry is invalidated by the pushes below + ForEachChild(matcher, [&](Matcher &child) { + if (seen.insert(child).second) { + pending.emplace_back(child); + } + }); + } + for (auto &entry : matchers) { + auto &matcher = entry.get(); + auto &first = matcher.first_set; + first = MatcherFirstSet(); + first.table = &table; + if (IsComposite(matcher)) { + composites.push_back(matcher); + } else if (matcher.IsAtomic()) { + static_cast(matcher).InitializeFirstSet(first, table); + } else { + // custom and derived matchers: no information + first.any = true; + } + } + // composite matchers: least fixed point, the grammar is recursive + // children are visited before their parents, so only recursive references need another pass + bool changed = true; + while (changed) { + changed = false; + for (auto &matcher : composites) { + changed |= UpdateFirstSet(matcher.get()); + } + } + for (auto &entry : matchers) { + entry.get().first_set.computed = true; + } +} + +bool MatcherFirstSet::MightMatch(MatchState &state) const { + if (!computed || any || nullable) { + return true; + } + auto token = state.token_iterator.Current(); + if (!token) { + return false; + } + if (token->token_class & class_mask) { + return true; + } + auto literal_id = state.token_iterator.CurrentLiteralInfo(*table).LiteralId(); + return literal_id && HasLiteral(literal_id); +} + +} // namespace duckdb diff --git a/src/duckdb/src/parser/peg/matcher_process.cpp b/src/duckdb/src/parser/peg/matcher_process.cpp index f558f26b8..da631f6ce 100644 --- a/src/duckdb/src/parser/peg/matcher_process.cpp +++ b/src/duckdb/src/parser/peg/matcher_process.cpp @@ -52,7 +52,10 @@ arena_ptr AtomicMatcher::StartMatch(MatchState &state) const { class ListMatchProcess : public MatchProcess { public: ListMatchProcess(const ListMatcher &matcher_p, MatchState &state_p) - : matcher(matcher_p), state(state_p), list_state(state_p) { + : matcher(matcher_p), state(state_p), list_state(state_p), results(state_p.context.process_allocator) { + if (state_p.BuildParseResult()) { + results.reserve(matcher_p.matchers.size()); + } saved_suggestion_size = matcher.suppress_suggestions ? list_state.context.suggestions.size() : 0; if (auto current = list_state.token_iterator.Current()) { start_offset = optional_idx(current->offset); @@ -68,22 +71,23 @@ class ListMatchProcess : public MatchProcess { return MatchStep::Complete(MatcherResult::Failure()); } if (child_result->HasParseResult()) { - results.push_back(*child_result->GetParseResult()); + results.emplace_back(*child_result->GetParseResult()); } child_index++; } while (child_index < matcher.matchers.size()) { + auto &child_matcher = matcher.matchers[child_index].get(); auto current = list_state.token_iterator.Current(); bool at_autocomplete_cursor = current && current->type == TokenType::END_OF_INPUT_AUTOCOMPLETE; if (!at_autocomplete_cursor) { awaiting_child = true; - return MatchStep::Child({matcher.matchers[child_index].get(), list_state}); + return MatchStep::Child({child_matcher, list_state}); } if (matcher.suppress_suggestions) { DiscardSuggestions(); return MatchStep::Complete(MatcherResult::Failure()); } - if (matcher.matchers[child_index].get().AddSuggestion(list_state) == SuggestionType::OPTIONAL) { + if (child_matcher.AddSuggestion(list_state) == SuggestionType::OPTIONAL) { child_index++; continue; } @@ -99,9 +103,9 @@ class ListMatchProcess : public MatchProcess { return MatchStep::Complete(MatcherResult::Success(collapsible)); } } - auto list_name = matcher.HasName() ? matcher.GetName() : string(); - return MatchStep::Complete( - state.AllocateParseResult(std::move(results), std::move(list_name), start_offset)); + auto named_matcher = matcher.HasName() ? &matcher : nullptr; + return MatchStep::Complete(state.AllocateParseResult( + state.context.allocator.MakeChildren(results), named_matcher, start_offset)); } private: @@ -147,7 +151,7 @@ class ListMatchProcess : public MatchProcess { const ListMatcher &matcher; MatchState &state; MatchState list_state; - vector> results; + arena_vector> results; idx_t child_index = 0; idx_t saved_suggestion_size = 0; optional_idx start_offset; @@ -259,7 +263,7 @@ arena_ptr OptionalMatcher::StartMatch(MatchState &state) const { class RepeatMatchProcess : public MatchProcess { public: RepeatMatchProcess(const RepeatMatcher &matcher_p, MatchState &state_p) - : matcher(matcher_p), state(state_p), repeat_state(state_p) { + : matcher(matcher_p), state(state_p), repeat_state(state_p), results(state_p.context.process_allocator) { if (auto current = repeat_state.token_iterator.Current()) { start_offset = optional_idx(current->offset); } @@ -277,7 +281,7 @@ class RepeatMatchProcess : public MatchProcess { } matched_once = true; if (child_result->HasParseResult()) { - results.push_back(*child_result->GetParseResult()); + results.emplace_back(*child_result->GetParseResult()); } state.token_iterator.SetPosition(repeat_state.token_iterator); auto current = repeat_state.token_iterator.Current(); @@ -292,14 +296,15 @@ class RepeatMatchProcess : public MatchProcess { private: MatcherResult CreateResult() { - return state.AllocateParseResult(std::move(results), start_offset); + return state.AllocateParseResult(state.context.allocator.MakeChildren(results), + start_offset); } private: const RepeatMatcher &matcher; MatchState &state; MatchState repeat_state; - vector> results; + arena_vector> results; bool matched_once = false; optional_idx start_offset; bool awaiting_child = false; diff --git a/src/duckdb/src/parser/peg/matcher_stack.cpp b/src/duckdb/src/parser/peg/matcher_stack.cpp index bd434f2e9..42a35db62 100644 --- a/src/duckdb/src/parser/peg/matcher_stack.cpp +++ b/src/duckdb/src/parser/peg/matcher_stack.cpp @@ -1,5 +1,6 @@ #include "duckdb/parser/peg/matcher_stack.hpp" #include "duckdb/common/optional.hpp" +#include "duckdb/parser/peg/matcher/optional_matcher.hpp" namespace duckdb { @@ -113,6 +114,21 @@ bool MatchStack::ExecuteFrame(MatchStackFrame &frame) { frame.child_result = ExecuteAtomicMatcher(*child); return false; } + if (child->state.BuildParseResult()) { + // skip sub-matchers that certainly cannot match at the current token (see MatcherFirstSet); such an attempt + // would fail without consuming a token, so skipping it changes neither the result nor the error position + if (child->matcher.Type() == MatcherType::OPTIONAL && child->matcher.IsStructural() && + !child->matcher.Cast().GetChildMatcher().first_set.MightMatch(child->state)) { + // what the optional's own process returns when its element fails + child->state.rule = child->matcher.GetRule(); + frame.child_result = child->state.AllocateParseResult(); + return false; + } + if (!child->matcher.first_set.MightMatch(child->state)) { + frame.child_result = MatcherResult::Failure(); + return false; + } + } PushFrame(*child); return false; } diff --git a/src/duckdb/src/parser/peg/parser_packrat.cpp b/src/duckdb/src/parser/peg/parser_packrat.cpp index d8651b00d..4d8c33572 100644 --- a/src/duckdb/src/parser/peg/parser_packrat.cpp +++ b/src/duckdb/src/parser/peg/parser_packrat.cpp @@ -8,7 +8,8 @@ size_t ParserPackratKeyHash::operator()(const ParserPackratKey &key) const { return std::hash()(key.matcher_id) ^ (std::hash()(key.token_index) << 1); } -ParserPackratCache::ParserPackratCache() = default; +ParserPackratCache::ParserPackratCache(ArenaAllocator &arena) : entries(arena) { +} ParserPackratCache::~ParserPackratCache() = default; diff --git a/src/duckdb/src/parser/peg/passthrough_dialect.cpp b/src/duckdb/src/parser/peg/passthrough_dialect.cpp index 0d3aeffa7..c160cc601 100644 --- a/src/duckdb/src/parser/peg/passthrough_dialect.cpp +++ b/src/duckdb/src/parser/peg/passthrough_dialect.cpp @@ -11,15 +11,21 @@ namespace { //! Yields the statement without looking at its tokens - the text is filled in from the parse result's extent class PassthroughTransformProcess final : public TransformProcess { public: - TransformStep Resume(unique_ptr child_result) override { + explicit PassthroughTransformProcess(PEGTransformer &transformer_p) : transformer(transformer_p) { + } + + TransformStep Resume(arena_ptr child_result) override { D_ASSERT(!child_result); unique_ptr statement = make_uniq(); - return TransformStep::Complete(make_uniq>>(std::move(statement))); + return TransformStep::Complete(transformer.MakeResult>(std::move(statement))); } + +private: + PEGTransformer &transformer; }; -unique_ptr StartPassthroughTransform(PEGTransformer &, ParseResult &) { - return make_uniq(); +arena_ptr StartPassthroughTransform(PEGTransformer &transformer, ParseResult &) { + return transformer.MakeProcess(transformer); } } // namespace diff --git a/src/duckdb/src/parser/peg/tokenizer/base_tokenizer.cpp b/src/duckdb/src/parser/peg/tokenizer/base_tokenizer.cpp index 408f6e212..408bf3963 100644 --- a/src/duckdb/src/parser/peg/tokenizer/base_tokenizer.cpp +++ b/src/duckdb/src/parser/peg/tokenizer/base_tokenizer.cpp @@ -1,9 +1,31 @@ #include "duckdb/common/string_util.hpp" #include "duckdb/parser/peg/tokenizer/tokenizer.hpp" #include "duckdb/parser/peg/keyword_helper.hpp" +#include "duckdb/parser/peg/matcher/operator_matcher.hpp" namespace duckdb { +uint8_t ComputeMatcherTokenClass(TokenType type, const string &text) { + switch (type) { + case TokenType::KEYWORD: + case TokenType::IDENTIFIER: + return MatcherTokenClass::WORD; + case TokenType::STRING_LITERAL: + // string literals are also accepted in identifier positions (e.g. table and file names) + return MatcherTokenClass::STRING | MatcherTokenClass::WORD; + case TokenType::NUMBER_LITERAL: + return MatcherTokenClass::NUMBER; + case TokenType::OPERATOR: + if (OperatorMatcher::HasSpecialPrecedence(text)) { + return MatcherTokenClass::OPERATOR; + } + return MatcherTokenClass::OPERATOR | MatcherTokenClass::GENERIC_OPERATOR; + default: + // terminators and end-of-input are only matched as literals or by matchers without a FIRST set + return 0; + } +} + TokenizerBehavior::TokenizerBehavior(const string &sql, vector &tokens) : sql(sql), tokens(tokens) { } @@ -15,7 +37,9 @@ bool Tokenizer::BackslashEscapesStringLiterals() const { } bool Tokenizer::IsQuotedIdentifierDelimiter(char character) const { - return character == '"'; + // double quotes are the SQL standard delimiter; backticks are accepted as an alternative + // (as in several other SQL dialects), with the same doubling rule for escaping the delimiter + return character == '"' || character == '`'; } void Tokenizer::HandleLastToken(TokenizerBehavior &behavior, TokenizeState state, const string &sql, diff --git a/src/duckdb/src/parser/peg/tokenizer/parser_tokenizer.cpp b/src/duckdb/src/parser/peg/tokenizer/parser_tokenizer.cpp index 608a45e51..bdf8fcc50 100644 --- a/src/duckdb/src/parser/peg/tokenizer/parser_tokenizer.cpp +++ b/src/duckdb/src/parser/peg/tokenizer/parser_tokenizer.cpp @@ -4,7 +4,10 @@ namespace duckdb { static bool IsEmptyQuotedIdentifier(const string &sql, idx_t start, idx_t end, TokenType type) { - return type == TokenType::IDENTIFIER && end == start + 2 && sql.substr(start, 2) == "\"\""; + if (type != TokenType::IDENTIFIER || end != start + 2) { + return false; + } + return (sql[start] == '"' && sql[start + 1] == '"') || (sql[start] == '`' && sql[start + 1] == '`'); } ParserTokenizerBehavior::ParserTokenizerBehavior(const string &sql, vector &tokens) diff --git a/src/duckdb/src/parser/peg/transformer/peg_transformer.cpp b/src/duckdb/src/parser/peg/transformer/peg_transformer.cpp index 4118abf06..329ec74ed 100644 --- a/src/duckdb/src/parser/peg/transformer/peg_transformer.cpp +++ b/src/duckdb/src/parser/peg/transformer/peg_transformer.cpp @@ -12,7 +12,7 @@ TransformStep TransformStep::Child(TransformInput input) { return TransformStep(input, nullptr); } -TransformStep TransformStep::Complete(unique_ptr result) { +TransformStep TransformStep::Complete(arena_ptr result) { D_ASSERT(result); return TransformStep(nullopt, std::move(result)); } @@ -21,7 +21,7 @@ optional TransformStep::GetChild() { return child; } -unique_ptr TransformStep::TakeResult() { +arena_ptr TransformStep::TakeResult() { D_ASSERT(!child); D_ASSERT(result); return std::move(result); @@ -29,7 +29,8 @@ unique_ptr TransformStep::TakeResult() { GeneratedTransformProcess::GeneratedTransformProcess(PEGTransformer &transformer_p, TransformInput input, const TransformFrameOps &info_p) - : parse_result(input.parse_result), info(info_p), transformer(transformer_p) { + : parse_result(input.parse_result), info(info_p), child_results(transformer_p.GetAllocator()), + transformer(transformer_p), pending_children(transformer_p.GetAllocator()) { if (!info.initialize || !info.finalize) { throw InternalException("Incomplete transformer process for rule '%s'", info.name); } @@ -38,9 +39,11 @@ GeneratedTransformProcess::GeneratedTransformProcess(PEGTransformer &transformer void GeneratedTransformProcess::ReserveChildSlots(idx_t count) { child_results.resize(count); + // a rule pushes at most one child per slot, so the pending list never has to grow either + pending_children.reserve(count); } -void GeneratedTransformProcess::SetChildResult(idx_t slot, unique_ptr result) { +void GeneratedTransformProcess::SetChildResult(idx_t slot, arena_ptr result) { if (slot >= child_results.size()) { throw InternalException("Invalid transformer result slot %llu for rule '%s'", slot, info.name); } @@ -84,30 +87,30 @@ FinalizeTransformProcess::FinalizeTransformProcess(PEGTransformer &transformer_p : transformer(transformer_p), parse_result(parse_result_p), finalize(std::move(finalize_p)) { } -TransformStep FinalizeTransformProcess::Resume(unique_ptr child_result) { +TransformStep FinalizeTransformProcess::Resume(arena_ptr child_result) { D_ASSERT(!completed); D_ASSERT(!child_result); auto result = finalize(transformer, parse_result); if (!result) { - throw InternalException("Transformer for rule '%s' returned a nullptr", parse_result.name); + throw InternalException("Transformer for rule '%s' returned a nullptr", parse_result.Name()); } completed = true; return TransformStep::Complete(std::move(result)); } -unique_ptr CompiledGrammarRule::StartTransform(PEGTransformer &transformer, - ParseResult &parse_result) const { +arena_ptr CompiledGrammarRule::StartTransform(PEGTransformer &transformer, + ParseResult &parse_result) const { if (!transform_process) { - throw NotImplementedException("No transform process found for rule '%s'", parse_result.name); + throw NotImplementedException("No transform process found for rule '%s'", parse_result.Name()); } auto result = transform_process(transformer, parse_result); if (!result) { - throw InternalException("Transform process factory for rule '%s' returned a nullptr", parse_result.name); + throw InternalException("Transform process factory for rule '%s' returned a nullptr", parse_result.Name()); } return result; } -TransformStep GeneratedTransformProcess::Resume(unique_ptr child_result) { +TransformStep GeneratedTransformProcess::Resume(arena_ptr child_result) { D_ASSERT(!completed); D_ASSERT(child_result_slot.IsValid() == bool(child_result)); if (child_result) { @@ -130,12 +133,12 @@ void TransformStack::PushFrame(TransformInput input) { void TransformStack::InitializeFrame(TransformStackFrame &frame) { if (!frame.rule) { - throw InternalException("No registered data exists for rule '%s'", frame.parse_result.name); + throw InternalException("No registered data exists for rule '%s'", frame.parse_result.Name()); } frame.process = frame.rule->StartTransform(transformer, frame.parse_result); } -unique_ptr TransformStack::ExecuteFrame(TransformStackFrame &frame) { +arena_ptr TransformStack::ExecuteFrame(TransformStackFrame &frame) { if (!frame.process) { InitializeFrame(frame); } @@ -149,10 +152,10 @@ unique_ptr TransformStack::ExecuteFrame(TransformStackFram return nullptr; } -unique_ptr TransformStack::Execute(TransformInput input) { +arena_ptr TransformStack::Execute(TransformInput input) { D_ASSERT(frames.empty()); if (!input.GetRule()) { - throw InternalException("No registered data exists for rule '%s'", input.parse_result.name); + throw InternalException("No registered data exists for rule '%s'", input.parse_result.Name()); } PushFrame(input); while (!frames.empty()) { @@ -181,7 +184,7 @@ string TransformStack::FormatStack() const { result << "\n"; } auto &parse_result = frames[i].parse_result; - result << "#" << i << " " << parse_result.name; + result << "#" << i << " " << parse_result.Name(); if (parse_result.offset.IsValid()) { result << " offset=" << parse_result.offset.GetIndex(); } @@ -190,10 +193,10 @@ string TransformStack::FormatStack() const { } #endif -unique_ptr PEGTransformer::TransformInternal(ParseResult &parse_result) { +arena_ptr PEGTransformer::TransformInternal(ParseResult &parse_result) { auto rule = parse_result.GetRule(); if (!rule) { - throw InternalException("No registered data exists for rule '%s'", parse_result.name); + throw InternalException("No registered data exists for rule '%s'", parse_result.Name()); } TransformInput input {*rule, parse_result}; TransformStack stack(*this); @@ -268,6 +271,7 @@ void PEGTransformer::Clear() { ClearParameters(); pivot_entries.clear(); stored_cte_map.clear(); + window_clauses.clear(); } idx_t PEGTransformer::ParamCount() const { @@ -368,8 +372,12 @@ bool PEGTransformer::IsWindowFrameDefault(WindowBoundary start, WindowBoundary e } unique_ptr PEGTransformer::GetWindowClause(const Identifier &window_name) { - auto it = window_clauses.find(window_name); - if (it == window_clauses.end()) { + if (window_clauses.empty()) { + throw ParserException("window %s does not exist", window_name); + } + auto ¤t_windows = window_clauses.back(); + auto it = current_windows.find(window_name); + if (it == current_windows.end()) { throw ParserException("window %s does not exist", window_name); } return unique_ptr_cast(it->second->Copy()); diff --git a/src/duckdb/src/parser/peg/transformer/peg_transformer_factory.cpp b/src/duckdb/src/parser/peg/transformer/peg_transformer_factory.cpp index e5b6ddc03..f16dd5817 100644 --- a/src/duckdb/src/parser/peg/transformer/peg_transformer_factory.cpp +++ b/src/duckdb/src/parser/peg/transformer/peg_transformer_factory.cpp @@ -55,9 +55,11 @@ unique_ptr PEGTransformerFactory::TransformTopLevelStatement(Token } vector suggestions; ParseResultAllocator parse_result_allocator; - ParserPackratCache packrat_cache; idx_t max_token_index = token_iterator.Position(); + // the packrat cache outlives the match processes, so they need separate arenas ArenaAllocator process_allocator(Allocator::DefaultAllocator()); + ArenaAllocator packrat_allocator(Allocator::DefaultAllocator()); + ParserPackratCache packrat_cache(packrat_allocator); MatchContext match_context(suggestions, parse_result_allocator, process_allocator, max_token_index, MatchMode::BUILD_PARSE_RESULT, options.identifier_case_mode, &packrat_cache); MatchState state(token_iterator, match_context); @@ -149,8 +151,9 @@ PEGTransformerFactory::PEGTransformerFactory(ParsedGrammar &grammar_p) : grammar auto process_info = entry.second; grammar.SetTransformProcess( entry.first, - [process_info](PEGTransformer &transformer, ParseResult &parse_result) -> unique_ptr { - return make_uniq(transformer, TransformInput {parse_result}, *process_info); + [process_info](PEGTransformer &transformer, ParseResult &parse_result) -> arena_ptr { + return transformer.MakeProcess(transformer, TransformInput {parse_result}, + *process_info); }, collapsible_rules.count(entry.first) > 0); } diff --git a/src/duckdb/src/parser/peg/transformer/transform_expression.cpp b/src/duckdb/src/parser/peg/transformer/transform_expression.cpp index be661d4da..6265acfc9 100644 --- a/src/duckdb/src/parser/peg/transformer/transform_expression.cpp +++ b/src/duckdb/src/parser/peg/transformer/transform_expression.cpp @@ -1694,7 +1694,7 @@ void PEGTransformerFactory::InitializePrefixExpressionTrampoline(PEGTransformer process.PushChild({list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePrefixExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -1702,7 +1702,7 @@ PEGTransformerFactory::FinalizePrefixExpressionTrampoline(PEGTransformer &transf auto expr = process.TakeResult>(0); if (!prefix_opt.HasResult()) { - return make_uniq>>(std::move(expr)); + return transformer.MakeResult>(std::move(expr)); } auto &prefix_repeat = prefix_opt.GetResult().Cast(); @@ -1728,7 +1728,7 @@ PEGTransformerFactory::FinalizePrefixExpressionTrampoline(PEGTransformer &transf func_expr->IsOperatorMutable() = true; expr = std::move(func_expr); } - return make_uniq>>(std::move(expr)); + return transformer.MakeResult>(std::move(expr)); } unique_ptr PEGTransformerFactory::TransformAnonymousParameter(PEGTransformer &transformer) { // AnonymousParameter <- '?' @@ -1835,7 +1835,7 @@ PEGTransformerFactory::TransformPositionalExpression(PEGTransformer &transformer // LiteralExpression <- StringLiteral / NumberLiteral / 'NULL' / 'TRUE' / 'FALSE' unique_ptr PEGTransformerFactory::TransformLiteralExpression(PEGTransformer &transformer, ParseResult &choice_result) { - if (choice_result.name == "StringLiteral") { + if (choice_result.Name() == "StringLiteral") { auto &string_literal = choice_result.Cast(); return string_literal.ToExpression(); } @@ -1847,35 +1847,35 @@ void PEGTransformerFactory::InitializeLiteralExpressionTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLiteralExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto &choice_pr = list_pr.Child(0); auto &choice_result = choice_pr.GetResult(); unique_ptr result; - if (choice_result.name == "StringLiteral") { + if (choice_result.Name() == "StringLiteral") { auto &string_literal = choice_result.Cast(); result = string_literal.ToExpression(); - } else if (choice_result.name == "NumberLiteral") { + } else if (choice_result.Name() == "NumberLiteral") { result = TransformNumberLiteral(transformer, choice_result); } else { auto &constant_list_pr = choice_result.Cast(); auto &constant_choice_pr = constant_list_pr.Child(0); auto &constant_result = constant_choice_pr.GetResult(); Value value; - if (constant_result.name == "NullLiteral") { + if (constant_result.Name() == "NullLiteral") { value = TransformNullLiteral(transformer); - } else if (constant_result.name == "TrueLiteral") { + } else if (constant_result.Name() == "TrueLiteral") { value = TransformTrueLiteral(transformer); - } else if (constant_result.name == "FalseLiteral") { + } else if (constant_result.Name() == "FalseLiteral") { value = TransformFalseLiteral(transformer); } else { - throw InternalException("Unexpected literal expression process child '%s'", constant_result.name); + throw InternalException("Unexpected literal expression process child '%s'", constant_result.Name()); } result = TransformConstantLiteral(transformer, value); } - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } unique_ptr PEGTransformerFactory::TransformParensExpression(PEGTransformer &transformer, @@ -2159,11 +2159,11 @@ void PEGTransformerFactory::InitializeOverClauseTrampoline(PEGTransformer &trans process.PushChild({list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOverClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); transformer.in_window_definition = false; - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } unique_ptr PEGTransformerFactory::TransformIdentifierWindowFrame(PEGTransformer &transformer, diff --git a/src/duckdb/src/parser/peg/transformer/transform_generated_trampoline.cpp b/src/duckdb/src/parser/peg/transformer/transform_generated_trampoline.cpp index a07509089..69cba4061 100644 --- a/src/duckdb/src/parser/peg/transformer/transform_generated_trampoline.cpp +++ b/src/duckdb/src/parser/peg/transformer/transform_generated_trampoline.cpp @@ -4137,19 +4137,19 @@ void PEGTransformerFactory::InitializeStatementTrampoline(PEGTransformer &transf process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); if (!child_rule) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeStatementTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); if (!transformer.named_parameter_map.empty()) { result->named_param_map = transformer.named_parameter_map; } result->has_anonymous_parameters = transformer.has_anonymous_parameters; - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIdentifierOrKeywordTrampoline(PEGTransformer &transformer, @@ -4157,11 +4157,11 @@ void PEGTransformerFactory::InitializeIdentifierOrKeywordTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIdentifierOrKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformIdentifierOrKeyword(transformer, process.parse_result); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAlterStatementTrampoline(PEGTransformer &transformer, @@ -4171,12 +4171,12 @@ void PEGTransformerFactory::InitializeAlterStatementTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("AlterOptions"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto alter_options = process.TakeResult>(0); auto result = TransformAlterStatement(transformer, std::move(alter_options)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterOptionsTrampoline(PEGTransformer &transformer, @@ -4188,15 +4188,15 @@ void PEGTransformerFactory::InitializeAlterOptionsTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterTableStmtTrampoline(PEGTransformer &transformer, @@ -4216,7 +4216,7 @@ void PEGTransformerFactory::InitializeAlterTableStmtTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterTableStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -4233,7 +4233,7 @@ PEGTransformerFactory::FinalizeAlterTableStmtTrampoline(PEGTransformer &transfor } auto result = TransformAlterTableStmt(transformer, if_exists, std::move(base_table_name), std::move(alter_table_options)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterSchemaStmtTrampoline(PEGTransformer &transformer, @@ -4248,7 +4248,7 @@ void PEGTransformerFactory::InitializeAlterSchemaStmtTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterSchemaStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_exists {}; @@ -4258,7 +4258,7 @@ PEGTransformerFactory::FinalizeAlterSchemaStmtTrampoline(PEGTransformer &transfo auto qualified_name = process.TakeResult(1); auto alter_schema_options = process.TakeResult>(2); auto result = TransformAlterSchemaStmt(transformer, if_exists, qualified_name, std::move(alter_schema_options)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterSchemaOptionsTrampoline(PEGTransformer &transformer, @@ -4270,16 +4270,16 @@ void PEGTransformerFactory::InitializeAlterSchemaOptionsTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterSchemaOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterTableOptionsTrampoline(PEGTransformer &transformer, @@ -4291,16 +4291,16 @@ void PEGTransformerFactory::InitializeAlterTableOptionsTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterTableOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAddConstraintTrampoline(PEGTransformer &transformer, @@ -4310,12 +4310,12 @@ void PEGTransformerFactory::InitializeAddConstraintTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("TopLevelConstraint"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAddConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto top_level_constraint = process.TakeResult>(0); auto result = TransformAddConstraint(transformer, std::move(top_level_constraint)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropConstraintTrampoline(PEGTransformer &transformer, @@ -4333,7 +4333,7 @@ void PEGTransformerFactory::InitializeDropConstraintTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_exists {}; @@ -4346,7 +4346,7 @@ PEGTransformerFactory::FinalizeDropConstraintTrampoline(PEGTransformer &transfor drop_behavior = process.TakeResult(2); } auto result = TransformDropConstraint(transformer, if_exists, constraint_name, drop_behavior); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAddColumnTrampoline(PEGTransformer &transformer, @@ -4360,8 +4360,8 @@ void PEGTransformerFactory::InitializeAddColumnTrampoline(PEGTransformer &transf } } -unique_ptr -PEGTransformerFactory::FinalizeAddColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeAddColumnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; auto &has_result_opt = list_pr.GetChild(1).Cast(); @@ -4372,7 +4372,7 @@ PEGTransformerFactory::FinalizeAddColumnTrampoline(PEGTransformer &transformer, } auto add_column_entry = process.TakeResult(1); auto result = TransformAddColumn(transformer, has_result, if_not_exists, std::move(add_column_entry)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAddColumnEntryTrampoline(PEGTransformer &transformer, @@ -4404,7 +4404,7 @@ void PEGTransformerFactory::InitializeAddColumnEntryTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("DottedIdentifier"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAddColumnEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -4434,7 +4434,7 @@ PEGTransformerFactory::FinalizeAddColumnEntryTrampoline(PEGTransformer &transfor } auto result = TransformAddColumnEntry(transformer, dotted_identifier, type, std::move(generated_column), std::move(column_constraint)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDropColumnTrampoline(PEGTransformer &transformer, @@ -4452,7 +4452,7 @@ void PEGTransformerFactory::InitializeDropColumnTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -4468,7 +4468,7 @@ PEGTransformerFactory::FinalizeDropColumnTrampoline(PEGTransformer &transformer, drop_behavior = process.TakeResult(2); } auto result = TransformDropColumn(transformer, has_result, if_exists, std::move(nested_column_name), drop_behavior); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterColumnTrampoline(PEGTransformer &transformer, @@ -4479,7 +4479,7 @@ void PEGTransformerFactory::InitializeAlterColumnTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("NestedColumnName"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -4489,7 +4489,7 @@ PEGTransformerFactory::FinalizeAlterColumnTrampoline(PEGTransformer &transformer auto alter_column_entry = process.TakeResult>(1); auto result = TransformAlterColumn(transformer, has_result, std::move(nested_column_name), std::move(alter_column_entry)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeRenameColumnTrampoline(PEGTransformer &transformer, @@ -4500,7 +4500,7 @@ void PEGTransformerFactory::InitializeRenameColumnTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("NestedColumnName"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRenameColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -4509,7 +4509,7 @@ PEGTransformerFactory::FinalizeRenameColumnTrampoline(PEGTransformer &transforme auto nested_column_name = process.TakeResult>(0); auto col_id_or_string = process.TakeResult(1); auto result = TransformRenameColumn(transformer, has_result, std::move(nested_column_name), col_id_or_string); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNestedColumnNameTrampoline(PEGTransformer &transformer, @@ -4531,7 +4531,7 @@ void PEGTransformerFactory::InitializeNestedColumnNameTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNestedColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -4552,7 +4552,7 @@ PEGTransformerFactory::FinalizeNestedColumnNameTrampoline(PEGTransformer &transf } auto column_name = list_pr.GetChild(1).Cast().identifier; auto result = TransformNestedColumnName(transformer, identifier_dot, column_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIdentifierDotTrampoline(PEGTransformer &transformer, @@ -4560,13 +4560,13 @@ void PEGTransformerFactory::InitializeIdentifierDotTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIdentifierDotTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformIdentifierDot(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRenameAlterTrampoline(PEGTransformer &transformer, @@ -4576,11 +4576,11 @@ void PEGTransformerFactory::InitializeRenameAlterTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRenameAlterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); auto result = TransformRenameAlter(transformer, col_id_or_string); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetPartitionedByTrampoline(PEGTransformer &transformer, @@ -4595,7 +4595,7 @@ void PEGTransformerFactory::InitializeSetPartitionedByTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetPartitionedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -4606,7 +4606,7 @@ PEGTransformerFactory::FinalizeSetPartitionedByTrampoline(PEGTransformer &transf expression.push_back(process.TakeResult>(i)); } auto result = TransformSetPartitionedBy(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeResetPartitionedByTrampoline(PEGTransformer &transformer, @@ -4614,11 +4614,11 @@ void PEGTransformerFactory::InitializeResetPartitionedByTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeResetPartitionedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformResetPartitionedBy(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetSortedByTrampoline(PEGTransformer &transformer, @@ -4628,11 +4628,11 @@ void PEGTransformerFactory::InitializeSetSortedByTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("OrderByExpressions"), ExtractResultFromParens(list_pr.GetChild(3))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetSortedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto order_by_expressions = process.TakeResult>(0); auto result = TransformSetSortedBy(transformer, std::move(order_by_expressions)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeResetSortedByTrampoline(PEGTransformer &transformer, @@ -4640,11 +4640,11 @@ void PEGTransformerFactory::InitializeResetSortedByTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeResetSortedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformResetSortedBy(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetOptionsTrampoline(PEGTransformer &transformer, @@ -4654,11 +4654,11 @@ void PEGTransformerFactory::InitializeSetOptionsTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("RelOptionList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto rel_option_list = process.TakeResult>>(0); auto result = TransformSetOptions(transformer, std::move(rel_option_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeResetOptionsTrampoline(PEGTransformer &transformer, @@ -4668,11 +4668,11 @@ void PEGTransformerFactory::InitializeResetOptionsTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("RelOptionList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeResetOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto rel_option_list = process.TakeResult>>(0); auto result = TransformResetOptions(transformer, std::move(rel_option_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterColumnEntryTrampoline(PEGTransformer &transformer, @@ -4684,16 +4684,16 @@ void PEGTransformerFactory::InitializeAlterColumnEntryTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterColumnEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAddOrDropDefaultTrampoline(PEGTransformer &transformer, @@ -4705,16 +4705,16 @@ void PEGTransformerFactory::InitializeAddOrDropDefaultTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAddOrDropDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAddDefaultTrampoline(PEGTransformer &transformer, @@ -4724,11 +4724,11 @@ void PEGTransformerFactory::InitializeAddDefaultTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAddDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformAddDefault(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropDefaultTrampoline(PEGTransformer &transformer, @@ -4736,10 +4736,10 @@ void PEGTransformerFactory::InitializeDropDefaultTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDropDefault(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeChangeNullabilityTrampoline(PEGTransformer &transformer, @@ -4749,12 +4749,12 @@ void PEGTransformerFactory::InitializeChangeNullabilityTrampoline(PEGTransformer process.PushChild({transformer.GetRule("DropOrSet"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeChangeNullabilityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto drop_or_set = process.TakeResult(0); auto result = TransformChangeNullability(transformer, drop_or_set); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropOrSetTrampoline(PEGTransformer &transformer, @@ -4770,13 +4770,13 @@ void PEGTransformerFactory::InitializeDropOrSetTrampoline(PEGTransformer &transf return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeDropOrSetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDropOrSetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { string result; if (process.child_results[0]) { result = process.TakeResult(0); @@ -4795,7 +4795,7 @@ PEGTransformerFactory::FinalizeDropOrSetTrampoline(PEGTransformer &transformer, result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDropNullabilityTrampoline(PEGTransformer &transformer, @@ -4803,11 +4803,11 @@ void PEGTransformerFactory::InitializeDropNullabilityTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropNullabilityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDropNullability(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSetNullabilityTrampoline(PEGTransformer &transformer, @@ -4815,11 +4815,11 @@ void PEGTransformerFactory::InitializeSetNullabilityTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetNullabilityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSetNullability(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAlterTypeTrampoline(PEGTransformer &transformer, @@ -4840,8 +4840,8 @@ void PEGTransformerFactory::InitializeAlterTypeTrampoline(PEGTransformer &transf } } -unique_ptr -PEGTransformerFactory::FinalizeAlterTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeAlterTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; auto &has_result_opt = list_pr.GetChild(0).Cast(); @@ -4860,7 +4860,7 @@ PEGTransformerFactory::FinalizeAlterTypeTrampoline(PEGTransformer &transformer, } auto result = TransformAlterType(transformer, has_result, type, std::move(column_collation), std::move(using_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUsingExpressionTrampoline(PEGTransformer &transformer, @@ -4870,12 +4870,12 @@ void PEGTransformerFactory::InitializeUsingExpressionTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUsingExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformUsingExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterViewStmtTrampoline(PEGTransformer &transformer, @@ -4890,7 +4890,7 @@ void PEGTransformerFactory::InitializeAlterViewStmtTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterViewStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_exists {}; @@ -4900,7 +4900,7 @@ PEGTransformerFactory::FinalizeAlterViewStmtTrampoline(PEGTransformer &transform auto base_table_name = process.TakeResult>(1); auto rename_alter = process.TakeResult>(2); auto result = TransformAlterViewStmt(transformer, if_exists, std::move(base_table_name), std::move(rename_alter)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterSequenceStmtTrampoline(PEGTransformer &transformer, @@ -4915,7 +4915,7 @@ void PEGTransformerFactory::InitializeAlterSequenceStmtTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterSequenceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_exists {}; @@ -4926,7 +4926,7 @@ PEGTransformerFactory::FinalizeAlterSequenceStmtTrampoline(PEGTransformer &trans auto alter_sequence_options = process.TakeResult>(2); auto result = TransformAlterSequenceStmt(transformer, if_exists, qualified_sequence_name, std::move(alter_sequence_options)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeQualifiedSequenceNameTrampoline(PEGTransformer &transformer, @@ -4943,7 +4943,7 @@ void PEGTransformerFactory::InitializeQualifiedSequenceNameTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedSequenceNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -4958,7 +4958,7 @@ PEGTransformerFactory::FinalizeQualifiedSequenceNameTrampoline(PEGTransformer &t auto sequence_name = list_pr.GetChild(2).Cast().identifier; auto result = TransformQualifiedSequenceName(transformer, catalog_qualification, schema_qualification, sequence_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAlterSequenceOptionsTrampoline(PEGTransformer &transformer, @@ -4970,16 +4970,16 @@ void PEGTransformerFactory::InitializeAlterSequenceOptionsTrampoline(PEGTransfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterSequenceOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeRenameAlterSequenceOptionsTrampoline(PEGTransformer &transformer, @@ -4989,12 +4989,12 @@ void PEGTransformerFactory::InitializeRenameAlterSequenceOptionsTrampoline(PEGTr process.PushChild({transformer.GetRule("RenameAlter"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRenameAlterSequenceOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto rename_alter = process.TakeResult>(0); auto result = TransformRenameAlterSequenceOptions(transformer, std::move(rename_alter)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetSequenceOptionTrampoline(PEGTransformer &transformer, @@ -5010,7 +5010,7 @@ void PEGTransformerFactory::InitializeSetSequenceOptionTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetSequenceOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -5022,7 +5022,7 @@ PEGTransformerFactory::FinalizeSetSequenceOptionTrampoline(PEGTransformer &trans sequence_option.push_back(process.TakeResult>>(i)); } auto result = TransformSetSequenceOption(transformer, std::move(sequence_option)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAlterDatabaseStmtTrampoline(PEGTransformer &transformer, @@ -5035,7 +5035,7 @@ void PEGTransformerFactory::InitializeAlterDatabaseStmtTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAlterDatabaseStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -5046,7 +5046,7 @@ PEGTransformerFactory::FinalizeAlterDatabaseStmtTrampoline(PEGTransformer &trans auto identifier = list_pr.GetChild(2).Cast().identifier; auto identifier_1 = list_pr.GetChild(6).Cast().identifier; auto result = TransformAlterDatabaseStmt(transformer, if_exists, identifier, identifier_1); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAnalyzeStatementTrampoline(PEGTransformer &transformer, @@ -5064,7 +5064,7 @@ void PEGTransformerFactory::InitializeAnalyzeStatementTrampoline(PEGTransformer process.PushChild({transformer.GetRule("AnalyzeKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAnalyzeStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto analyze_keyword = process.TakeResult(0); @@ -5077,7 +5077,7 @@ PEGTransformerFactory::FinalizeAnalyzeStatementTrampoline(PEGTransformer &transf analyze_target = process.TakeResult(2); } auto result = TransformAnalyzeStatement(transformer, analyze_keyword, analyze_verbose, std::move(analyze_target)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAnalyzeTargetTrampoline(PEGTransformer &transformer, @@ -5091,7 +5091,7 @@ void PEGTransformerFactory::InitializeAnalyzeTargetTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAnalyzeTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); @@ -5100,7 +5100,7 @@ PEGTransformerFactory::FinalizeAnalyzeTargetTrampoline(PEGTransformer &transform name_list = process.TakeResult>(1); } auto result = TransformAnalyzeTarget(transformer, std::move(base_table_name), name_list); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeAnalyzeVerboseTrampoline(PEGTransformer &transformer, @@ -5108,11 +5108,11 @@ void PEGTransformerFactory::InitializeAnalyzeVerboseTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAnalyzeVerboseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformAnalyzeVerbose(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAttachStatementTrampoline(PEGTransformer &transformer, @@ -5138,7 +5138,7 @@ void PEGTransformerFactory::InitializeAttachStatementTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAttachStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -5164,7 +5164,7 @@ PEGTransformerFactory::FinalizeAttachStatementTrampoline(PEGTransformer &transfo } auto result = TransformAttachStatement(transformer, or_replace, if_not_exists, has_result, std::move(database_path), attach_alias, attach_options); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDatabasePathTrampoline(PEGTransformer &transformer, @@ -5174,11 +5174,11 @@ void PEGTransformerFactory::InitializeDatabasePathTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDatabasePathTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformDatabasePath(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAttachAliasTrampoline(PEGTransformer &transformer, @@ -5188,11 +5188,11 @@ void PEGTransformerFactory::InitializeAttachAliasTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAttachAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformAttachAlias(transformer, col_id); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAttachOptionsTrampoline(PEGTransformer &transformer, @@ -5202,12 +5202,12 @@ void PEGTransformerFactory::InitializeAttachOptionsTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("GenericCopyOptionList"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAttachOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto generic_copy_option_list = process.TakeResult>(0); auto result = TransformAttachOptions(transformer, generic_copy_option_list); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeCallStatementTrampoline(PEGTransformer &transformer, @@ -5218,13 +5218,13 @@ void PEGTransformerFactory::InitializeCallStatementTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("QualifiedTableFunction"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCallStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto qualified_table_function = process.TakeResult(0); auto table_function_arguments = process.TakeResult>(1); auto result = TransformCallStatement(transformer, qualified_table_function, std::move(table_function_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCheckpointStatementTrampoline(PEGTransformer &transformer, @@ -5237,7 +5237,7 @@ void PEGTransformerFactory::InitializeCheckpointStatementTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCheckpointStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -5251,7 +5251,7 @@ PEGTransformerFactory::FinalizeCheckpointStatementTrampoline(PEGTransformer &tra catalog_name = catalog_name_opt.GetResult().Cast().identifier; } auto result = TransformCheckpointStatement(transformer, checkpoint_force, catalog_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCheckpointForceTrampoline(PEGTransformer &transformer, @@ -5259,11 +5259,11 @@ void PEGTransformerFactory::InitializeCheckpointForceTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCheckpointForceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCheckpointForce(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentStatementTrampoline(PEGTransformer &transformer, @@ -5275,14 +5275,14 @@ void PEGTransformerFactory::InitializeCommentStatementTrampoline(PEGTransformer process.PushChild({transformer.GetRule("CommentOnType"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto comment_on_type = process.TakeResult(0); auto comment_target = process.TakeResult>(1); auto comment_value = process.TakeResult(2); auto result = TransformCommentStatement(transformer, comment_on_type, comment_target, comment_value); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCommentTargetTrampoline(PEGTransformer &transformer, @@ -5294,16 +5294,16 @@ void PEGTransformerFactory::InitializeCommentTargetTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeCommentStringLiteralIdentifierTrampoline(PEGTransformer &transformer, @@ -5313,12 +5313,12 @@ void PEGTransformerFactory::InitializeCommentStringLiteralIdentifierTrampoline(P process.PushChild({transformer.GetRule("StringLiteralIdentifier"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentStringLiteralIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto string_literal_identifier = process.TakeResult(0); auto result = TransformCommentStringLiteralIdentifier(transformer, string_literal_identifier); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeCommentOnTypeTrampoline(PEGTransformer &transformer, @@ -5330,16 +5330,16 @@ void PEGTransformerFactory::InitializeCommentOnTypeTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentOnTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentTableTrampoline(PEGTransformer &transformer, @@ -5347,10 +5347,10 @@ void PEGTransformerFactory::InitializeCommentTableTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentTable(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentSequenceTrampoline(PEGTransformer &transformer, @@ -5358,11 +5358,11 @@ void PEGTransformerFactory::InitializeCommentSequenceTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentSequenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentSequence(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentFunctionTrampoline(PEGTransformer &transformer, @@ -5370,11 +5370,11 @@ void PEGTransformerFactory::InitializeCommentFunctionTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentFunction(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentMacroTableTrampoline(PEGTransformer &transformer, @@ -5382,11 +5382,11 @@ void PEGTransformerFactory::InitializeCommentMacroTableTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentMacroTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentMacroTable(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentMacroTrampoline(PEGTransformer &transformer, @@ -5394,10 +5394,10 @@ void PEGTransformerFactory::InitializeCommentMacroTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentMacroTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentMacro(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentViewTrampoline(PEGTransformer &transformer, @@ -5405,10 +5405,10 @@ void PEGTransformerFactory::InitializeCommentViewTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentViewTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentView(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentDatabaseTrampoline(PEGTransformer &transformer, @@ -5416,11 +5416,11 @@ void PEGTransformerFactory::InitializeCommentDatabaseTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentDatabaseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentDatabase(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentIndexTrampoline(PEGTransformer &transformer, @@ -5428,10 +5428,10 @@ void PEGTransformerFactory::InitializeCommentIndexTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentIndex(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentSchemaTrampoline(PEGTransformer &transformer, @@ -5439,11 +5439,11 @@ void PEGTransformerFactory::InitializeCommentSchemaTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentSchema(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentTypeTrampoline(PEGTransformer &transformer, @@ -5451,10 +5451,10 @@ void PEGTransformerFactory::InitializeCommentTypeTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentType(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentColumnTrampoline(PEGTransformer &transformer, @@ -5462,11 +5462,11 @@ void PEGTransformerFactory::InitializeCommentColumnTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCommentColumn(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommentValueTrampoline(PEGTransformer &transformer, @@ -5478,15 +5478,15 @@ void PEGTransformerFactory::InitializeCommentValueTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommentValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeStringLiteralValueTrampoline(PEGTransformer &transformer, @@ -5494,13 +5494,13 @@ void PEGTransformerFactory::InitializeStringLiteralValueTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStringLiteralValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(0)); auto result = TransformStringLiteralValue(transformer, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAnalyzeKeywordTrampoline(PEGTransformer &transformer, @@ -5508,11 +5508,11 @@ void PEGTransformerFactory::InitializeAnalyzeKeywordTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAnalyzeKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformAnalyzeKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExpressionStatementTrampoline(PEGTransformer &transformer, @@ -5527,7 +5527,7 @@ void PEGTransformerFactory::InitializeExpressionStatementTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExpressionStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -5538,7 +5538,7 @@ PEGTransformerFactory::FinalizeExpressionStatementTrampoline(PEGTransformer &tra expression_alias.push_back(process.TakeResult>(i)); } auto result = TransformExpressionStatement(transformer, std::move(expression_alias)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExpressionAliasTrampoline(PEGTransformer &transformer, @@ -5550,16 +5550,16 @@ void PEGTransformerFactory::InitializeExpressionAliasTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExpressionAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIndexNameTrampoline(PEGTransformer &transformer, @@ -5567,10 +5567,10 @@ void PEGTransformerFactory::InitializeIndexNameTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeIndexNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeIndexNameTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.parse_result.Cast().identifier.GetIdentifierName(); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeConstraintNameTrampoline(PEGTransformer &transformer, @@ -5580,12 +5580,12 @@ void PEGTransformerFactory::InitializeConstraintNameTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeConstraintNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); auto result = TransformConstraintName(transformer, col_id_or_string); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSequenceNameTrampoline(PEGTransformer &transformer, @@ -5593,10 +5593,10 @@ void PEGTransformerFactory::InitializeSequenceNameTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSequenceNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.parse_result.Cast().identifier.GetIdentifierName(); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCollationNameTrampoline(PEGTransformer &transformer, @@ -5604,13 +5604,13 @@ void PEGTransformerFactory::InitializeCollationNameTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCollationNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformCollationName(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNumberLiteralTrampoline(PEGTransformer &transformer, @@ -5618,11 +5618,11 @@ void PEGTransformerFactory::InitializeNumberLiteralTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNumberLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNumberLiteral(transformer, process.parse_result); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeStringLiteralTrampoline(PEGTransformer &transformer, @@ -5630,11 +5630,11 @@ void PEGTransformerFactory::InitializeStringLiteralTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformStringLiteral(transformer, process.parse_result); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { @@ -5656,8 +5656,8 @@ void PEGTransformerFactory::InitializeTypeTrampoline(PEGTransformer &transformer process.PushChild({transformer.GetRule("TypeVariations"), list_pr.GetChild(0)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); idx_t dynamic_child_count = 0; auto &dynamic_repeat_opt = list_pr.GetChild(1).Cast(); @@ -5676,7 +5676,7 @@ unique_ptr PEGTransformerFactory::FinalizeTypeTrampoline(P array_bounds = std::move(array_bounds_value); } auto result = TransformType(transformer, std::move(type_variations), array_bounds); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTypeVariationsTrampoline(PEGTransformer &transformer, @@ -5688,16 +5688,16 @@ void PEGTransformerFactory::InitializeTypeVariationsTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTypeVariationsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSimpleTypeTrampoline(PEGTransformer &transformer, @@ -5709,15 +5709,15 @@ void PEGTransformerFactory::InitializeSimpleTypeTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSimpleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCharacterSimpleTypeTrampoline(PEGTransformer &transformer, @@ -5730,7 +5730,7 @@ void PEGTransformerFactory::InitializeCharacterSimpleTypeTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCharacterSimpleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional>> type_modifiers {}; @@ -5738,7 +5738,7 @@ PEGTransformerFactory::FinalizeCharacterSimpleTypeTrampoline(PEGTransformer &tra type_modifiers = process.TakeResult>>(0); } auto result = TransformCharacterSimpleType(transformer, std::move(type_modifiers)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeQualifiedSimpleTypeTrampoline(PEGTransformer &transformer, @@ -5752,7 +5752,7 @@ void PEGTransformerFactory::InitializeQualifiedSimpleTypeTrampoline(PEGTransform process.PushChild({transformer.GetRule("QualifiedTypeName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedSimpleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto qualified_type_name = process.TakeResult(0); @@ -5761,7 +5761,7 @@ PEGTransformerFactory::FinalizeQualifiedSimpleTypeTrampoline(PEGTransformer &tra type_modifiers = process.TakeResult>>(1); } auto result = TransformQualifiedSimpleType(transformer, qualified_type_name, std::move(type_modifiers)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalTypeTrampoline(PEGTransformer &transformer, @@ -5773,15 +5773,15 @@ void PEGTransformerFactory::InitializeIntervalTypeTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalIntervalTrampoline(PEGTransformer &transformer, @@ -5793,16 +5793,16 @@ void PEGTransformerFactory::InitializeIntervalIntervalTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalIntervalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalWithSpecifierTrampoline(PEGTransformer &transformer, @@ -5814,16 +5814,16 @@ void PEGTransformerFactory::InitializeIntervalWithSpecifierTrampoline(PEGTransfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalWithSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalWithRangeSpecifierTrampoline(PEGTransformer &transformer, @@ -5833,12 +5833,12 @@ void PEGTransformerFactory::InitializeIntervalWithRangeSpecifierTrampoline(PEGTr process.PushChild({transformer.GetRule("IntervalToIntervalAsType"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalWithRangeSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto interval_to_interval_as_type = process.TakeResult(0); auto result = TransformIntervalWithRangeSpecifier(transformer, interval_to_interval_as_type); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalWithSimpleSpecifierTrampoline(PEGTransformer &transformer, @@ -5848,12 +5848,12 @@ void PEGTransformerFactory::InitializeIntervalWithSimpleSpecifierTrampoline(PEGT process.PushChild({transformer.GetRule("Interval"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalWithSimpleSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto interval = process.TakeResult(0); auto result = TransformIntervalWithSimpleSpecifier(transformer, interval); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalWithoutSpecifierTrampoline(PEGTransformer &transformer, @@ -5861,11 +5861,11 @@ void PEGTransformerFactory::InitializeIntervalWithoutSpecifierTrampoline(PEGTran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalWithoutSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformIntervalWithoutSpecifier(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalToIntervalAsTypeTrampoline(PEGTransformer &transformer, @@ -5882,7 +5882,7 @@ void PEGTransformerFactory::InitializeIntervalToIntervalAsTypeTrampoline(PEGTran process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalToIntervalAsTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -5893,7 +5893,7 @@ PEGTransformerFactory::FinalizeIntervalToIntervalAsTypeTrampoline(PEGTransformer } else { result = TransformIntervalToIntervalAsType(transformer, choice_result); } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeYearKeywordTrampoline(PEGTransformer &transformer, @@ -5901,10 +5901,10 @@ void PEGTransformerFactory::InitializeYearKeywordTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeYearKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformYearKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMonthKeywordTrampoline(PEGTransformer &transformer, @@ -5912,10 +5912,10 @@ void PEGTransformerFactory::InitializeMonthKeywordTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMonthKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformMonthKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDayKeywordTrampoline(PEGTransformer &transformer, @@ -5923,10 +5923,10 @@ void PEGTransformerFactory::InitializeDayKeywordTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDayKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDayKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeHourKeywordTrampoline(PEGTransformer &transformer, @@ -5934,10 +5934,10 @@ void PEGTransformerFactory::InitializeHourKeywordTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeHourKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformHourKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMinuteKeywordTrampoline(PEGTransformer &transformer, @@ -5945,11 +5945,11 @@ void PEGTransformerFactory::InitializeMinuteKeywordTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMinuteKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformMinuteKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSecondKeywordTrampoline(PEGTransformer &transformer, @@ -5957,11 +5957,11 @@ void PEGTransformerFactory::InitializeSecondKeywordTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSecondKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSecondKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMillisecondKeywordTrampoline(PEGTransformer &transformer, @@ -5969,11 +5969,11 @@ void PEGTransformerFactory::InitializeMillisecondKeywordTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMillisecondKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformMillisecondKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMicrosecondKeywordTrampoline(PEGTransformer &transformer, @@ -5981,11 +5981,11 @@ void PEGTransformerFactory::InitializeMicrosecondKeywordTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMicrosecondKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformMicrosecondKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWeekKeywordTrampoline(PEGTransformer &transformer, @@ -5993,10 +5993,10 @@ void PEGTransformerFactory::InitializeWeekKeywordTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWeekKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformWeekKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeQuarterKeywordTrampoline(PEGTransformer &transformer, @@ -6004,11 +6004,11 @@ void PEGTransformerFactory::InitializeQuarterKeywordTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQuarterKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformQuarterKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDecadeKeywordTrampoline(PEGTransformer &transformer, @@ -6016,11 +6016,11 @@ void PEGTransformerFactory::InitializeDecadeKeywordTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDecadeKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDecadeKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCenturyKeywordTrampoline(PEGTransformer &transformer, @@ -6028,11 +6028,11 @@ void PEGTransformerFactory::InitializeCenturyKeywordTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCenturyKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCenturyKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMillenniumKeywordTrampoline(PEGTransformer &transformer, @@ -6040,11 +6040,11 @@ void PEGTransformerFactory::InitializeMillenniumKeywordTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMillenniumKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformMillenniumKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIntervalTrampoline(PEGTransformer &transformer, @@ -6056,15 +6056,15 @@ void PEGTransformerFactory::InitializeIntervalTrampoline(PEGTransformer &transfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeIntervalTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeIntervalTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIntervalToIntervalTrampoline(PEGTransformer &transformer, @@ -6076,16 +6076,16 @@ void PEGTransformerFactory::InitializeIntervalToIntervalTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalToIntervalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeYearToMonthTrampoline(PEGTransformer &transformer, @@ -6096,12 +6096,12 @@ void PEGTransformerFactory::InitializeYearToMonthTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("YearKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeYearToMonthTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto year_keyword = process.TakeResult(0); auto month_keyword = process.TakeResult(1); auto result = TransformYearToMonth(transformer, year_keyword, month_keyword); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDayToHourTrampoline(PEGTransformer &transformer, @@ -6112,12 +6112,12 @@ void PEGTransformerFactory::InitializeDayToHourTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("DayKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeDayToHourTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDayToHourTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto day_keyword = process.TakeResult(0); auto hour_keyword = process.TakeResult(1); auto result = TransformDayToHour(transformer, day_keyword, hour_keyword); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDayToMinuteTrampoline(PEGTransformer &transformer, @@ -6128,12 +6128,12 @@ void PEGTransformerFactory::InitializeDayToMinuteTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("DayKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDayToMinuteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto day_keyword = process.TakeResult(0); auto minute_keyword = process.TakeResult(1); auto result = TransformDayToMinute(transformer, day_keyword, minute_keyword); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDayToSecondTrampoline(PEGTransformer &transformer, @@ -6144,12 +6144,12 @@ void PEGTransformerFactory::InitializeDayToSecondTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("DayKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDayToSecondTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto day_keyword = process.TakeResult(0); auto second_keyword = process.TakeResult(1); auto result = TransformDayToSecond(transformer, day_keyword, second_keyword); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeHourToMinuteTrampoline(PEGTransformer &transformer, @@ -6160,12 +6160,12 @@ void PEGTransformerFactory::InitializeHourToMinuteTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("HourKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeHourToMinuteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto hour_keyword = process.TakeResult(0); auto minute_keyword = process.TakeResult(1); auto result = TransformHourToMinute(transformer, hour_keyword, minute_keyword); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeHourToSecondTrampoline(PEGTransformer &transformer, @@ -6176,12 +6176,12 @@ void PEGTransformerFactory::InitializeHourToSecondTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("HourKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeHourToSecondTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto hour_keyword = process.TakeResult(0); auto second_keyword = process.TakeResult(1); auto result = TransformHourToSecond(transformer, hour_keyword, second_keyword); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMinuteToSecondTrampoline(PEGTransformer &transformer, @@ -6192,13 +6192,13 @@ void PEGTransformerFactory::InitializeMinuteToSecondTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("MinuteKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMinuteToSecondTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto minute_keyword = process.TakeResult(0); auto second_keyword = process.TakeResult(1); auto result = TransformMinuteToSecond(transformer, minute_keyword, second_keyword); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBitTypeTrampoline(PEGTransformer &transformer, @@ -6219,8 +6219,8 @@ void PEGTransformerFactory::InitializeBitTypeTrampoline(PEGTransformer &transfor } } -unique_ptr PEGTransformerFactory::FinalizeBitTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeBitTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); idx_t dynamic_child_count = 0; auto &dynamic_list_opt = list_pr.GetChild(2).Cast(); @@ -6241,7 +6241,7 @@ unique_ptr PEGTransformerFactory::FinalizeBitTypeTrampolin expression = std::move(expression_value); } auto result = TransformBitType(transformer, has_result, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeGeometryTypeTrampoline(PEGTransformer &transformer, @@ -6254,14 +6254,14 @@ void PEGTransformerFactory::InitializeGeometryTypeTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGeometryTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> expression {}; if (process.child_results[0]) { expression = process.TakeResult>(0); } auto result = TransformGeometryType(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeVariantTypeTrampoline(PEGTransformer &transformer, @@ -6269,10 +6269,10 @@ void PEGTransformerFactory::InitializeVariantTypeTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVariantTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformVariantType(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNumericTypeTrampoline(PEGTransformer &transformer, @@ -6284,15 +6284,15 @@ void PEGTransformerFactory::InitializeNumericTypeTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNumericTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSimpleNumericTypeTrampoline(PEGTransformer &transformer, @@ -6310,12 +6310,12 @@ void PEGTransformerFactory::InitializeSimpleNumericTypeTrampoline(PEGTransformer return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSimpleNumericTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string child; @@ -6337,7 +6337,7 @@ PEGTransformerFactory::FinalizeSimpleNumericTypeTrampoline(PEGTransformer &trans } } auto result = TransformSimpleNumericType(transformer, child); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDecimalNumericTypeTrampoline(PEGTransformer &transformer, @@ -6349,16 +6349,16 @@ void PEGTransformerFactory::InitializeDecimalNumericTypeTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDecimalNumericTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntTypeTrampoline(PEGTransformer &transformer, @@ -6366,10 +6366,10 @@ void PEGTransformerFactory::InitializeIntTypeTrampoline(PEGTransformer &transfor process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeIntTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeIntTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformIntType(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIntegerTypeTrampoline(PEGTransformer &transformer, @@ -6377,10 +6377,10 @@ void PEGTransformerFactory::InitializeIntegerTypeTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntegerTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformIntegerType(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSmallintTypeTrampoline(PEGTransformer &transformer, @@ -6388,10 +6388,10 @@ void PEGTransformerFactory::InitializeSmallintTypeTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSmallintTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSmallintType(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBigintTypeTrampoline(PEGTransformer &transformer, @@ -6399,10 +6399,10 @@ void PEGTransformerFactory::InitializeBigintTypeTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBigintTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformBigintType(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRealTypeTrampoline(PEGTransformer &transformer, @@ -6410,10 +6410,10 @@ void PEGTransformerFactory::InitializeRealTypeTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeRealTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeRealTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformRealType(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBooleanTypeTrampoline(PEGTransformer &transformer, @@ -6421,10 +6421,10 @@ void PEGTransformerFactory::InitializeBooleanTypeTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBooleanTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformBooleanType(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDoubleTypeTrampoline(PEGTransformer &transformer, @@ -6432,10 +6432,10 @@ void PEGTransformerFactory::InitializeDoubleTypeTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDoubleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDoubleType(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFloatTypeTrampoline(PEGTransformer &transformer, @@ -6443,8 +6443,8 @@ void PEGTransformerFactory::InitializeFloatTypeTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeFloatTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeFloatTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); optional> number_literal {}; auto &number_literal_opt = list_pr.GetChild(1).Cast(); @@ -6452,7 +6452,7 @@ PEGTransformerFactory::FinalizeFloatTypeTrampoline(PEGTransformer &transformer, number_literal = TransformNumberLiteral(transformer, ExtractResultFromParens(number_literal_opt.GetResult())); } auto result = TransformFloatType(transformer, std::move(number_literal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDecimalTypeTrampoline(PEGTransformer &transformer, @@ -6465,14 +6465,14 @@ void PEGTransformerFactory::InitializeDecimalTypeTrampoline(PEGTransformer &tran } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDecimalTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional>> type_modifiers {}; if (process.child_results[0]) { type_modifiers = process.TakeResult>>(0); } auto result = TransformDecimalType(transformer, std::move(type_modifiers)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDecTypeTrampoline(PEGTransformer &transformer, @@ -6485,14 +6485,14 @@ void PEGTransformerFactory::InitializeDecTypeTrampoline(PEGTransformer &transfor } } -unique_ptr PEGTransformerFactory::FinalizeDecTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDecTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { optional>> type_modifiers {}; if (process.child_results[0]) { type_modifiers = process.TakeResult>>(0); } auto result = TransformDecType(transformer, std::move(type_modifiers)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNumericModTypeTrampoline(PEGTransformer &transformer, @@ -6505,7 +6505,7 @@ void PEGTransformerFactory::InitializeNumericModTypeTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNumericModTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional>> type_modifiers {}; @@ -6513,7 +6513,7 @@ PEGTransformerFactory::FinalizeNumericModTypeTrampoline(PEGTransformer &transfor type_modifiers = process.TakeResult>>(0); } auto result = TransformNumericModType(transformer, std::move(type_modifiers)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeQualifiedTypeNameTrampoline(PEGTransformer &transformer, @@ -6525,16 +6525,16 @@ void PEGTransformerFactory::InitializeQualifiedTypeNameTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedTypeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTypeNameAsQualifiedNameTrampoline(PEGTransformer &transformer, @@ -6542,13 +6542,13 @@ void PEGTransformerFactory::InitializeTypeNameAsQualifiedNameTrampoline(PEGTrans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTypeNameAsQualifiedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto type_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformTypeNameAsQualifiedName(transformer, type_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCatalogReservedSchemaTypeNameTrampoline(PEGTransformer &transformer, @@ -6566,7 +6566,7 @@ void PEGTransformerFactory::InitializeCatalogReservedSchemaTypeNameTrampoline(PE process.PushChild({transformer.GetRule("CatalogQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogReservedSchemaTypeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -6581,7 +6581,7 @@ PEGTransformerFactory::FinalizeCatalogReservedSchemaTypeNameTrampoline(PEGTransf auto reserved_type_name = list_pr.GetChild(2).Cast().identifier; auto result = TransformCatalogReservedSchemaTypeName(transformer, catalog_qualification, reserved_schema_qualification, reserved_type_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSchemaReservedTypeNameTrampoline(PEGTransformer &transformer, @@ -6591,14 +6591,14 @@ void PEGTransformerFactory::InitializeSchemaReservedTypeNameTrampoline(PEGTransf process.PushChild({transformer.GetRule("SchemaQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaReservedTypeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto schema_qualification = process.TakeResult(0); auto reserved_type_name = list_pr.GetChild(1).Cast().identifier; auto result = TransformSchemaReservedTypeName(transformer, schema_qualification, reserved_type_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTypeModifiersTrampoline(PEGTransformer &transformer, @@ -6619,7 +6619,7 @@ void PEGTransformerFactory::InitializeTypeModifiersTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTypeModifiersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -6639,7 +6639,7 @@ PEGTransformerFactory::FinalizeTypeModifiersTrampoline(PEGTransformer &transform expression = std::move(expression_value); } auto result = TransformTypeModifiers(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeRowTypeTrampoline(PEGTransformer &transformer, @@ -6652,14 +6652,14 @@ void PEGTransformerFactory::InitializeRowTypeTrampoline(PEGTransformer &transfor } } -unique_ptr PEGTransformerFactory::FinalizeRowTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeRowTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { optional> col_id_type_list {}; if (process.child_results[0]) { col_id_type_list = process.TakeResult>(0); } auto result = TransformRowType(transformer, col_id_type_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetofTypeTrampoline(PEGTransformer &transformer, @@ -6669,11 +6669,11 @@ void PEGTransformerFactory::InitializeSetofTypeTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("Type"), list_pr.GetChild(1)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeSetofTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeSetofTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto type = process.TakeResult(0); auto result = TransformSetofType(transformer, type); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUnionTypeTrampoline(PEGTransformer &transformer, @@ -6683,11 +6683,11 @@ void PEGTransformerFactory::InitializeUnionTypeTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("ColIdTypeList"), list_pr.GetChild(1)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeUnionTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeUnionTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto col_id_type_list = process.TakeResult>(0); auto result = TransformUnionType(transformer, col_id_type_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColIdTypeListTrampoline(PEGTransformer &transformer, @@ -6702,7 +6702,7 @@ void PEGTransformerFactory::InitializeColIdTypeListTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColIdTypeListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -6713,7 +6713,7 @@ PEGTransformerFactory::FinalizeColIdTypeListTrampoline(PEGTransformer &transform col_id_type.push_back(process.TakeResult>(i)); } auto result = TransformColIdTypeList(transformer, col_id_type); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeMapTypeTrampoline(PEGTransformer &transformer, @@ -6734,8 +6734,8 @@ void PEGTransformerFactory::InitializeMapTypeTrampoline(PEGTransformer &transfor } } -unique_ptr PEGTransformerFactory::FinalizeMapTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeMapTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); idx_t dynamic_child_count = 0; auto &dynamic_list_opt = list_pr.GetChild(1).Cast(); @@ -6753,7 +6753,7 @@ unique_ptr PEGTransformerFactory::FinalizeMapTypeTrampolin type = std::move(type_value); } auto result = TransformMapType(transformer, type); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTupleTypeTrampoline(PEGTransformer &transformer, @@ -6768,8 +6768,8 @@ void PEGTransformerFactory::InitializeTupleTypeTrampoline(PEGTransformer &transf } } -unique_ptr -PEGTransformerFactory::FinalizeTupleTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTupleTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(ExtractResultFromParens(list_pr.GetChild(1))); auto dynamic_child_count = dynamic_list_items.size(); @@ -6778,7 +6778,7 @@ PEGTransformerFactory::FinalizeTupleTypeTrampoline(PEGTransformer &transformer, type.push_back(process.TakeResult(i)); } auto result = TransformTupleType(transformer, type); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColIdTypeTrampoline(PEGTransformer &transformer, @@ -6789,12 +6789,12 @@ void PEGTransformerFactory::InitializeColIdTypeTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(0)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeColIdTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeColIdTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto type = process.TakeResult(1); auto result = TransformColIdType(transformer, col_id, type); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeArrayBoundsTrampoline(PEGTransformer &transformer, @@ -6806,15 +6806,15 @@ void PEGTransformerFactory::InitializeArrayBoundsTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeArrayBoundsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeArrayKeywordTrampoline(PEGTransformer &transformer, @@ -6822,10 +6822,10 @@ void PEGTransformerFactory::InitializeArrayKeywordTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeArrayKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformArrayKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeArrayKeywordWithBoundsTrampoline(PEGTransformer &transformer, @@ -6835,12 +6835,12 @@ void PEGTransformerFactory::InitializeArrayKeywordWithBoundsTrampoline(PEGTransf process.PushChild({transformer.GetRule("SquareBracketsArray"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeArrayKeywordWithBoundsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto square_brackets_array = process.TakeResult(0); auto result = TransformArrayKeywordWithBounds(transformer, square_brackets_array); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSquareBracketsArrayTrampoline(PEGTransformer &transformer, @@ -6853,7 +6853,7 @@ void PEGTransformerFactory::InitializeSquareBracketsArrayTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSquareBracketsArrayTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> expression {}; @@ -6861,7 +6861,7 @@ PEGTransformerFactory::FinalizeSquareBracketsArrayTrampoline(PEGTransformer &tra expression = process.TakeResult>(0); } auto result = TransformSquareBracketsArray(transformer, std::move(expression)); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTimeTypeTrampoline(PEGTransformer &transformer, @@ -6879,8 +6879,8 @@ void PEGTransformerFactory::InitializeTimeTypeTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("TimeOrTimestamp"), list_pr.GetChild(0)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeTimeTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTimeTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto time_or_timestamp = process.TakeResult(0); optional>> type_modifiers {}; if (process.child_results[1]) { @@ -6891,7 +6891,7 @@ unique_ptr PEGTransformerFactory::FinalizeTimeTypeTrampoli time_zone = process.TakeResult(2); } auto result = TransformTimeType(transformer, time_or_timestamp, std::move(type_modifiers), time_zone); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTimeOrTimestampTrampoline(PEGTransformer &transformer, @@ -6903,16 +6903,16 @@ void PEGTransformerFactory::InitializeTimeOrTimestampTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTimeOrTimestampTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTimeTypeIdTrampoline(PEGTransformer &transformer, @@ -6920,10 +6920,10 @@ void PEGTransformerFactory::InitializeTimeTypeIdTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTimeTypeIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTimeTypeId(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTimestampTypeIdTrampoline(PEGTransformer &transformer, @@ -6931,11 +6931,11 @@ void PEGTransformerFactory::InitializeTimestampTypeIdTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTimestampTypeIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTimestampTypeId(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTimeZoneTrampoline(PEGTransformer &transformer, @@ -6945,11 +6945,11 @@ void PEGTransformerFactory::InitializeTimeZoneTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("WithOrWithout"), list_pr.GetChild(0)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeTimeZoneTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTimeZoneTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto with_or_without = process.TakeResult(0); auto result = TransformTimeZone(transformer, with_or_without); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWithOrWithoutTrampoline(PEGTransformer &transformer, @@ -6961,16 +6961,16 @@ void PEGTransformerFactory::InitializeWithOrWithoutTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithOrWithoutTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWithRuleTrampoline(PEGTransformer &transformer, @@ -6978,10 +6978,10 @@ void PEGTransformerFactory::InitializeWithRuleTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeWithRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeWithRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformWithRule(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWithoutRuleTrampoline(PEGTransformer &transformer, @@ -6989,10 +6989,10 @@ void PEGTransformerFactory::InitializeWithoutRuleTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithoutRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformWithoutRule(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeConnectStatementTrampoline(PEGTransformer &transformer, @@ -7005,7 +7005,7 @@ void PEGTransformerFactory::InitializeConnectStatementTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeConnectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> session_target {}; @@ -7013,7 +7013,7 @@ PEGTransformerFactory::FinalizeConnectStatementTrampoline(PEGTransformer &transf session_target = process.TakeResult>(0); } auto result = TransformConnectStatement(transformer, std::move(session_target)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDisconnectStatementTrampoline(PEGTransformer &transformer, @@ -7021,11 +7021,11 @@ void PEGTransformerFactory::InitializeDisconnectStatementTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDisconnectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDisconnectStatement(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSessionTargetTrampoline(PEGTransformer &transformer, @@ -7037,16 +7037,16 @@ void PEGTransformerFactory::InitializeSessionTargetTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSessionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLocalSessionTargetTrampoline(PEGTransformer &transformer, @@ -7054,11 +7054,11 @@ void PEGTransformerFactory::InitializeLocalSessionTargetTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLocalSessionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformLocalSessionTarget(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeStringSessionTargetTrampoline(PEGTransformer &transformer, @@ -7071,7 +7071,7 @@ void PEGTransformerFactory::InitializeStringSessionTargetTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStringSessionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7081,7 +7081,7 @@ PEGTransformerFactory::FinalizeStringSessionTargetTrampoline(PEGTransformer &tra generic_copy_option_list = process.TakeResult>(0); } auto result = TransformStringSessionTarget(transformer, string_literal, generic_copy_option_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCatalogSessionTargetTrampoline(PEGTransformer &transformer, @@ -7089,13 +7089,13 @@ void PEGTransformerFactory::InitializeCatalogSessionTargetTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogSessionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto catalog_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformCatalogSessionTarget(transformer, catalog_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyStatementTrampoline(PEGTransformer &transformer, @@ -7105,12 +7105,12 @@ void PEGTransformerFactory::InitializeCopyStatementTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("CopyVariations"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto copy_variations = process.TakeResult>(0); auto result = TransformCopyStatement(transformer, std::move(copy_variations)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyVariationsTrampoline(PEGTransformer &transformer, @@ -7122,16 +7122,16 @@ void PEGTransformerFactory::InitializeCopyVariationsTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyVariationsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyTableTrampoline(PEGTransformer &transformer, @@ -7151,8 +7151,8 @@ void PEGTransformerFactory::InitializeCopyTableTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeCopyTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeCopyTableTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); optional> insert_column_list {}; if (process.child_results[1]) { @@ -7166,7 +7166,7 @@ PEGTransformerFactory::FinalizeCopyTableTrampoline(PEGTransformer &transformer, } auto result = TransformCopyTable(transformer, std::move(base_table_name), insert_column_list, from_or_to, std::move(copy_file_name), copy_options); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFromOrToTrampoline(PEGTransformer &transformer, @@ -7178,15 +7178,15 @@ void PEGTransformerFactory::InitializeFromOrToTrampoline(PEGTransformer &transfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeFromOrToTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeFromOrToTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCopyFromTrampoline(PEGTransformer &transformer, @@ -7194,10 +7194,10 @@ void PEGTransformerFactory::InitializeCopyFromTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeCopyFromTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeCopyFromTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformCopyFrom(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCopyToTrampoline(PEGTransformer &transformer, @@ -7205,10 +7205,10 @@ void PEGTransformerFactory::InitializeCopyToTrampoline(PEGTransformer &transform process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeCopyToTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeCopyToTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformCopyTo(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCopySelectTrampoline(PEGTransformer &transformer, @@ -7224,7 +7224,7 @@ void PEGTransformerFactory::InitializeCopySelectTrampoline(PEGTransformer &trans 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopySelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto copy_file_name = process.TakeResult>(1); @@ -7234,7 +7234,7 @@ PEGTransformerFactory::FinalizeCopySelectTrampoline(PEGTransformer &transformer, } auto result = TransformCopySelect(transformer, std::move(select_statement_internal), std::move(copy_file_name), copy_options); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyFileNameTrampoline(PEGTransformer &transformer, @@ -7246,15 +7246,15 @@ void PEGTransformerFactory::InitializeCopyFileNameTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFileNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyFileNameExpressionTrampoline(PEGTransformer &transformer, @@ -7266,16 +7266,16 @@ void PEGTransformerFactory::InitializeCopyFileNameExpressionTrampoline(PEGTransf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFileNameExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyFileNameStringLiteralTrampoline(PEGTransformer &transformer, @@ -7283,13 +7283,13 @@ void PEGTransformerFactory::InitializeCopyFileNameStringLiteralTrampoline(PEGTra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFileNameStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(0)); auto result = TransformCopyFileNameStringLiteral(transformer, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyFileNameIdentifierTrampoline(PEGTransformer &transformer, @@ -7297,13 +7297,13 @@ void PEGTransformerFactory::InitializeCopyFileNameIdentifierTrampoline(PEGTransf process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFileNameIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformCopyFileNameIdentifier(transformer, identifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyFileNameIdentifierColIdTrampoline(PEGTransformer &transformer, @@ -7313,12 +7313,12 @@ void PEGTransformerFactory::InitializeCopyFileNameIdentifierColIdTrampoline(PEGT process.PushChild({transformer.GetRule("IdentifierColId"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFileNameIdentifierColIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto identifier_col_id = process.TakeResult(0); auto result = TransformCopyFileNameIdentifierColId(transformer, identifier_col_id); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIdentifierColIdTrampoline(PEGTransformer &transformer, @@ -7334,7 +7334,7 @@ void PEGTransformerFactory::InitializeIdentifierColIdTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIdentifierColIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7347,7 +7347,7 @@ PEGTransformerFactory::FinalizeIdentifierColIdTrampoline(PEGTransformer &transfo copy_file_name_suffix.push_back(process.TakeResult(i)); } auto result = TransformIdentifierColId(transformer, identifier, copy_file_name_suffix); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCopyFileNameSuffixTrampoline(PEGTransformer &transformer, @@ -7357,11 +7357,11 @@ void PEGTransformerFactory::InitializeCopyFileNameSuffixTrampoline(PEGTransforme process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFileNameSuffixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCopyOptionsTrampoline(PEGTransformer &transformer, @@ -7371,7 +7371,7 @@ void PEGTransformerFactory::InitializeCopyOptionsTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("CopyOptionList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -7379,7 +7379,7 @@ PEGTransformerFactory::FinalizeCopyOptionsTrampoline(PEGTransformer &transformer has_result = has_result_opt.HasResult(); auto copy_option_list = process.TakeResult>(0); auto result = TransformCopyOptions(transformer, has_result, copy_option_list); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeCopyOptionListTrampoline(PEGTransformer &transformer, @@ -7391,16 +7391,16 @@ void PEGTransformerFactory::InitializeCopyOptionListTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeSpecializedOptionListTrampoline(PEGTransformer &transformer, @@ -7424,7 +7424,7 @@ void PEGTransformerFactory::InitializeSpecializedOptionListTrampoline(PEGTransfo process.PushChild({transformer.GetRule("SpecializedOption"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSpecializedOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7445,7 +7445,7 @@ PEGTransformerFactory::FinalizeSpecializedOptionListTrampoline(PEGTransformer &t specialized_option_tail = std::move(specialized_option_tail_value); } auto result = TransformSpecializedOptionList(transformer, specialized_option, specialized_option_tail); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeSpecializedOptionTailTrampoline(PEGTransformer &transformer, @@ -7455,7 +7455,7 @@ void PEGTransformerFactory::InitializeSpecializedOptionTailTrampoline(PEGTransfo process.PushChild({transformer.GetRule("SpecializedOption"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSpecializedOptionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7464,7 +7464,7 @@ PEGTransformerFactory::FinalizeSpecializedOptionTailTrampoline(PEGTransformer &t has_result = has_result_opt.HasResult(); auto specialized_option = process.TakeResult(0); auto result = TransformSpecializedOptionTail(transformer, has_result, specialized_option); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSpecializedOptionTrampoline(PEGTransformer &transformer, @@ -7476,16 +7476,16 @@ void PEGTransformerFactory::InitializeSpecializedOptionTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSpecializedOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSingleOptionTrampoline(PEGTransformer &transformer, @@ -7497,15 +7497,15 @@ void PEGTransformerFactory::InitializeSingleOptionTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSingleOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBinaryOptionTrampoline(PEGTransformer &transformer, @@ -7513,10 +7513,10 @@ void PEGTransformerFactory::InitializeBinaryOptionTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBinaryOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformBinaryOption(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFreezeOptionTrampoline(PEGTransformer &transformer, @@ -7524,10 +7524,10 @@ void PEGTransformerFactory::InitializeFreezeOptionTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFreezeOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformFreezeOption(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOidsOptionTrampoline(PEGTransformer &transformer, @@ -7535,10 +7535,10 @@ void PEGTransformerFactory::InitializeOidsOptionTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOidsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOidsOption(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCsvOptionTrampoline(PEGTransformer &transformer, @@ -7546,10 +7546,10 @@ void PEGTransformerFactory::InitializeCsvOptionTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeCsvOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeCsvOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformCsvOption(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeHeaderOptionTrampoline(PEGTransformer &transformer, @@ -7557,10 +7557,10 @@ void PEGTransformerFactory::InitializeHeaderOptionTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeHeaderOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformHeaderOption(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNullAsOptionTrampoline(PEGTransformer &transformer, @@ -7568,7 +7568,7 @@ void PEGTransformerFactory::InitializeNullAsOptionTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNullAsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -7576,7 +7576,7 @@ PEGTransformerFactory::FinalizeNullAsOptionTrampoline(PEGTransformer &transforme has_result = has_result_opt.HasResult(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(2)); auto result = TransformNullAsOption(transformer, has_result, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDelimiterAsOptionTrampoline(PEGTransformer &transformer, @@ -7584,7 +7584,7 @@ void PEGTransformerFactory::InitializeDelimiterAsOptionTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDelimiterAsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7593,7 +7593,7 @@ PEGTransformerFactory::FinalizeDelimiterAsOptionTrampoline(PEGTransformer &trans has_result = has_result_opt.HasResult(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(2)); auto result = TransformDelimiterAsOption(transformer, has_result, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeQuoteAsOptionTrampoline(PEGTransformer &transformer, @@ -7601,7 +7601,7 @@ void PEGTransformerFactory::InitializeQuoteAsOptionTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQuoteAsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7610,7 +7610,7 @@ PEGTransformerFactory::FinalizeQuoteAsOptionTrampoline(PEGTransformer &transform has_result = has_result_opt.HasResult(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(2)); auto result = TransformQuoteAsOption(transformer, has_result, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeEscapeAsOptionTrampoline(PEGTransformer &transformer, @@ -7618,7 +7618,7 @@ void PEGTransformerFactory::InitializeEscapeAsOptionTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEscapeAsOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7627,7 +7627,7 @@ PEGTransformerFactory::FinalizeEscapeAsOptionTrampoline(PEGTransformer &transfor has_result = has_result_opt.HasResult(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(2)); auto result = TransformEscapeAsOption(transformer, has_result, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeEncodingOptionTrampoline(PEGTransformer &transformer, @@ -7635,13 +7635,13 @@ void PEGTransformerFactory::InitializeEncodingOptionTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEncodingOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(1)); auto result = TransformEncodingOption(transformer, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeForceQuoteOptionTrampoline(PEGTransformer &transformer, @@ -7655,7 +7655,7 @@ void PEGTransformerFactory::InitializeForceQuoteOptionTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForceQuoteOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional force_quote {}; @@ -7664,7 +7664,7 @@ PEGTransformerFactory::FinalizeForceQuoteOptionTrampoline(PEGTransformer &transf } auto star_symbol_column_list = process.TakeResult>(1); auto result = TransformForceQuoteOption(transformer, force_quote, star_symbol_column_list); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeStarSymbolColumnListTrampoline(PEGTransformer &transformer, @@ -7675,23 +7675,23 @@ void PEGTransformerFactory::InitializeStarSymbolColumnListTrampoline(PEGTransfor process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (!has_transform_process && (choice_result.name == "StarSymbol")) { + if (!has_transform_process && (choice_result.Name() == "StarSymbol")) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStarSymbolColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { vector result {}; if (process.child_results[0]) { result = process.TakeResult>(0); } - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeForceQuoteTrampoline(PEGTransformer &transformer, @@ -7699,10 +7699,10 @@ void PEGTransformerFactory::InitializeForceQuoteTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForceQuoteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformForceQuote(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePartitionByOptionTrampoline(PEGTransformer &transformer, @@ -7712,12 +7712,12 @@ void PEGTransformerFactory::InitializePartitionByOptionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("PartitionByColumnList"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePartitionByOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto partition_by_column_list = process.TakeResult>(0); auto result = TransformPartitionByOption(transformer, partition_by_column_list); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePartitionByColumnListTrampoline(PEGTransformer &transformer, @@ -7729,16 +7729,16 @@ void PEGTransformerFactory::InitializePartitionByColumnListTrampoline(PEGTransfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeStarPartitionByColumnListTrampoline(PEGTransformer &transformer, @@ -7746,11 +7746,11 @@ void PEGTransformerFactory::InitializeStarPartitionByColumnListTrampoline(PEGTra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStarPartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformStarPartitionByColumnList(transformer); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeParenthesizedPartitionByColumnListTrampoline(PEGTransformer &transformer, @@ -7760,12 +7760,12 @@ void PEGTransformerFactory::InitializeParenthesizedPartitionByColumnListTrampoli process.PushChild({transformer.GetRule("ColumnList"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeParenthesizedPartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto column_list = process.TakeResult>(0); auto result = TransformParenthesizedPartitionByColumnList(transformer, column_list); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeSinglePartitionByColumnListTrampoline(PEGTransformer &transformer, @@ -7775,12 +7775,12 @@ void PEGTransformerFactory::InitializeSinglePartitionByColumnListTrampoline(PEGT process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSinglePartitionByColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformSinglePartitionByColumnList(transformer, col_id); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeForceNullOptionTrampoline(PEGTransformer &transformer, @@ -7794,7 +7794,7 @@ void PEGTransformerFactory::InitializeForceNullOptionTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForceNullOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional force_not_null {}; @@ -7803,7 +7803,7 @@ PEGTransformerFactory::FinalizeForceNullOptionTrampoline(PEGTransformer &transfo } auto column_list = process.TakeResult>(1); auto result = TransformForceNullOption(transformer, force_not_null, column_list); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeForceNotNullTrampoline(PEGTransformer &transformer, @@ -7811,10 +7811,10 @@ void PEGTransformerFactory::InitializeForceNotNullTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForceNotNullTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformForceNotNull(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCopyGenericOptionListTrampoline(PEGTransformer &transformer, @@ -7829,7 +7829,7 @@ void PEGTransformerFactory::InitializeCopyGenericOptionListTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyGenericOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7840,7 +7840,7 @@ PEGTransformerFactory::FinalizeCopyGenericOptionListTrampoline(PEGTransformer &t copy_generic_option.push_back(process.TakeResult(i)); } auto result = TransformCopyGenericOptionList(transformer, copy_generic_option); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeCopyGenericOptionTrampoline(PEGTransformer &transformer, @@ -7852,16 +7852,16 @@ void PEGTransformerFactory::InitializeCopyGenericOptionTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyGenericOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOrderByCopyOptionTrampoline(PEGTransformer &transformer, @@ -7875,7 +7875,7 @@ void PEGTransformerFactory::InitializeOrderByCopyOptionTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOrderByCopyOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional generic_copy_option_value {}; @@ -7883,7 +7883,7 @@ PEGTransformerFactory::FinalizeOrderByCopyOptionTrampoline(PEGTransformer &trans generic_copy_option_value = process.TakeResult(0); } auto result = TransformOrderByCopyOption(transformer, std::move(generic_copy_option_value)); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePartitionedByCopyOptionTrampoline(PEGTransformer &transformer, @@ -7897,7 +7897,7 @@ void PEGTransformerFactory::InitializePartitionedByCopyOptionTrampoline(PEGTrans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePartitionedByCopyOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional generic_copy_option_value {}; @@ -7905,7 +7905,7 @@ PEGTransformerFactory::FinalizePartitionedByCopyOptionTrampoline(PEGTransformer generic_copy_option_value = process.TakeResult(0); } auto result = TransformPartitionedByCopyOption(transformer, std::move(generic_copy_option_value)); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGenericCopyOptionListTrampoline(PEGTransformer &transformer, @@ -7920,7 +7920,7 @@ void PEGTransformerFactory::InitializeGenericCopyOptionListTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGenericCopyOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7931,7 +7931,7 @@ PEGTransformerFactory::FinalizeGenericCopyOptionListTrampoline(PEGTransformer &t generic_copy_option.push_back(process.TakeResult(i)); } auto result = TransformGenericCopyOptionList(transformer, generic_copy_option); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeGenericCopyOptionTrampoline(PEGTransformer &transformer, @@ -7945,7 +7945,7 @@ void PEGTransformerFactory::InitializeGenericCopyOptionTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGenericCopyOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -7955,7 +7955,7 @@ PEGTransformerFactory::FinalizeGenericCopyOptionTrampoline(PEGTransformer &trans generic_copy_option_value = process.TakeResult(0); } auto result = TransformGenericCopyOption(transformer, copy_option_name, std::move(generic_copy_option_value)); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGenericCopyOptionValueTrampoline(PEGTransformer &transformer, @@ -7967,16 +7967,16 @@ void PEGTransformerFactory::InitializeGenericCopyOptionValueTrampoline(PEGTransf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGenericCopyOptionValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeGenericCopyOptionOrderListTrampoline(PEGTransformer &transformer, @@ -7986,13 +7986,13 @@ void PEGTransformerFactory::InitializeGenericCopyOptionOrderListTrampoline(PEGTr process.PushChild({transformer.GetRule("GenericCopyOptionParenthesizedExpressionList"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGenericCopyOptionOrderListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto generic_copy_option_parenthesized_expression_list = process.TakeResult>(0); auto result = TransformGenericCopyOptionOrderList(transformer, std::move(generic_copy_option_parenthesized_expression_list)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeGenericCopyOptionExpressionTrampoline(PEGTransformer &transformer, @@ -8002,12 +8002,12 @@ void PEGTransformerFactory::InitializeGenericCopyOptionExpressionTrampoline(PEGT process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGenericCopyOptionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformGenericCopyOptionExpression(transformer, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeGenericCopyOptionParenthesizedExpressionListTrampoline( @@ -8017,12 +8017,12 @@ void PEGTransformerFactory::InitializeGenericCopyOptionParenthesizedExpressionLi process.PushChild({transformer.GetRule("OrderByExpressionList"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr PEGTransformerFactory::FinalizeGenericCopyOptionParenthesizedExpressionListTrampoline( +arena_ptr PEGTransformerFactory::FinalizeGenericCopyOptionParenthesizedExpressionListTrampoline( PEGTransformer &transformer, GeneratedTransformProcess &process) { auto order_by_expression_list = process.TakeResult>(0); auto result = TransformGenericCopyOptionParenthesizedExpressionList(transformer, std::move(order_by_expression_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyFromDatabaseTrampoline(PEGTransformer &transformer, @@ -8034,16 +8034,16 @@ void PEGTransformerFactory::InitializeCopyFromDatabaseTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFromDatabaseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyFromDatabaseWithFlagTrampoline(PEGTransformer &transformer, @@ -8055,14 +8055,14 @@ void PEGTransformerFactory::InitializeCopyFromDatabaseWithFlagTrampoline(PEGTran process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFromDatabaseWithFlagTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto col_id_1 = process.TakeResult(1); auto copy_database_flag = process.TakeResult(2); auto result = TransformCopyFromDatabaseWithFlag(transformer, col_id, col_id_1, copy_database_flag); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyFromDatabaseWithoutFlagTrampoline(PEGTransformer &transformer, @@ -8073,13 +8073,13 @@ void PEGTransformerFactory::InitializeCopyFromDatabaseWithoutFlagTrampoline(PEGT process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyFromDatabaseWithoutFlagTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto col_id_1 = process.TakeResult(1); auto result = TransformCopyFromDatabaseWithoutFlag(transformer, col_id, col_id_1); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCopyDatabaseFlagTrampoline(PEGTransformer &transformer, @@ -8089,12 +8089,12 @@ void PEGTransformerFactory::InitializeCopyDatabaseFlagTrampoline(PEGTransformer process.PushChild({transformer.GetRule("SchemaOrData"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopyDatabaseFlagTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto schema_or_data = process.TakeResult(0); auto result = TransformCopyDatabaseFlag(transformer, schema_or_data); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSchemaOrDataTrampoline(PEGTransformer &transformer, @@ -8106,15 +8106,15 @@ void PEGTransformerFactory::InitializeSchemaOrDataTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaOrDataTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCopySchemaTrampoline(PEGTransformer &transformer, @@ -8122,10 +8122,10 @@ void PEGTransformerFactory::InitializeCopySchemaTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCopySchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCopySchema(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCopyDataTrampoline(PEGTransformer &transformer, @@ -8133,10 +8133,10 @@ void PEGTransformerFactory::InitializeCopyDataTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeCopyDataTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeCopyDataTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformCopyData(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCreateIndexStmtTrampoline(PEGTransformer &transformer, @@ -8173,7 +8173,7 @@ void PEGTransformerFactory::InitializeCreateIndexStmtTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateIndexStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -8213,7 +8213,7 @@ PEGTransformerFactory::FinalizeCreateIndexStmtTrampoline(PEGTransformer &transfo auto result = TransformCreateIndexStmt(transformer, unique_index, if_not_exists, index_name, std::move(base_table_name), index_type, std::move(index_element), std::move(with_list), std::move(where_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWithListTrampoline(PEGTransformer &transformer, @@ -8223,11 +8223,11 @@ void PEGTransformerFactory::InitializeWithListTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("RelOptionOrOids"), list_pr.GetChild(1)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeWithListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeWithListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto rel_option_or_oids = process.TakeResult>>(0); auto result = TransformWithList(transformer, std::move(rel_option_or_oids)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeRelOptionOrOidsTrampoline(PEGTransformer &transformer, @@ -8239,16 +8239,16 @@ void PEGTransformerFactory::InitializeRelOptionOrOidsTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRelOptionOrOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>>(0); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeRelOptionListTrampoline(PEGTransformer &transformer, @@ -8263,7 +8263,7 @@ void PEGTransformerFactory::InitializeRelOptionListTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRelOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -8274,7 +8274,7 @@ PEGTransformerFactory::FinalizeRelOptionListTrampoline(PEGTransformer &transform rel_option.push_back(process.TakeResult>>(i)); } auto result = TransformRelOptionList(transformer, std::move(rel_option)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { @@ -8283,11 +8283,11 @@ void PEGTransformerFactory::InitializeOidsTrampoline(PEGTransformer &transformer process.PushChild({transformer.GetRule("WithOrWithoutOids"), list_pr.GetChild(0)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeOidsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeOidsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto with_or_without_oids = process.TakeResult(0); auto result = TransformOids(transformer, with_or_without_oids); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeWithOrWithoutOidsTrampoline(PEGTransformer &transformer, @@ -8299,16 +8299,16 @@ void PEGTransformerFactory::InitializeWithOrWithoutOidsTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithOrWithoutOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWithOidsTrampoline(PEGTransformer &transformer, @@ -8316,10 +8316,10 @@ void PEGTransformerFactory::InitializeWithOidsTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeWithOidsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeWithOidsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformWithOids(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWithoutOidsTrampoline(PEGTransformer &transformer, @@ -8327,10 +8327,10 @@ void PEGTransformerFactory::InitializeWithoutOidsTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithoutOidsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformWithoutOids(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIndexElementTrampoline(PEGTransformer &transformer, @@ -8348,7 +8348,7 @@ void PEGTransformerFactory::InitializeIndexElementTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIndexElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); optional desc_or_asc {}; @@ -8360,7 +8360,7 @@ PEGTransformerFactory::FinalizeIndexElementTrampoline(PEGTransformer &transforme nulls_first_or_last = process.TakeResult(2); } auto result = TransformIndexElement(transformer, std::move(expression), desc_or_asc, nulls_first_or_last); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUniqueIndexTrampoline(PEGTransformer &transformer, @@ -8368,10 +8368,10 @@ void PEGTransformerFactory::InitializeUniqueIndexTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUniqueIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformUniqueIndex(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIndexTypeTrampoline(PEGTransformer &transformer, @@ -8379,12 +8379,12 @@ void PEGTransformerFactory::InitializeIndexTypeTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeIndexTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeIndexTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(1).Cast().identifier; auto result = TransformIndexType(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRelOptionTrampoline(PEGTransformer &transformer, @@ -8398,15 +8398,15 @@ void PEGTransformerFactory::InitializeRelOptionTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("RelOptionName"), list_pr.GetChild(0)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeRelOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeRelOptionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto rel_option_name = process.TakeResult(0); optional> rel_option_argument_opt {}; if (process.child_results[1]) { rel_option_argument_opt = process.TakeResult>(1); } auto result = TransformRelOption(transformer, rel_option_name, std::move(rel_option_argument_opt)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeRelOptionNameTrampoline(PEGTransformer &transformer, @@ -8417,11 +8417,12 @@ void PEGTransformerFactory::InitializeRelOptionNameTrampoline(PEGTransformer &tr process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (choice_result.name.empty() || choice_result.type == ParseResultType::IDENTIFIER || + if (choice_result.Name().empty() || choice_result.type == ParseResultType::IDENTIFIER || choice_result.type == ParseResultType::KEYWORD || choice_result.type == ParseResultType::STRING) { return; } - if (!has_transform_process && (choice_result.name == "DottedColLabel" || choice_result.name == "StringLiteral")) { + if (!has_transform_process && + (choice_result.Name() == "DottedColLabel" || choice_result.Name() == "StringLiteral")) { return; } if (!has_transform_process && @@ -8431,12 +8432,12 @@ void PEGTransformerFactory::InitializeRelOptionNameTrampoline(PEGTransformer &tr return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRelOptionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string child; @@ -8458,7 +8459,7 @@ PEGTransformerFactory::FinalizeRelOptionNameTrampoline(PEGTransformer &transform } } auto result = TransformRelOptionName(transformer, child); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDottedColLabelTrampoline(PEGTransformer &transformer, @@ -8481,7 +8482,7 @@ void PEGTransformerFactory::InitializeDottedColLabelTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("ColLabel"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDottedColLabelTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -8502,7 +8503,7 @@ PEGTransformerFactory::FinalizeDottedColLabelTrampoline(PEGTransformer &transfor dot_col_label = std::move(dot_col_label_value); } auto result = TransformDottedColLabel(transformer, col_label, dot_col_label); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRelOptionArgumentOptTrampoline(PEGTransformer &transformer, @@ -8512,12 +8513,12 @@ void PEGTransformerFactory::InitializeRelOptionArgumentOptTrampoline(PEGTransfor process.PushChild({transformer.GetRule("DefArg"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRelOptionArgumentOptTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto def_arg = process.TakeResult>(0); auto result = TransformRelOptionArgumentOpt(transformer, std::move(def_arg)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDefArgTrampoline(PEGTransformer &transformer, @@ -8529,15 +8530,15 @@ void PEGTransformerFactory::InitializeDefArgTrampoline(PEGTransformer &transform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeDefArgTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDefArgTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDefArgNullTrampoline(PEGTransformer &transformer, @@ -8547,11 +8548,11 @@ void PEGTransformerFactory::InitializeDefArgNullTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("NullLiteral"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDefArgNullTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto null_literal = process.TakeResult(0); auto result = TransformDefArgNull(transformer, null_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDefArgKeywordTrampoline(PEGTransformer &transformer, @@ -8559,13 +8560,13 @@ void PEGTransformerFactory::InitializeDefArgKeywordTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDefArgKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto reserved_keyword = list_pr.GetChild(0).Cast().identifier.GetIdentifierName(); auto result = TransformDefArgKeyword(transformer, reserved_keyword); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDefArgStringLiteralTrampoline(PEGTransformer &transformer, @@ -8573,13 +8574,13 @@ void PEGTransformerFactory::InitializeDefArgStringLiteralTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDefArgStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(0)); auto result = TransformDefArgStringLiteral(transformer, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNoneLiteralTrampoline(PEGTransformer &transformer, @@ -8587,10 +8588,10 @@ void PEGTransformerFactory::InitializeNoneLiteralTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNoneLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNoneLiteral(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateMacroStmtTrampoline(PEGTransformer &transformer, @@ -8611,7 +8612,7 @@ void PEGTransformerFactory::InitializeCreateMacroStmtTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("MacroOrFunction"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateMacroStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -8629,7 +8630,7 @@ PEGTransformerFactory::FinalizeCreateMacroStmtTrampoline(PEGTransformer &transfo } auto result = TransformCreateMacroStmt(transformer, macro_or_function, if_not_exists, qualified_name, std::move(macro_definition)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMacroOrFunctionTrampoline(PEGTransformer &transformer, @@ -8641,16 +8642,16 @@ void PEGTransformerFactory::InitializeMacroOrFunctionTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMacroOrFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMacroKeywordTrampoline(PEGTransformer &transformer, @@ -8658,10 +8659,10 @@ void PEGTransformerFactory::InitializeMacroKeywordTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMacroKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformMacroKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFunctionKeywordTrampoline(PEGTransformer &transformer, @@ -8669,11 +8670,11 @@ void PEGTransformerFactory::InitializeFunctionKeywordTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformFunctionKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMacroDefinitionTrampoline(PEGTransformer &transformer, @@ -8687,7 +8688,7 @@ void PEGTransformerFactory::InitializeMacroDefinitionTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMacroDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> macro_parameters {}; @@ -8696,7 +8697,7 @@ PEGTransformerFactory::FinalizeMacroDefinitionTrampoline(PEGTransformer &transfo } auto macro_definition_body = process.TakeResult>(1); auto result = TransformMacroDefinition(transformer, std::move(macro_parameters), std::move(macro_definition_body)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMacroDefinitionBodyTrampoline(PEGTransformer &transformer, @@ -8708,16 +8709,16 @@ void PEGTransformerFactory::InitializeMacroDefinitionBodyTrampoline(PEGTransform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMacroDefinitionBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMacroParametersTrampoline(PEGTransformer &transformer, @@ -8732,7 +8733,7 @@ void PEGTransformerFactory::InitializeMacroParametersTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMacroParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -8743,7 +8744,7 @@ PEGTransformerFactory::FinalizeMacroParametersTrampoline(PEGTransformer &transfo macro_parameter.push_back(process.TakeResult(i)); } auto result = TransformMacroParameters(transformer, std::move(macro_parameter)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMacroParameterTrampoline(PEGTransformer &transformer, @@ -8755,16 +8756,16 @@ void PEGTransformerFactory::InitializeMacroParameterTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMacroParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeSimpleParameterTrampoline(PEGTransformer &transformer, @@ -8778,7 +8779,7 @@ void PEGTransformerFactory::InitializeSimpleParameterTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("TypeFuncName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSimpleParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto type_func_name = process.TakeResult(0); @@ -8787,7 +8788,7 @@ PEGTransformerFactory::FinalizeSimpleParameterTrampoline(PEGTransformer &transfo type = process.TakeResult(1); } auto result = TransformSimpleParameter(transformer, type_func_name, type); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeScalarMacroDefinitionTrampoline(PEGTransformer &transformer, @@ -8797,12 +8798,12 @@ void PEGTransformerFactory::InitializeScalarMacroDefinitionTrampoline(PEGTransfo process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeScalarMacroDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformScalarMacroDefinition(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableMacroDefinitionTrampoline(PEGTransformer &transformer, @@ -8812,12 +8813,12 @@ void PEGTransformerFactory::InitializeTableMacroDefinitionTrampoline(PEGTransfor process.PushChild({transformer.GetRule("SelectStatementInternal"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableMacroDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformTableMacroDefinition(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateSchemaStmtTrampoline(PEGTransformer &transformer, @@ -8835,7 +8836,7 @@ void PEGTransformerFactory::InitializeCreateSchemaStmtTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateSchemaStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_not_exists {}; @@ -8848,7 +8849,7 @@ PEGTransformerFactory::FinalizeCreateSchemaStmtTrampoline(PEGTransformer &transf with_option_list = process.TakeResult>>(2); } auto result = TransformCreateSchemaStmt(transformer, if_not_exists, qualified_name, std::move(with_option_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWithOptionListTrampoline(PEGTransformer &transformer, @@ -8858,12 +8859,12 @@ void PEGTransformerFactory::InitializeWithOptionListTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("RelOptionList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto rel_option_list = process.TakeResult>>(0); auto result = TransformWithOptionList(transformer, std::move(rel_option_list)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeCreateSecretStmtTrampoline(PEGTransformer &transformer, @@ -8885,7 +8886,7 @@ void PEGTransformerFactory::InitializeCreateSecretStmtTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateSecretStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_not_exists {}; @@ -8903,7 +8904,7 @@ PEGTransformerFactory::FinalizeCreateSecretStmtTrampoline(PEGTransformer &transf auto generic_copy_option_list = process.TakeResult>(3); auto result = TransformCreateSecretStmt(transformer, if_not_exists, secret_name, secret_storage_specifier, generic_copy_option_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSecretStorageSpecifierTrampoline(PEGTransformer &transformer, @@ -8911,13 +8912,13 @@ void PEGTransformerFactory::InitializeSecretStorageSpecifierTrampoline(PEGTransf process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSecretStorageSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(1).Cast().identifier; auto result = TransformSecretStorageSpecifier(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSecretNameTrampoline(PEGTransformer &transformer, @@ -8927,11 +8928,11 @@ void PEGTransformerFactory::InitializeSecretNameTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSecretNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformSecretName(transformer, col_id); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCreateSequenceStmtTrampoline(PEGTransformer &transformer, @@ -8958,7 +8959,7 @@ void PEGTransformerFactory::InitializeCreateSequenceStmtTrampoline(PEGTransforme } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateSequenceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -8983,7 +8984,7 @@ PEGTransformerFactory::FinalizeCreateSequenceStmtTrampoline(PEGTransformer &tran sequence_option = std::move(sequence_option_value); } auto result = TransformCreateSequenceStmt(transformer, if_not_exists, qualified_name, std::move(sequence_option)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSequenceOptionTrampoline(PEGTransformer &transformer, @@ -8995,16 +8996,16 @@ void PEGTransformerFactory::InitializeSequenceOptionTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSequenceOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>>(0); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqSetCycleTrampoline(PEGTransformer &transformer, @@ -9016,15 +9017,15 @@ void PEGTransformerFactory::InitializeSeqSetCycleTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSeqSetCycleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>>(0); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqCycleTrampoline(PEGTransformer &transformer, @@ -9032,10 +9033,10 @@ void PEGTransformerFactory::InitializeSeqCycleTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeSeqCycleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeSeqCycleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformSeqCycle(transformer); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqNoCycleTrampoline(PEGTransformer &transformer, @@ -9043,10 +9044,10 @@ void PEGTransformerFactory::InitializeSeqNoCycleTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSeqNoCycleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSeqNoCycle(transformer); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqSetIncrementTrampoline(PEGTransformer &transformer, @@ -9056,7 +9057,7 @@ void PEGTransformerFactory::InitializeSeqSetIncrementTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSeqSetIncrementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -9065,7 +9066,7 @@ PEGTransformerFactory::FinalizeSeqSetIncrementTrampoline(PEGTransformer &transfo has_result = has_result_opt.HasResult(); auto expression = process.TakeResult>(0); auto result = TransformSeqSetIncrement(transformer, has_result, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqSetMinMaxTrampoline(PEGTransformer &transformer, @@ -9076,12 +9077,12 @@ void PEGTransformerFactory::InitializeSeqSetMinMaxTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("SeqMinOrMax"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSeqSetMinMaxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto seq_min_or_max = process.TakeResult(0); auto expression = process.TakeResult>(1); auto result = TransformSeqSetMinMax(transformer, seq_min_or_max, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqNoMinMaxTrampoline(PEGTransformer &transformer, @@ -9091,11 +9092,11 @@ void PEGTransformerFactory::InitializeSeqNoMinMaxTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("SeqMinOrMax"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSeqNoMinMaxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto seq_min_or_max = process.TakeResult(0); auto result = TransformSeqNoMinMax(transformer, seq_min_or_max); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqStartWithTrampoline(PEGTransformer &transformer, @@ -9105,7 +9106,7 @@ void PEGTransformerFactory::InitializeSeqStartWithTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSeqStartWithTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -9113,7 +9114,7 @@ PEGTransformerFactory::FinalizeSeqStartWithTrampoline(PEGTransformer &transforme has_result = has_result_opt.HasResult(); auto expression = process.TakeResult>(0); auto result = TransformSeqStartWith(transformer, has_result, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqOwnedByTrampoline(PEGTransformer &transformer, @@ -9123,11 +9124,11 @@ void PEGTransformerFactory::InitializeSeqOwnedByTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("QualifiedName"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSeqOwnedByTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto qualified_name = process.TakeResult(0); auto result = TransformSeqOwnedBy(transformer, qualified_name); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSeqMinOrMaxTrampoline(PEGTransformer &transformer, @@ -9143,12 +9144,12 @@ void PEGTransformerFactory::InitializeSeqMinOrMaxTrampoline(PEGTransformer &tran return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSeqMinOrMaxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result; if (process.child_results[0]) { @@ -9168,7 +9169,7 @@ PEGTransformerFactory::FinalizeSeqMinOrMaxTrampoline(PEGTransformer &transformer result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMinValueTrampoline(PEGTransformer &transformer, @@ -9176,10 +9177,10 @@ void PEGTransformerFactory::InitializeMinValueTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeMinValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeMinValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformMinValue(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMaxValueTrampoline(PEGTransformer &transformer, @@ -9187,10 +9188,10 @@ void PEGTransformerFactory::InitializeMaxValueTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeMaxValueTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeMaxValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformMaxValue(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCreateStatementTrampoline(PEGTransformer &transformer, @@ -9208,7 +9209,7 @@ void PEGTransformerFactory::InitializeCreateStatementTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional or_replace {}; @@ -9221,7 +9222,7 @@ PEGTransformerFactory::FinalizeCreateStatementTrampoline(PEGTransformer &transfo } auto create_statement_variation = process.TakeResult>(2); auto result = TransformCreateStatement(transformer, or_replace, temporary, std::move(create_statement_variation)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateStatementVariationTrampoline(PEGTransformer &transformer, @@ -9233,16 +9234,16 @@ void PEGTransformerFactory::InitializeCreateStatementVariationTrampoline(PEGTran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateStatementVariationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOrReplaceTrampoline(PEGTransformer &transformer, @@ -9250,10 +9251,10 @@ void PEGTransformerFactory::InitializeOrReplaceTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeOrReplaceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeOrReplaceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformOrReplace(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTemporaryTrampoline(PEGTransformer &transformer, @@ -9265,15 +9266,15 @@ void PEGTransformerFactory::InitializeTemporaryTrampoline(PEGTransformer &transf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeTemporaryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTemporaryTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePersistentTrampoline(PEGTransformer &transformer, @@ -9281,10 +9282,10 @@ void PEGTransformerFactory::InitializePersistentTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePersistentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformPersistent(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTempPersistentTrampoline(PEGTransformer &transformer, @@ -9292,11 +9293,11 @@ void PEGTransformerFactory::InitializeTempPersistentTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTempPersistentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTempPersistent(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTemporaryPersistentTrampoline(PEGTransformer &transformer, @@ -9304,11 +9305,11 @@ void PEGTransformerFactory::InitializeTemporaryPersistentTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTemporaryPersistentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTemporaryPersistent(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCreateTableStmtTrampoline(PEGTransformer &transformer, @@ -9327,7 +9328,7 @@ void PEGTransformerFactory::InitializeCreateTableStmtTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTableStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_not_exists {}; @@ -9342,7 +9343,7 @@ PEGTransformerFactory::FinalizeCreateTableStmtTrampoline(PEGTransformer &transfo } auto result = TransformCreateTableStmt(transformer, if_not_exists, qualified_name, std::move(create_table_definition), commit_action); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateTableDefinitionTrampoline(PEGTransformer &transformer, @@ -9354,16 +9355,16 @@ void PEGTransformerFactory::InitializeCreateTableDefinitionTrampoline(PEGTransfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTableDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCreateTableAsTrampoline(PEGTransformer &transformer, @@ -9389,7 +9390,7 @@ void PEGTransformerFactory::InitializeCreateTableAsTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTableAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional identifier_list {}; @@ -9411,7 +9412,7 @@ PEGTransformerFactory::FinalizeCreateTableAsTrampoline(PEGTransformer &transform } auto result = TransformCreateTableAs(transformer, std::move(identifier_list), std::move(partition_sorted_options), std::move(with_list), std::move(statement), with_data); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePartitionSortedOptionsTrampoline(PEGTransformer &transformer, @@ -9423,16 +9424,16 @@ void PEGTransformerFactory::InitializePartitionSortedOptionsTrampoline(PEGTransf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePartitionSortedOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePartitionOptSortedOptionsTrampoline(PEGTransformer &transformer, @@ -9446,7 +9447,7 @@ void PEGTransformerFactory::InitializePartitionOptSortedOptionsTrampoline(PEGTra process.PushChild({transformer.GetRule("PartitionOptions"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePartitionOptSortedOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto partition_options = process.TakeResult>>(0); @@ -9456,7 +9457,7 @@ PEGTransformerFactory::FinalizePartitionOptSortedOptionsTrampoline(PEGTransforme } auto result = TransformPartitionOptSortedOptions(transformer, std::move(partition_options), std::move(sorted_options)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeSortedOptPartitionOptionsTrampoline(PEGTransformer &transformer, @@ -9470,7 +9471,7 @@ void PEGTransformerFactory::InitializeSortedOptPartitionOptionsTrampoline(PEGTra process.PushChild({transformer.GetRule("SortedOptions"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSortedOptPartitionOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto sorted_options = process.TakeResult>>(0); @@ -9480,7 +9481,7 @@ PEGTransformerFactory::FinalizeSortedOptPartitionOptionsTrampoline(PEGTransforme } auto result = TransformSortedOptPartitionOptions(transformer, std::move(sorted_options), std::move(partition_options)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePartitionOptionsTrampoline(PEGTransformer &transformer, @@ -9495,7 +9496,7 @@ void PEGTransformerFactory::InitializePartitionOptionsTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePartitionOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -9506,7 +9507,7 @@ PEGTransformerFactory::FinalizePartitionOptionsTrampoline(PEGTransformer &transf expression.push_back(process.TakeResult>(i)); } auto result = TransformPartitionOptions(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSortedOptionsTrampoline(PEGTransformer &transformer, @@ -9521,7 +9522,7 @@ void PEGTransformerFactory::InitializeSortedOptionsTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSortedOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -9532,7 +9533,7 @@ PEGTransformerFactory::FinalizeSortedOptionsTrampoline(PEGTransformer &transform expression.push_back(process.TakeResult>(i)); } auto result = TransformSortedOptions(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeWithDataTrampoline(PEGTransformer &transformer, @@ -9544,15 +9545,15 @@ void PEGTransformerFactory::InitializeWithDataTrampoline(PEGTransformer &transfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeWithDataTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeWithDataTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWithDataOnlyTrampoline(PEGTransformer &transformer, @@ -9560,10 +9561,10 @@ void PEGTransformerFactory::InitializeWithDataOnlyTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithDataOnlyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformWithDataOnly(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWithNoDataTrampoline(PEGTransformer &transformer, @@ -9571,10 +9572,10 @@ void PEGTransformerFactory::InitializeWithNoDataTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithNoDataTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformWithNoData(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIdentifierListTrampoline(PEGTransformer &transformer, @@ -9582,7 +9583,7 @@ void PEGTransformerFactory::InitializeIdentifierListTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIdentifierListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -9592,7 +9593,7 @@ PEGTransformerFactory::FinalizeIdentifierListTrampoline(PEGTransformer &transfor identifier.push_back(identifier_item.get().Cast().identifier); } auto result = TransformIdentifierList(transformer, identifier); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCreateColumnListTrampoline(PEGTransformer &transformer, @@ -9613,7 +9614,7 @@ void PEGTransformerFactory::InitializeCreateColumnListTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional create_table_column_list {}; @@ -9630,7 +9631,7 @@ PEGTransformerFactory::FinalizeCreateColumnListTrampoline(PEGTransformer &transf } auto result = TransformCreateColumnList(transformer, std::move(create_table_column_list), std::move(partition_sorted_options), std::move(with_list)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeIfNotExistsTrampoline(PEGTransformer &transformer, @@ -9638,10 +9639,10 @@ void PEGTransformerFactory::InitializeIfNotExistsTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIfNotExistsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformIfNotExists(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeQualifiedNameTrampoline(PEGTransformer &transformer, @@ -9653,16 +9654,16 @@ void PEGTransformerFactory::InitializeQualifiedNameTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSchemaReservedIdentifierOrStringLiteralTrampoline( @@ -9673,14 +9674,14 @@ void PEGTransformerFactory::InitializeSchemaReservedIdentifierOrStringLiteralTra process.PushChild({transformer.GetRule("SchemaQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaReservedIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto schema_qualification = process.TakeResult(0); auto reserved_identifier_or_string_literal = process.TakeResult(1); auto result = TransformSchemaReservedIdentifierOrStringLiteral(transformer, schema_qualification, reserved_identifier_or_string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCatalogReservedSchemaIdentifierTrampoline(PEGTransformer &transformer, @@ -9700,7 +9701,7 @@ void PEGTransformerFactory::InitializeCatalogReservedSchemaIdentifierTrampoline( process.PushChild({transformer.GetRule("CatalogQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogReservedSchemaIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -9715,7 +9716,7 @@ PEGTransformerFactory::FinalizeCatalogReservedSchemaIdentifierTrampoline(PEGTran auto reserved_identifier_or_string_literal = process.TakeResult(2 + dynamic_child_count - 1); auto result = TransformCatalogReservedSchemaIdentifier( transformer, catalog_qualification, reserved_schema_qualification, reserved_identifier_or_string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, @@ -9733,12 +9734,12 @@ void PEGTransformerFactory::InitializeIdentifierOrStringLiteralTrampoline(PEGTra return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string child; @@ -9760,7 +9761,7 @@ PEGTransformerFactory::FinalizeIdentifierOrStringLiteralTrampoline(PEGTransforme } } auto result = TransformIdentifierOrStringLiteral(transformer, child); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReservedIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, @@ -9771,20 +9772,20 @@ void PEGTransformerFactory::InitializeReservedIdentifierOrStringLiteralTrampolin process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (choice_result.name.empty() || choice_result.type == ParseResultType::IDENTIFIER || + if (choice_result.Name().empty() || choice_result.type == ParseResultType::IDENTIFIER || choice_result.type == ParseResultType::KEYWORD || choice_result.type == ParseResultType::STRING) { return; } - if (!has_transform_process && (choice_result.name == "StringLiteral")) { + if (!has_transform_process && (choice_result.Name() == "StringLiteral")) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReservedIdentifierOrStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { Identifier result; @@ -9803,7 +9804,7 @@ PEGTransformerFactory::FinalizeReservedIdentifierOrStringLiteralTrampoline(PEGTr result = Identifier(TransformIdentifierOrKeyword(transformer, choice_result)); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCatalogQualificationTrampoline(PEGTransformer &transformer, @@ -9811,13 +9812,13 @@ void PEGTransformerFactory::InitializeCatalogQualificationTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto catalog_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformCatalogQualification(transformer, catalog_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSchemaQualificationTrampoline(PEGTransformer &transformer, @@ -9825,13 +9826,13 @@ void PEGTransformerFactory::InitializeSchemaQualificationTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto schema_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformSchemaQualification(transformer, schema_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReservedSchemaQualificationTrampoline(PEGTransformer &transformer, @@ -9839,13 +9840,13 @@ void PEGTransformerFactory::InitializeReservedSchemaQualificationTrampoline(PEGT process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReservedSchemaQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto reserved_schema_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformReservedSchemaQualification(transformer, reserved_schema_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTableQualificationTrampoline(PEGTransformer &transformer, @@ -9853,13 +9854,13 @@ void PEGTransformerFactory::InitializeTableQualificationTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto table_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformTableQualification(transformer, table_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReservedTableQualificationTrampoline(PEGTransformer &transformer, @@ -9867,13 +9868,13 @@ void PEGTransformerFactory::InitializeReservedTableQualificationTrampoline(PEGTr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReservedTableQualificationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto reserved_table_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformReservedTableQualification(transformer, reserved_table_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCreateTableColumnListTrampoline(PEGTransformer &transformer, @@ -9889,7 +9890,7 @@ void PEGTransformerFactory::InitializeCreateTableColumnListTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTableColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -9900,7 +9901,7 @@ PEGTransformerFactory::FinalizeCreateTableColumnListTrampoline(PEGTransformer &t create_table_column_element.push_back(process.TakeResult(i)); } auto result = TransformCreateTableColumnList(transformer, std::move(create_table_column_element)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCreateTableColumnElementTrampoline(PEGTransformer &transformer, @@ -9912,16 +9913,16 @@ void PEGTransformerFactory::InitializeCreateTableColumnElementTrampoline(PEGTran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTableColumnElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCreateTableColumnDefinitionTrampoline(PEGTransformer &transformer, @@ -9931,12 +9932,12 @@ void PEGTransformerFactory::InitializeCreateTableColumnDefinitionTrampoline(PEGT process.PushChild({transformer.GetRule("ColumnDefinition"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTableColumnDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto column_definition = process.TakeResult(0); auto result = TransformCreateTableColumnDefinition(transformer, std::move(column_definition)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCreateTableConstraintTrampoline(PEGTransformer &transformer, @@ -9946,12 +9947,12 @@ void PEGTransformerFactory::InitializeCreateTableConstraintTrampoline(PEGTransfo process.PushChild({transformer.GetRule("TopLevelConstraint"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTableConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto top_level_constraint = process.TakeResult>(0); auto result = TransformCreateTableConstraint(transformer, std::move(top_level_constraint)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeColumnDefinitionTrampoline(PEGTransformer &transformer, @@ -9982,7 +9983,7 @@ void PEGTransformerFactory::InitializeColumnDefinitionTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -10015,7 +10016,7 @@ PEGTransformerFactory::FinalizeColumnDefinitionTrampoline(PEGTransformer &transf } auto result = TransformColumnDefinition(transformer, identifier, type, std::move(generated_column), has_result, std::move(column_constraint)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeColumnConstraintTrampoline(PEGTransformer &transformer, @@ -10027,16 +10028,16 @@ void PEGTransformerFactory::InitializeColumnConstraintTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeNotNullConstraintTrampoline(PEGTransformer &transformer, @@ -10048,17 +10049,17 @@ void PEGTransformerFactory::InitializeNotNullConstraintTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotNullConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto child = process.TakeResult(0); auto result = TransformNotNullConstraint(transformer, child); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeNullConstraintTrampoline(PEGTransformer &transformer, @@ -10066,11 +10067,11 @@ void PEGTransformerFactory::InitializeNullConstraintTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNullConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNullConstraint(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNotNullColumnConstraintTrampoline(PEGTransformer &transformer, @@ -10078,11 +10079,11 @@ void PEGTransformerFactory::InitializeNotNullColumnConstraintTrampoline(PEGTrans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotNullColumnConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNotNullColumnConstraint(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUniqueConstraintTrampoline(PEGTransformer &transformer, @@ -10090,11 +10091,11 @@ void PEGTransformerFactory::InitializeUniqueConstraintTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUniqueConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformUniqueConstraint(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePrimaryKeyConstraintTrampoline(PEGTransformer &transformer, @@ -10102,11 +10103,11 @@ void PEGTransformerFactory::InitializePrimaryKeyConstraintTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePrimaryKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformPrimaryKeyConstraint(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDefaultValueTrampoline(PEGTransformer &transformer, @@ -10116,11 +10117,11 @@ void PEGTransformerFactory::InitializeDefaultValueTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("ColumnDefaultExpr"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDefaultValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto column_default_expr = process.TakeResult>(0); auto result = TransformDefaultValue(transformer, std::move(column_default_expr)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCheckConstraintTrampoline(PEGTransformer &transformer, @@ -10130,12 +10131,12 @@ void PEGTransformerFactory::InitializeCheckConstraintTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("Expression"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCheckConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformCheckConstraint(transformer, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeForeignKeyConstraintTrampoline(PEGTransformer &transformer, @@ -10153,7 +10154,7 @@ void PEGTransformerFactory::InitializeForeignKeyConstraintTrampoline(PEGTransfor process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForeignKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); @@ -10166,7 +10167,7 @@ PEGTransformerFactory::FinalizeForeignKeyConstraintTrampoline(PEGTransformer &tr key_actions = process.TakeResult(2); } auto result = TransformForeignKeyConstraint(transformer, std::move(base_table_name), column_list, key_actions); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeColumnCollationTrampoline(PEGTransformer &transformer, @@ -10176,12 +10177,12 @@ void PEGTransformerFactory::InitializeColumnCollationTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("DottedIdentifier"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnCollationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto dotted_identifier = process.TakeResult>(0); auto result = TransformColumnCollation(transformer, dotted_identifier); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeColumnCompressionTrampoline(PEGTransformer &transformer, @@ -10191,12 +10192,12 @@ void PEGTransformerFactory::InitializeColumnCompressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnCompressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); auto result = TransformColumnCompression(transformer, col_id_or_string); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeKeyActionsTrampoline(PEGTransformer &transformer, @@ -10208,15 +10209,15 @@ void PEGTransformerFactory::InitializeKeyActionsTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeKeyActionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUpdateFirstKeyActionsTrampoline(PEGTransformer &transformer, @@ -10230,7 +10231,7 @@ void PEGTransformerFactory::InitializeUpdateFirstKeyActionsTrampoline(PEGTransfo process.PushChild({transformer.GetRule("UpdateAction"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateFirstKeyActionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto update_action = process.TakeResult(0); @@ -10239,7 +10240,7 @@ PEGTransformerFactory::FinalizeUpdateFirstKeyActionsTrampoline(PEGTransformer &t delete_action = process.TakeResult(1); } auto result = TransformUpdateFirstKeyActions(transformer, update_action, delete_action); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDeleteFirstKeyActionsTrampoline(PEGTransformer &transformer, @@ -10253,7 +10254,7 @@ void PEGTransformerFactory::InitializeDeleteFirstKeyActionsTrampoline(PEGTransfo process.PushChild({transformer.GetRule("DeleteAction"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDeleteFirstKeyActionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto delete_action = process.TakeResult(0); @@ -10262,7 +10263,7 @@ PEGTransformerFactory::FinalizeDeleteFirstKeyActionsTrampoline(PEGTransformer &t update_action = process.TakeResult(1); } auto result = TransformDeleteFirstKeyActions(transformer, delete_action, update_action); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUpdateActionTrampoline(PEGTransformer &transformer, @@ -10272,11 +10273,11 @@ void PEGTransformerFactory::InitializeUpdateActionTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("KeyAction"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto key_action = process.TakeResult(0); auto result = TransformUpdateAction(transformer, key_action); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDeleteActionTrampoline(PEGTransformer &transformer, @@ -10286,11 +10287,11 @@ void PEGTransformerFactory::InitializeDeleteActionTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("KeyAction"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDeleteActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto key_action = process.TakeResult(0); auto result = TransformDeleteAction(transformer, key_action); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeKeyActionTrampoline(PEGTransformer &transformer, @@ -10306,13 +10307,13 @@ void PEGTransformerFactory::InitializeKeyActionTrampoline(PEGTransformer &transf return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeKeyActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { string result; if (process.child_results[0]) { result = process.TakeResult(0); @@ -10331,7 +10332,7 @@ PEGTransformerFactory::FinalizeKeyActionTrampoline(PEGTransformer &transformer, result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNoKeyActionTrampoline(PEGTransformer &transformer, @@ -10339,10 +10340,10 @@ void PEGTransformerFactory::InitializeNoKeyActionTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNoKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNoKeyAction(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRestrictKeyActionTrampoline(PEGTransformer &transformer, @@ -10350,11 +10351,11 @@ void PEGTransformerFactory::InitializeRestrictKeyActionTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRestrictKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformRestrictKeyAction(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCascadeKeyActionTrampoline(PEGTransformer &transformer, @@ -10362,11 +10363,11 @@ void PEGTransformerFactory::InitializeCascadeKeyActionTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCascadeKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCascadeKeyAction(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSetNullKeyActionTrampoline(PEGTransformer &transformer, @@ -10374,11 +10375,11 @@ void PEGTransformerFactory::InitializeSetNullKeyActionTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetNullKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSetNullKeyAction(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSetDefaultKeyActionTrampoline(PEGTransformer &transformer, @@ -10386,11 +10387,11 @@ void PEGTransformerFactory::InitializeSetDefaultKeyActionTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetDefaultKeyActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSetDefaultKeyAction(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTopLevelConstraintTrampoline(PEGTransformer &transformer, @@ -10400,7 +10401,7 @@ void PEGTransformerFactory::InitializeTopLevelConstraintTrampoline(PEGTransforme process.PushChild({transformer.GetRule("TopLevelConstraintList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTopLevelConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -10409,7 +10410,7 @@ PEGTransformerFactory::FinalizeTopLevelConstraintTrampoline(PEGTransformer &tran has_result = has_result_opt.HasResult(); auto top_level_constraint_list = process.TakeResult>(0); auto result = TransformTopLevelConstraint(transformer, has_result, std::move(top_level_constraint_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTopLevelConstraintListTrampoline(PEGTransformer &transformer, @@ -10421,16 +10422,16 @@ void PEGTransformerFactory::InitializeTopLevelConstraintListTrampoline(PEGTransf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTopLevelConstraintListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTopCheckConstraintTrampoline(PEGTransformer &transformer, @@ -10440,12 +10441,12 @@ void PEGTransformerFactory::InitializeTopCheckConstraintTrampoline(PEGTransforme process.PushChild({transformer.GetRule("CheckConstraint"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTopCheckConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto check_constraint = process.TakeResult(0); auto result = TransformTopCheckConstraint(transformer, std::move(check_constraint)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTopPrimaryKeyConstraintTrampoline(PEGTransformer &transformer, @@ -10455,12 +10456,12 @@ void PEGTransformerFactory::InitializeTopPrimaryKeyConstraintTrampoline(PEGTrans process.PushChild({transformer.GetRule("ColumnIdList"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTopPrimaryKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto column_id_list = process.TakeResult>(0); auto result = TransformTopPrimaryKeyConstraint(transformer, column_id_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTopUniqueConstraintTrampoline(PEGTransformer &transformer, @@ -10470,12 +10471,12 @@ void PEGTransformerFactory::InitializeTopUniqueConstraintTrampoline(PEGTransform process.PushChild({transformer.GetRule("ColumnIdList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTopUniqueConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto column_id_list = process.TakeResult>(0); auto result = TransformTopUniqueConstraint(transformer, column_id_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTopForeignKeyConstraintTrampoline(PEGTransformer &transformer, @@ -10486,13 +10487,13 @@ void PEGTransformerFactory::InitializeTopForeignKeyConstraintTrampoline(PEGTrans process.PushChild({transformer.GetRule("ColumnIdList"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTopForeignKeyConstraintTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto column_id_list = process.TakeResult>(0); auto foreign_key_constraint = process.TakeResult(1); auto result = TransformTopForeignKeyConstraint(transformer, column_id_list, std::move(foreign_key_constraint)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColumnIdListTrampoline(PEGTransformer &transformer, @@ -10507,7 +10508,7 @@ void PEGTransformerFactory::InitializeColumnIdListTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnIdListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(ExtractResultFromParens(list_pr.GetChild(0))); @@ -10517,7 +10518,7 @@ PEGTransformerFactory::FinalizeColumnIdListTrampoline(PEGTransformer &transforme col_id.push_back(process.TakeResult(i)); } auto result = TransformColumnIdList(transformer, col_id); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeDottedIdentifierTrampoline(PEGTransformer &transformer, @@ -10539,7 +10540,7 @@ void PEGTransformerFactory::InitializeDottedIdentifierTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDottedIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -10560,7 +10561,7 @@ PEGTransformerFactory::FinalizeDottedIdentifierTrampoline(PEGTransformer &transf dot_col_label = std::move(dot_col_label_value); } auto result = TransformDottedIdentifier(transformer, identifier, dot_col_label); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeDotColLabelTrampoline(PEGTransformer &transformer, @@ -10570,11 +10571,11 @@ void PEGTransformerFactory::InitializeDotColLabelTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ColLabel"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDotColLabelTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_label = process.TakeResult(0); auto result = TransformDotColLabel(transformer, col_label); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIdentifierTrampoline(PEGTransformer &transformer, @@ -10582,10 +10583,10 @@ void PEGTransformerFactory::InitializeIdentifierTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.parse_result.Cast().identifier.GetIdentifierName(); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeColIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { @@ -10595,22 +10596,23 @@ void PEGTransformerFactory::InitializeColIdTrampoline(PEGTransformer &transforme process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (choice_result.name.empty() || choice_result.type == ParseResultType::IDENTIFIER || + if (choice_result.Name().empty() || choice_result.type == ParseResultType::IDENTIFIER || choice_result.type == ParseResultType::KEYWORD || choice_result.type == ParseResultType::STRING) { return; } - if (!has_transform_process && (choice_result.name == "UnreservedKeyword" || - choice_result.name == "ColumnNameKeyword" || choice_result.name == "Identifier")) { + if (!has_transform_process && + (choice_result.Name() == "UnreservedKeyword" || choice_result.Name() == "ColumnNameKeyword" || + choice_result.Name() == "Identifier")) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeColIdTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeColIdTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { Identifier result; if (process.child_results[0]) { result = process.TakeResult(0); @@ -10627,7 +10629,7 @@ unique_ptr PEGTransformerFactory::FinalizeColIdTrampoline( result = Identifier(TransformIdentifierOrKeyword(transformer, choice_result)); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeColIdOrStringTrampoline(PEGTransformer &transformer, @@ -10638,17 +10640,17 @@ void PEGTransformerFactory::InitializeColIdOrStringTrampoline(PEGTransformer &tr process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (choice_result.name.empty() || choice_result.type == ParseResultType::IDENTIFIER || + if (choice_result.Name().empty() || choice_result.type == ParseResultType::IDENTIFIER || choice_result.type == ParseResultType::KEYWORD || choice_result.type == ParseResultType::STRING) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColIdOrStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { Identifier result; @@ -10667,7 +10669,7 @@ PEGTransformerFactory::FinalizeColIdOrStringTrampoline(PEGTransformer &transform result = Identifier(TransformIdentifierOrKeyword(transformer, choice_result)); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTypeFuncNameTrampoline(PEGTransformer &transformer, @@ -10678,21 +10680,21 @@ void PEGTransformerFactory::InitializeTypeFuncNameTrampoline(PEGTransformer &tra process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (choice_result.name.empty() || choice_result.type == ParseResultType::IDENTIFIER || + if (choice_result.Name().empty() || choice_result.type == ParseResultType::IDENTIFIER || choice_result.type == ParseResultType::KEYWORD || choice_result.type == ParseResultType::STRING) { return; } - if (!has_transform_process && (choice_result.name == "UnreservedKeyword" || - choice_result.name == "TypeFuncKeyword" || choice_result.name == "Identifier")) { + if (!has_transform_process && (choice_result.Name() == "UnreservedKeyword" || + choice_result.Name() == "TypeFuncKeyword" || choice_result.Name() == "Identifier")) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTypeFuncNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { Identifier result; if (process.child_results[0]) { @@ -10710,7 +10712,7 @@ PEGTransformerFactory::FinalizeTypeFuncNameTrampoline(PEGTransformer &transforme result = Identifier(TransformIdentifierOrKeyword(transformer, choice_result)); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTypeFuncKeywordTrampoline(PEGTransformer &transformer, @@ -10726,16 +10728,16 @@ void PEGTransformerFactory::InitializeTypeFuncKeywordTrampoline(PEGTransformer & return; } if (!has_transform_process && - (choice_result.name == "TypeNameKeyword" || choice_result.name == "FuncNameKeyword")) { + (choice_result.Name() == "TypeNameKeyword" || choice_result.Name() == "FuncNameKeyword")) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTypeFuncKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result; @@ -10756,7 +10758,7 @@ PEGTransformerFactory::FinalizeTypeFuncKeywordTrampoline(PEGTransformer &transfo result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeColLabelTrampoline(PEGTransformer &transformer, @@ -10772,19 +10774,19 @@ void PEGTransformerFactory::InitializeColLabelTrampoline(PEGTransformer &transfo return; } if (!has_transform_process && - (choice_result.name == "ReservedKeyword" || choice_result.name == "UnreservedKeyword" || - choice_result.name == "ColumnNameKeyword" || choice_result.name == "FuncNameKeyword" || - choice_result.name == "TypeNameKeyword")) { + (choice_result.Name() == "ReservedKeyword" || choice_result.Name() == "UnreservedKeyword" || + choice_result.Name() == "ColumnNameKeyword" || choice_result.Name() == "FuncNameKeyword" || + choice_result.Name() == "TypeNameKeyword")) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeColLabelTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeColLabelTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { string result; if (process.child_results[0]) { result = process.TakeResult(0); @@ -10803,7 +10805,7 @@ unique_ptr PEGTransformerFactory::FinalizeColLabelTrampoli result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeColLabelOrStringTrampoline(PEGTransformer &transformer, @@ -10814,17 +10816,17 @@ void PEGTransformerFactory::InitializeColLabelOrStringTrampoline(PEGTransformer process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (choice_result.name.empty() || choice_result.type == ParseResultType::IDENTIFIER || + if (choice_result.Name().empty() || choice_result.type == ParseResultType::IDENTIFIER || choice_result.type == ParseResultType::KEYWORD || choice_result.type == ParseResultType::STRING) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColLabelOrStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { Identifier result; @@ -10843,7 +10845,7 @@ PEGTransformerFactory::FinalizeColLabelOrStringTrampoline(PEGTransformer &transf result = Identifier(TransformIdentifierOrKeyword(transformer, choice_result)); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeColLabelIdentifierTrampoline(PEGTransformer &transformer, @@ -10853,12 +10855,12 @@ void PEGTransformerFactory::InitializeColLabelIdentifierTrampoline(PEGTransforme process.PushChild({transformer.GetRule("ColLabel"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColLabelIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_label = process.TakeResult(0); auto result = TransformColLabelIdentifier(transformer, col_label); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeStringLiteralIdentifierTrampoline(PEGTransformer &transformer, @@ -10866,13 +10868,13 @@ void PEGTransformerFactory::InitializeStringLiteralIdentifierTrampoline(PEGTrans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStringLiteralIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(0)); auto result = TransformStringLiteralIdentifier(transformer, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGeneratedColumnTrampoline(PEGTransformer &transformer, @@ -10890,7 +10892,7 @@ void PEGTransformerFactory::InitializeGeneratedColumnTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGeneratedColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional generated {}; @@ -10903,7 +10905,7 @@ PEGTransformerFactory::FinalizeGeneratedColumnTrampoline(PEGTransformer &transfo generated_column_type = process.TakeResult(2); } auto result = TransformGeneratedColumn(transformer, generated, std::move(expression), generated_column_type); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeGeneratedTrampoline(PEGTransformer &transformer, @@ -10915,15 +10917,15 @@ void PEGTransformerFactory::InitializeGeneratedTrampoline(PEGTransformer &transf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeGeneratedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeGeneratedTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGeneratedAlwaysTrampoline(PEGTransformer &transformer, @@ -10931,11 +10933,11 @@ void PEGTransformerFactory::InitializeGeneratedAlwaysTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGeneratedAlwaysTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformGeneratedAlways(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGeneratedByDefaultTrampoline(PEGTransformer &transformer, @@ -10943,11 +10945,11 @@ void PEGTransformerFactory::InitializeGeneratedByDefaultTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGeneratedByDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformGeneratedByDefault(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGeneratedColumnTypeTrampoline(PEGTransformer &transformer, @@ -10959,16 +10961,16 @@ void PEGTransformerFactory::InitializeGeneratedColumnTypeTrampoline(PEGTransform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGeneratedColumnTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCommitActionTrampoline(PEGTransformer &transformer, @@ -10978,11 +10980,11 @@ void PEGTransformerFactory::InitializeCommitActionTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("PreserveOrDelete"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommitActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto preserve_or_delete = process.TakeResult(0); auto result = TransformCommitAction(transformer, preserve_or_delete); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePreserveOrDeleteTrampoline(PEGTransformer &transformer, @@ -10994,16 +10996,16 @@ void PEGTransformerFactory::InitializePreserveOrDeleteTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePreserveOrDeleteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePreserveRowsTrampoline(PEGTransformer &transformer, @@ -11011,10 +11013,10 @@ void PEGTransformerFactory::InitializePreserveRowsTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePreserveRowsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformPreserveRows(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDeleteRowsTrampoline(PEGTransformer &transformer, @@ -11022,10 +11024,10 @@ void PEGTransformerFactory::InitializeDeleteRowsTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDeleteRowsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDeleteRows(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeVirtualGeneratedColumnTrampoline(PEGTransformer &transformer, @@ -11033,11 +11035,11 @@ void PEGTransformerFactory::InitializeVirtualGeneratedColumnTrampoline(PEGTransf process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVirtualGeneratedColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformVirtualGeneratedColumn(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeStoredGeneratedColumnTrampoline(PEGTransformer &transformer, @@ -11045,11 +11047,11 @@ void PEGTransformerFactory::InitializeStoredGeneratedColumnTrampoline(PEGTransfo process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStoredGeneratedColumnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformStoredGeneratedColumn(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCreateTriggerStmtTrampoline(PEGTransformer &transformer, @@ -11075,7 +11077,7 @@ void PEGTransformerFactory::InitializeCreateTriggerStmtTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTriggerStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_not_exists {}; @@ -11098,7 +11100,7 @@ PEGTransformerFactory::FinalizeCreateTriggerStmtTrampoline(PEGTransformer &trans auto result = TransformCreateTriggerStmt(transformer, if_not_exists, trigger_name, trigger_timing, trigger_event, std::move(base_table_name), referencing_clause, for_each_clause, std::move(trigger_body)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTriggerBodyTrampoline(PEGTransformer &transformer, @@ -11110,15 +11112,15 @@ void PEGTransformerFactory::InitializeTriggerBodyTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTriggerNameTrampoline(PEGTransformer &transformer, @@ -11126,12 +11128,12 @@ void PEGTransformerFactory::InitializeTriggerNameTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformTriggerName(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReferencingClauseTrampoline(PEGTransformer &transformer, @@ -11145,7 +11147,7 @@ void PEGTransformerFactory::InitializeReferencingClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ReferencingItem"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReferencingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto referencing_item = process.TakeResult(0); @@ -11154,7 +11156,7 @@ PEGTransformerFactory::FinalizeReferencingClauseTrampoline(PEGTransformer &trans referencing_item_1 = process.TakeResult(1); } auto result = TransformReferencingClause(transformer, referencing_item, referencing_item_1); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReferencingItemTrampoline(PEGTransformer &transformer, @@ -11166,16 +11168,16 @@ void PEGTransformerFactory::InitializeReferencingItemTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReferencingItemTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReferencingNewTableAsTrampoline(PEGTransformer &transformer, @@ -11185,12 +11187,12 @@ void PEGTransformerFactory::InitializeReferencingNewTableAsTrampoline(PEGTransfo process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(3)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReferencingNewTableAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformReferencingNewTableAs(transformer, col_id); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReferencingOldTableAsTrampoline(PEGTransformer &transformer, @@ -11200,12 +11202,12 @@ void PEGTransformerFactory::InitializeReferencingOldTableAsTrampoline(PEGTransfo process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(3)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReferencingOldTableAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformReferencingOldTableAs(transformer, col_id); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerTimingTrampoline(PEGTransformer &transformer, @@ -11217,16 +11219,16 @@ void PEGTransformerFactory::InitializeTriggerTimingTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerTimingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerBeforeTrampoline(PEGTransformer &transformer, @@ -11234,11 +11236,11 @@ void PEGTransformerFactory::InitializeTriggerBeforeTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerBeforeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTriggerBefore(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerAfterTrampoline(PEGTransformer &transformer, @@ -11246,10 +11248,10 @@ void PEGTransformerFactory::InitializeTriggerAfterTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerAfterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTriggerAfter(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerInsteadOfTrampoline(PEGTransformer &transformer, @@ -11257,11 +11259,11 @@ void PEGTransformerFactory::InitializeTriggerInsteadOfTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerInsteadOfTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTriggerInsteadOf(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerEventTrampoline(PEGTransformer &transformer, @@ -11273,15 +11275,15 @@ void PEGTransformerFactory::InitializeTriggerEventTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerEventTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerEventInsertTrampoline(PEGTransformer &transformer, @@ -11289,11 +11291,11 @@ void PEGTransformerFactory::InitializeTriggerEventInsertTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerEventInsertTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTriggerEventInsert(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerEventDeleteTrampoline(PEGTransformer &transformer, @@ -11301,11 +11303,11 @@ void PEGTransformerFactory::InitializeTriggerEventDeleteTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerEventDeleteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTriggerEventDelete(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerEventUpdateTrampoline(PEGTransformer &transformer, @@ -11313,11 +11315,11 @@ void PEGTransformerFactory::InitializeTriggerEventUpdateTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerEventUpdateTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTriggerEventUpdate(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerEventUpdateOfTrampoline(PEGTransformer &transformer, @@ -11327,12 +11329,12 @@ void PEGTransformerFactory::InitializeTriggerEventUpdateOfTrampoline(PEGTransfor process.PushChild({transformer.GetRule("TriggerColumnList"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerEventUpdateOfTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto trigger_column_list = process.TakeResult>(0); auto result = TransformTriggerEventUpdateOf(transformer, trigger_column_list); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTriggerColumnListTrampoline(PEGTransformer &transformer, @@ -11347,7 +11349,7 @@ void PEGTransformerFactory::InitializeTriggerColumnListTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTriggerColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -11358,7 +11360,7 @@ PEGTransformerFactory::FinalizeTriggerColumnListTrampoline(PEGTransformer &trans col_id.push_back(process.TakeResult(i)); } auto result = TransformTriggerColumnList(transformer, col_id); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeForEachClauseTrampoline(PEGTransformer &transformer, @@ -11370,16 +11372,16 @@ void PEGTransformerFactory::InitializeForEachClauseTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForEachClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeForEachRowTrampoline(PEGTransformer &transformer, @@ -11387,10 +11389,10 @@ void PEGTransformerFactory::InitializeForEachRowTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForEachRowTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformForEachRow(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeForEachStatementTrampoline(PEGTransformer &transformer, @@ -11398,11 +11400,11 @@ void PEGTransformerFactory::InitializeForEachStatementTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForEachStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformForEachStatement(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCreateTypeStmtTrampoline(PEGTransformer &transformer, @@ -11417,7 +11419,7 @@ void PEGTransformerFactory::InitializeCreateTypeStmtTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTypeStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_not_exists {}; @@ -11427,7 +11429,7 @@ PEGTransformerFactory::FinalizeCreateTypeStmtTrampoline(PEGTransformer &transfor auto qualified_name = process.TakeResult(1); auto create_type = process.TakeResult>(2); auto result = TransformCreateTypeStmt(transformer, if_not_exists, qualified_name, std::move(create_type)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateTypeTrampoline(PEGTransformer &transformer, @@ -11439,15 +11441,15 @@ void PEGTransformerFactory::InitializeCreateTypeTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateTypeFromTypeTrampoline(PEGTransformer &transformer, @@ -11457,12 +11459,12 @@ void PEGTransformerFactory::InitializeCreateTypeFromTypeTrampoline(PEGTransforme process.PushChild({transformer.GetRule("Type"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateTypeFromTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto type = process.TakeResult(0); auto result = TransformCreateTypeFromType(transformer, type); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeEnumSelectTypeTrampoline(PEGTransformer &transformer, @@ -11473,12 +11475,12 @@ void PEGTransformerFactory::InitializeEnumSelectTypeTrampoline(PEGTransformer &t 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEnumSelectTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformEnumSelectType(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeEnumStringLiteralListTrampoline(PEGTransformer &transformer, @@ -11486,7 +11488,7 @@ void PEGTransformerFactory::InitializeEnumStringLiteralListTrampoline(PEGTransfo process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEnumStringLiteralListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -11502,7 +11504,7 @@ PEGTransformerFactory::FinalizeEnumStringLiteralListTrampoline(PEGTransformer &t string_literal = std::move(string_literal_value); } auto result = TransformEnumStringLiteralList(transformer, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateViewStmtTrampoline(PEGTransformer &transformer, @@ -11533,7 +11535,7 @@ void PEGTransformerFactory::InitializeCreateViewStmtTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateViewStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional create_secure {}; @@ -11561,7 +11563,7 @@ PEGTransformerFactory::FinalizeCreateViewStmtTrampoline(PEGTransformer &transfor auto result = TransformCreateViewStmt(transformer, create_secure, create_recursive, if_not_exists, qualified_name, insert_column_list, std::move(with_list), std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateRecursiveTrampoline(PEGTransformer &transformer, @@ -11569,11 +11571,11 @@ void PEGTransformerFactory::InitializeCreateRecursiveTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateRecursiveTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCreateRecursive(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCreateSecureTrampoline(PEGTransformer &transformer, @@ -11581,10 +11583,10 @@ void PEGTransformerFactory::InitializeCreateSecureTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateSecureTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCreateSecure(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDeallocateStatementTrampoline(PEGTransformer &transformer, @@ -11598,7 +11600,7 @@ void PEGTransformerFactory::InitializeDeallocateStatementTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDeallocateStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional deallocate_prepare {}; @@ -11607,7 +11609,7 @@ PEGTransformerFactory::FinalizeDeallocateStatementTrampoline(PEGTransformer &tra } auto col_id_or_string = process.TakeResult(1); auto result = TransformDeallocateStatement(transformer, deallocate_prepare, col_id_or_string); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDeallocatePrepareTrampoline(PEGTransformer &transformer, @@ -11615,11 +11617,11 @@ void PEGTransformerFactory::InitializeDeallocatePrepareTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDeallocatePrepareTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDeallocatePrepare(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDeleteStatementTrampoline(PEGTransformer &transformer, @@ -11645,7 +11647,7 @@ void PEGTransformerFactory::InitializeDeleteStatementTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDeleteStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional with_clause {}; @@ -11668,7 +11670,7 @@ PEGTransformerFactory::FinalizeDeleteStatementTrampoline(PEGTransformer &transfo auto result = TransformDeleteStatement(transformer, std::move(with_clause), std::move(target_opt_alias), std::move(delete_using_clause), std::move(where_clause), std::move(returning_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTruncateStatementTrampoline(PEGTransformer &transformer, @@ -11678,7 +11680,7 @@ void PEGTransformerFactory::InitializeTruncateStatementTrampoline(PEGTransformer process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTruncateStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -11687,7 +11689,7 @@ PEGTransformerFactory::FinalizeTruncateStatementTrampoline(PEGTransformer &trans has_result = has_result_opt.HasResult(); auto base_table_name = process.TakeResult>(0); auto result = TransformTruncateStatement(transformer, has_result, std::move(base_table_name)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTargetOptAliasTrampoline(PEGTransformer &transformer, @@ -11701,7 +11703,7 @@ void PEGTransformerFactory::InitializeTargetOptAliasTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTargetOptAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); @@ -11710,7 +11712,7 @@ PEGTransformerFactory::FinalizeTargetOptAliasTrampoline(PEGTransformer &transfor target_alias = process.TakeResult(1); } auto result = TransformTargetOptAlias(transformer, std::move(base_table_name), target_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTargetAliasTrampoline(PEGTransformer &transformer, @@ -11720,7 +11722,7 @@ void PEGTransformerFactory::InitializeTargetAliasTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTargetAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -11728,7 +11730,7 @@ PEGTransformerFactory::FinalizeTargetAliasTrampoline(PEGTransformer &transformer has_result = has_result_opt.HasResult(); auto col_id = process.TakeResult(0); auto result = TransformTargetAlias(transformer, has_result, col_id); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDeleteUsingClauseTrampoline(PEGTransformer &transformer, @@ -11743,7 +11745,7 @@ void PEGTransformerFactory::InitializeDeleteUsingClauseTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDeleteUsingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -11754,7 +11756,7 @@ PEGTransformerFactory::FinalizeDeleteUsingClauseTrampoline(PEGTransformer &trans table_ref.push_back(process.TakeResult>(i)); } auto result = TransformDeleteUsingClause(transformer, std::move(table_ref)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeDescribeStatementTrampoline(PEGTransformer &transformer, @@ -11766,17 +11768,17 @@ void PEGTransformerFactory::InitializeDescribeStatementTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto child = process.TakeResult>(0); auto result = TransformDescribeStatement(transformer, std::move(child)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeShowDeprecatedSelectTrampoline(PEGTransformer &transformer, @@ -11787,13 +11789,13 @@ void PEGTransformerFactory::InitializeShowDeprecatedSelectTrampoline(PEGTransfor process.PushChild({transformer.GetRule("ShowRule"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowDeprecatedSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto show_rule = process.TakeResult(0); auto select_statement_internal = process.TakeResult>(1); auto result = TransformShowDeprecatedSelect(transformer, show_rule, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDescribeSelectTrampoline(PEGTransformer &transformer, @@ -11804,13 +11806,13 @@ void PEGTransformerFactory::InitializeDescribeSelectTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("DescribeOrSummarize"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto describe_or_summarize = process.TakeResult(0); auto select_statement_internal = process.TakeResult>(1); auto result = TransformDescribeSelect(transformer, describe_or_summarize, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeShowAllTablesTrampoline(PEGTransformer &transformer, @@ -11820,7 +11822,7 @@ void PEGTransformerFactory::InitializeShowAllTablesTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("ShowOrDescribe"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowAllTablesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -11829,7 +11831,7 @@ PEGTransformerFactory::FinalizeShowAllTablesTrampoline(PEGTransformer &transform auto &has_result_opt = list_pr.GetChild(2).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformShowAllTables(transformer, show_or_describe, has_result); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeShowTablesTrampoline(PEGTransformer &transformer, @@ -11840,12 +11842,12 @@ void PEGTransformerFactory::InitializeShowTablesTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("ShowOrDescribe"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowTablesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto show_or_describe = process.TakeResult(0); auto qualified_name = process.TakeResult(1); auto result = TransformShowTables(transformer, show_or_describe, qualified_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeShowByNameTrampoline(PEGTransformer &transformer, @@ -11859,7 +11861,7 @@ void PEGTransformerFactory::InitializeShowByNameTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("ShowRule"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowByNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto show_rule = process.TakeResult(0); optional show_target {}; @@ -11867,7 +11869,7 @@ PEGTransformerFactory::FinalizeShowByNameTrampoline(PEGTransformer &transformer, show_target = process.TakeResult(1); } auto result = TransformShowByName(transformer, show_rule, std::move(show_target)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDescribeByNameTrampoline(PEGTransformer &transformer, @@ -11881,7 +11883,7 @@ void PEGTransformerFactory::InitializeDescribeByNameTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("DescribeOrSummarize"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeByNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto describe_or_summarize = process.TakeResult(0); @@ -11890,7 +11892,7 @@ PEGTransformerFactory::FinalizeDescribeByNameTrampoline(PEGTransformer &transfor describe_target = process.TakeResult(1); } auto result = TransformDescribeByName(transformer, describe_or_summarize, std::move(describe_target)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDescribeOrSummarizeTrampoline(PEGTransformer &transformer, @@ -11902,16 +11904,16 @@ void PEGTransformerFactory::InitializeDescribeOrSummarizeTrampoline(PEGTransform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeOrSummarizeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeShowTargetTrampoline(PEGTransformer &transformer, @@ -11922,22 +11924,22 @@ void PEGTransformerFactory::InitializeShowTargetTrampoline(PEGTransformer &trans process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (!has_transform_process && (choice_result.name == "ShowSpecialForm")) { + if (!has_transform_process && (choice_result.Name() == "ShowSpecialForm")) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { DescribeTarget result {}; if (process.child_results[0]) { result = process.TakeResult(0); } - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeShowDeprecatedQualifiedTableNameTrampoline(PEGTransformer &transformer, @@ -11947,12 +11949,12 @@ void PEGTransformerFactory::InitializeShowDeprecatedQualifiedTableNameTrampoline process.PushChild({transformer.GetRule("QualifiedTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowDeprecatedQualifiedTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto qualified_table_name = process.TakeResult>(0); auto result = TransformShowDeprecatedQualifiedTableName(transformer, std::move(qualified_table_name)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeShowSettingNameTrampoline(PEGTransformer &transformer, @@ -11960,13 +11962,13 @@ void PEGTransformerFactory::InitializeShowSettingNameTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowSettingNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto setting_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformShowSettingName(transformer, setting_name); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDescribeTargetTrampoline(PEGTransformer &transformer, @@ -11978,16 +11980,16 @@ void PEGTransformerFactory::InitializeDescribeTargetTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDescribeBaseTableNameTrampoline(PEGTransformer &transformer, @@ -11997,12 +11999,12 @@ void PEGTransformerFactory::InitializeDescribeBaseTableNameTrampoline(PEGTransfo process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeBaseTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); auto result = TransformDescribeBaseTableName(transformer, std::move(base_table_name)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDescribeStringLiteralTrampoline(PEGTransformer &transformer, @@ -12010,13 +12012,13 @@ void PEGTransformerFactory::InitializeDescribeStringLiteralTrampoline(PEGTransfo process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(0)); auto result = TransformDescribeStringLiteral(transformer, string_literal); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeSummarizeTrampoline(PEGTransformer &transformer, @@ -12026,11 +12028,11 @@ void PEGTransformerFactory::InitializeSummarizeTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("SummarizeRule"), list_pr.GetChild(0)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeSummarizeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeSummarizeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto summarize_rule = process.TakeResult(0); auto result = TransformSummarize(transformer, summarize_rule); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSummarizeRuleTrampoline(PEGTransformer &transformer, @@ -12038,11 +12040,11 @@ void PEGTransformerFactory::InitializeSummarizeRuleTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSummarizeRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSummarizeRule(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeShowOrDescribeTrampoline(PEGTransformer &transformer, @@ -12054,16 +12056,16 @@ void PEGTransformerFactory::InitializeShowOrDescribeTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowOrDescribeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeShowRuleTrampoline(PEGTransformer &transformer, @@ -12071,10 +12073,10 @@ void PEGTransformerFactory::InitializeShowRuleTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeShowRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeShowRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformShowRule(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDescribeRuleTrampoline(PEGTransformer &transformer, @@ -12086,15 +12088,15 @@ void PEGTransformerFactory::InitializeDescribeRuleTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDescribeLongRuleTrampoline(PEGTransformer &transformer, @@ -12102,11 +12104,11 @@ void PEGTransformerFactory::InitializeDescribeLongRuleTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescribeLongRuleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDescribeLongRule(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDescRuleTrampoline(PEGTransformer &transformer, @@ -12114,10 +12116,10 @@ void PEGTransformerFactory::InitializeDescRuleTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeDescRuleTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDescRuleTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformDescRule(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDetachStatementTrampoline(PEGTransformer &transformer, @@ -12130,7 +12132,7 @@ void PEGTransformerFactory::InitializeDetachStatementTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDetachStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -12143,7 +12145,7 @@ PEGTransformerFactory::FinalizeDetachStatementTrampoline(PEGTransformer &transfo } auto catalog_name = list_pr.GetChild(3).Cast().identifier; auto result = TransformDetachStatement(transformer, has_result, if_exists, catalog_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropStatementTrampoline(PEGTransformer &transformer, @@ -12157,7 +12159,7 @@ void PEGTransformerFactory::InitializeDropStatementTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("DropEntries"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto drop_entries = process.TakeResult>(0); @@ -12166,7 +12168,7 @@ PEGTransformerFactory::FinalizeDropStatementTrampoline(PEGTransformer &transform drop_behavior = process.TakeResult(1); } auto result = TransformDropStatement(transformer, std::move(drop_entries), drop_behavior); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropEntriesTrampoline(PEGTransformer &transformer, @@ -12178,15 +12180,15 @@ void PEGTransformerFactory::InitializeDropEntriesTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropEntriesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropTriggerTrampoline(PEGTransformer &transformer, @@ -12201,7 +12203,7 @@ void PEGTransformerFactory::InitializeDropTriggerTrampoline(PEGTransformer &tran } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropTriggerTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_exists {}; if (process.child_results[0]) { @@ -12210,7 +12212,7 @@ PEGTransformerFactory::FinalizeDropTriggerTrampoline(PEGTransformer &transformer auto trigger_name = process.TakeResult(1); auto base_table_name = process.TakeResult>(2); auto result = TransformDropTrigger(transformer, if_exists, trigger_name, std::move(base_table_name)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropTableTrampoline(PEGTransformer &transformer, @@ -12230,8 +12232,8 @@ void PEGTransformerFactory::InitializeDropTableTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("TableOrView"), list_pr.GetChild(0)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeDropTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDropTableTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(2)); auto dynamic_child_count = dynamic_list_items.size(); @@ -12245,7 +12247,7 @@ PEGTransformerFactory::FinalizeDropTableTrampoline(PEGTransformer &transformer, base_table_name.push_back(process.TakeResult>(i)); } auto result = TransformDropTable(transformer, table_or_view, if_exists, std::move(base_table_name)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropTableFunctionTrampoline(PEGTransformer &transformer, @@ -12259,7 +12261,7 @@ void PEGTransformerFactory::InitializeDropTableFunctionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("CommentMacroTable"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -12274,7 +12276,7 @@ PEGTransformerFactory::FinalizeDropTableFunctionTrampoline(PEGTransformer &trans table_function_name.push_back(table_function_name_item.get().Cast().identifier); } auto result = TransformDropTableFunction(transformer, comment_macro_table, if_exists, table_function_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropFunctionTrampoline(PEGTransformer &transformer, @@ -12294,7 +12296,7 @@ void PEGTransformerFactory::InitializeDropFunctionTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("FunctionTypeMacro"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(2)); @@ -12309,7 +12311,7 @@ PEGTransformerFactory::FinalizeDropFunctionTrampoline(PEGTransformer &transforme function_identifier.push_back(process.TakeResult(i)); } auto result = TransformDropFunction(transformer, function_type_macro, if_exists, function_identifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropSchemaTrampoline(PEGTransformer &transformer, @@ -12328,7 +12330,7 @@ void PEGTransformerFactory::InitializeDropSchemaTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(2)); @@ -12342,7 +12344,7 @@ PEGTransformerFactory::FinalizeDropSchemaTrampoline(PEGTransformer &transformer, qualified_name.push_back(process.TakeResult(i)); } auto result = TransformDropSchema(transformer, if_exists, qualified_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropIndexTrampoline(PEGTransformer &transformer, @@ -12361,8 +12363,8 @@ void PEGTransformerFactory::InitializeDropIndexTrampoline(PEGTransformer &transf } } -unique_ptr -PEGTransformerFactory::FinalizeDropIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDropIndexTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(2)); auto dynamic_child_count = dynamic_list_items.size(); @@ -12375,7 +12377,7 @@ PEGTransformerFactory::FinalizeDropIndexTrampoline(PEGTransformer &transformer, qualified_index_name.push_back(process.TakeResult(i)); } auto result = TransformDropIndex(transformer, if_exists, qualified_index_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeQualifiedIndexNameTrampoline(PEGTransformer &transformer, @@ -12387,16 +12389,16 @@ void PEGTransformerFactory::InitializeQualifiedIndexNameTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedIndexNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeQualifiedIndexNameStringTrampoline(PEGTransformer &transformer, @@ -12404,13 +12406,13 @@ void PEGTransformerFactory::InitializeQualifiedIndexNameStringTrampoline(PEGTran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedIndexNameStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto index_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformQualifiedIndexNameString(transformer, index_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSchemaReservedIndexTrampoline(PEGTransformer &transformer, @@ -12420,14 +12422,14 @@ void PEGTransformerFactory::InitializeSchemaReservedIndexTrampoline(PEGTransform process.PushChild({transformer.GetRule("SchemaQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaReservedIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto schema_qualification = process.TakeResult(0); auto reserved_index_name = list_pr.GetChild(1).Cast().identifier; auto result = TransformSchemaReservedIndex(transformer, schema_qualification, reserved_index_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCatalogReservedSchemaIndexTrampoline(PEGTransformer &transformer, @@ -12438,7 +12440,7 @@ void PEGTransformerFactory::InitializeCatalogReservedSchemaIndexTrampoline(PEGTr process.PushChild({transformer.GetRule("CatalogQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogReservedSchemaIndexTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -12447,7 +12449,7 @@ PEGTransformerFactory::FinalizeCatalogReservedSchemaIndexTrampoline(PEGTransform auto reserved_index_name = list_pr.GetChild(2).Cast().identifier; auto result = TransformCatalogReservedSchemaIndex(transformer, catalog_qualification, reserved_schema_qualification, reserved_index_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDropSequenceTrampoline(PEGTransformer &transformer, @@ -12466,7 +12468,7 @@ void PEGTransformerFactory::InitializeDropSequenceTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropSequenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(2)); @@ -12480,7 +12482,7 @@ PEGTransformerFactory::FinalizeDropSequenceTrampoline(PEGTransformer &transforme qualified_sequence_name.push_back(process.TakeResult(i)); } auto result = TransformDropSequence(transformer, if_exists, qualified_sequence_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropCollationTrampoline(PEGTransformer &transformer, @@ -12499,7 +12501,7 @@ void PEGTransformerFactory::InitializeDropCollationTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropCollationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -12514,7 +12516,7 @@ PEGTransformerFactory::FinalizeDropCollationTrampoline(PEGTransformer &transform collation_name.push_back(process.TakeResult(i)); } auto result = TransformDropCollation(transformer, if_exists, collation_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropTypeTrampoline(PEGTransformer &transformer, @@ -12533,8 +12535,8 @@ void PEGTransformerFactory::InitializeDropTypeTrampoline(PEGTransformer &transfo } } -unique_ptr PEGTransformerFactory::FinalizeDropTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDropTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(2)); auto dynamic_child_count = dynamic_list_items.size(); @@ -12547,7 +12549,7 @@ unique_ptr PEGTransformerFactory::FinalizeDropTypeTrampoli qualified_type_name.push_back(process.TakeResult(i)); } auto result = TransformDropType(transformer, if_exists, qualified_type_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDropSecretTrampoline(PEGTransformer &transformer, @@ -12569,7 +12571,7 @@ void PEGTransformerFactory::InitializeDropSecretTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropSecretTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional temporary {}; if (process.child_results[0]) { @@ -12585,7 +12587,7 @@ PEGTransformerFactory::FinalizeDropSecretTrampoline(PEGTransformer &transformer, drop_secret_storage = process.TakeResult(3); } auto result = TransformDropSecret(transformer, temporary, if_exists, secret_name, drop_secret_storage); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableOrViewTrampoline(PEGTransformer &transformer, @@ -12597,15 +12599,15 @@ void PEGTransformerFactory::InitializeTableOrViewTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableOrViewTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMaterializedViewEntryTrampoline(PEGTransformer &transformer, @@ -12613,11 +12615,11 @@ void PEGTransformerFactory::InitializeMaterializedViewEntryTrampoline(PEGTransfo process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMaterializedViewEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformMaterializedViewEntry(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFunctionTypeMacroTrampoline(PEGTransformer &transformer, @@ -12629,16 +12631,16 @@ void PEGTransformerFactory::InitializeFunctionTypeMacroTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionTypeMacroTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFunctionTypeMacroKeywordTrampoline(PEGTransformer &transformer, @@ -12646,11 +12648,11 @@ void PEGTransformerFactory::InitializeFunctionTypeMacroKeywordTrampoline(PEGTran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionTypeMacroKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformFunctionTypeMacroKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFunctionTypeFunctionTrampoline(PEGTransformer &transformer, @@ -12658,11 +12660,11 @@ void PEGTransformerFactory::InitializeFunctionTypeFunctionTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionTypeFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformFunctionTypeFunction(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDropBehaviorTrampoline(PEGTransformer &transformer, @@ -12674,15 +12676,15 @@ void PEGTransformerFactory::InitializeDropBehaviorTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropBehaviorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCascadeDropBehaviorTrampoline(PEGTransformer &transformer, @@ -12690,11 +12692,11 @@ void PEGTransformerFactory::InitializeCascadeDropBehaviorTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCascadeDropBehaviorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCascadeDropBehavior(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRestrictDropBehaviorTrampoline(PEGTransformer &transformer, @@ -12702,11 +12704,11 @@ void PEGTransformerFactory::InitializeRestrictDropBehaviorTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRestrictDropBehaviorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformRestrictDropBehavior(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIfExistsTrampoline(PEGTransformer &transformer, @@ -12714,10 +12716,10 @@ void PEGTransformerFactory::InitializeIfExistsTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeIfExistsTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeIfExistsTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformIfExists(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDropSecretStorageTrampoline(PEGTransformer &transformer, @@ -12725,13 +12727,13 @@ void PEGTransformerFactory::InitializeDropSecretStorageTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropSecretStorageTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(1).Cast().identifier; auto result = TransformDropSecretStorage(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExecuteStatementTrampoline(PEGTransformer &transformer, @@ -12745,7 +12747,7 @@ void PEGTransformerFactory::InitializeExecuteStatementTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExecuteStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); @@ -12754,7 +12756,7 @@ PEGTransformerFactory::FinalizeExecuteStatementTrampoline(PEGTransformer &transf table_function_arguments = process.TakeResult>(1); } auto result = TransformExecuteStatement(transformer, col_id_or_string, std::move(table_function_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExplainStatementTrampoline(PEGTransformer &transformer, @@ -12772,7 +12774,7 @@ void PEGTransformerFactory::InitializeExplainStatementTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExplainStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional analyze_keyword {}; @@ -12786,7 +12788,7 @@ PEGTransformerFactory::FinalizeExplainStatementTrampoline(PEGTransformer &transf auto explainable_statements = process.TakeResult>(2); auto result = TransformExplainStatement(transformer, analyze_keyword, explain_option_list, std::move(explainable_statements)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExplainOptionListTrampoline(PEGTransformer &transformer, @@ -12801,7 +12803,7 @@ void PEGTransformerFactory::InitializeExplainOptionListTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExplainOptionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -12812,7 +12814,7 @@ PEGTransformerFactory::FinalizeExplainOptionListTrampoline(PEGTransformer &trans explain_option.push_back(process.TakeResult(i)); } auto result = TransformExplainOptionList(transformer, explain_option); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeExplainOptionTrampoline(PEGTransformer &transformer, @@ -12826,7 +12828,7 @@ void PEGTransformerFactory::InitializeExplainOptionTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("ExplainOptionName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExplainOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto explain_option_name = process.TakeResult(0); @@ -12835,7 +12837,7 @@ PEGTransformerFactory::FinalizeExplainOptionTrampoline(PEGTransformer &transform expression = process.TakeResult>(1); } auto result = TransformExplainOption(transformer, explain_option_name, std::move(expression)); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExplainOptionNameTrampoline(PEGTransformer &transformer, @@ -12846,12 +12848,12 @@ void PEGTransformerFactory::InitializeExplainOptionNameTrampoline(PEGTransformer process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (choice_result.name.empty() || choice_result.type == ParseResultType::IDENTIFIER || + if (choice_result.Name().empty() || choice_result.type == ParseResultType::IDENTIFIER || choice_result.type == ParseResultType::KEYWORD || choice_result.type == ParseResultType::STRING) { return; } if (!has_transform_process && - (choice_result.name == "FuncNameKeyword" || choice_result.name == "TypeNameKeyword")) { + (choice_result.Name() == "FuncNameKeyword" || choice_result.Name() == "TypeNameKeyword")) { return; } if (!has_transform_process) { @@ -12860,7 +12862,7 @@ void PEGTransformerFactory::InitializeExplainOptionNameTrampoline(PEGTransformer process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExplainOptionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -12871,7 +12873,7 @@ PEGTransformerFactory::FinalizeExplainOptionNameTrampoline(PEGTransformer &trans } else { result = TransformExplainOptionName(transformer, choice_result); } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExplainSelectStatementTrampoline(PEGTransformer &transformer, @@ -12881,12 +12883,12 @@ void PEGTransformerFactory::InitializeExplainSelectStatementTrampoline(PEGTransf process.PushChild({transformer.GetRule("SelectStatementInternal"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExplainSelectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformExplainSelectStatement(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExplainableStatementsTrampoline(PEGTransformer &transformer, @@ -12898,16 +12900,16 @@ void PEGTransformerFactory::InitializeExplainableStatementsTrampoline(PEGTransfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExplainableStatementsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExportStatementTrampoline(PEGTransformer &transformer, @@ -12924,7 +12926,7 @@ void PEGTransformerFactory::InitializeExportStatementTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExportStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -12938,7 +12940,7 @@ PEGTransformerFactory::FinalizeExportStatementTrampoline(PEGTransformer &transfo generic_copy_option_list = process.TakeResult>(1); } auto result = TransformExportStatement(transformer, export_source, string_literal, generic_copy_option_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExportSourceTrampoline(PEGTransformer &transformer, @@ -12946,12 +12948,12 @@ void PEGTransformerFactory::InitializeExportSourceTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExportSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto catalog_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformExportSource(transformer, catalog_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeImportStatementTrampoline(PEGTransformer &transformer, @@ -12959,13 +12961,13 @@ void PEGTransformerFactory::InitializeImportStatementTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeImportStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(2)); auto result = TransformImportStatement(transformer, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColumnReferenceTrampoline(PEGTransformer &transformer, @@ -12977,17 +12979,17 @@ void PEGTransformerFactory::InitializeColumnReferenceTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnReferenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto child = process.TakeResult>(0); auto result = TransformColumnReference(transformer, std::move(child)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNestedSchemaTableColumnNameTrampoline(PEGTransformer &transformer, @@ -13007,7 +13009,7 @@ void PEGTransformerFactory::InitializeNestedSchemaTableColumnNameTrampoline(PEGT process.PushChild({transformer.GetRule("CatalogQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNestedSchemaTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13025,7 +13027,7 @@ PEGTransformerFactory::FinalizeNestedSchemaTableColumnNameTrampoline(PEGTransfor auto result = TransformNestedSchemaTableColumnName(transformer, catalog_qualification, reserved_schema_qualification, reserved_schema_qualification_1, reserved_schema_qualification_2, reserved_column_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCatalogReservedSchemaTableColumnNameTrampoline( @@ -13037,7 +13039,7 @@ void PEGTransformerFactory::InitializeCatalogReservedSchemaTableColumnNameTrampo process.PushChild({transformer.GetRule("CatalogQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogReservedSchemaTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13048,7 +13050,7 @@ PEGTransformerFactory::FinalizeCatalogReservedSchemaTableColumnNameTrampoline(PE auto result = TransformCatalogReservedSchemaTableColumnName(transformer, catalog_qualification, reserved_schema_qualification, reserved_table_qualification, reserved_column_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSchemaReservedTableColumnNameTrampoline(PEGTransformer &transformer, @@ -13059,7 +13061,7 @@ void PEGTransformerFactory::InitializeSchemaReservedTableColumnNameTrampoline(PE process.PushChild({transformer.GetRule("SchemaQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaReservedTableColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13068,7 +13070,7 @@ PEGTransformerFactory::FinalizeSchemaReservedTableColumnNameTrampoline(PEGTransf auto reserved_column_name = list_pr.GetChild(2).Cast().identifier; auto result = TransformSchemaReservedTableColumnName(transformer, schema_qualification, reserved_table_qualification, reserved_column_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableReservedColumnNameTrampoline(PEGTransformer &transformer, @@ -13078,14 +13080,14 @@ void PEGTransformerFactory::InitializeTableReservedColumnNameTrampoline(PEGTrans process.PushChild({transformer.GetRule("TableQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableReservedColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto table_qualification = process.TakeResult(0); auto reserved_column_name = list_pr.GetChild(1).Cast().identifier; auto result = TransformTableReservedColumnName(transformer, table_qualification, reserved_column_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFunctionExpressionTrampoline(PEGTransformer &transformer, @@ -13108,7 +13110,7 @@ void PEGTransformerFactory::InitializeFunctionExpressionTrampoline(PEGTransforme process.PushChild({transformer.GetRule("FunctionIdentifier"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13132,7 +13134,7 @@ PEGTransformerFactory::FinalizeFunctionExpressionTrampoline(PEGTransformer &tran auto result = TransformFunctionExpression(transformer, function_identifier, std::move(function_expression_arguments), std::move(within_group_clause), std::move(filter_clause), has_result, std::move(over_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFunctionExpressionArgumentsTrampoline(PEGTransformer &transformer, @@ -13143,12 +13145,12 @@ void PEGTransformerFactory::InitializeFunctionExpressionArgumentsTrampoline(PEGT {transformer.GetRule("FunctionExpressionArgumentList"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionExpressionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto function_expression_argument_list = process.TakeResult(0); auto result = TransformFunctionExpressionArguments(transformer, std::move(function_expression_argument_list)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFunctionExpressionArgumentListTrampoline(PEGTransformer &transformer, @@ -13173,7 +13175,7 @@ void PEGTransformerFactory::InitializeFunctionExpressionArgumentListTrampoline(P } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionExpressionArgumentListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional distinct_or_all {}; @@ -13195,7 +13197,7 @@ PEGTransformerFactory::FinalizeFunctionExpressionArgumentListTrampoline(PEGTrans auto result = TransformFunctionExpressionArgumentList(transformer, distinct_or_all, std::move(function_argument_list), std::move(order_by_clause), ignore_or_respect_nulls); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFunctionArgumentListTrampoline(PEGTransformer &transformer, @@ -13210,7 +13212,7 @@ void PEGTransformerFactory::InitializeFunctionArgumentListTrampoline(PEGTransfor } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionArgumentListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13221,7 +13223,7 @@ PEGTransformerFactory::FinalizeFunctionArgumentListTrampoline(PEGTransformer &tr function_argument.push_back(process.TakeResult(i)); } auto result = TransformFunctionArgumentList(transformer, std::move(function_argument)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFunctionIdentifierTrampoline(PEGTransformer &transformer, @@ -13233,16 +13235,16 @@ void PEGTransformerFactory::InitializeFunctionIdentifierTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFunctionNameAsQualifiedNameTrampoline(PEGTransformer &transformer, @@ -13250,13 +13252,13 @@ void PEGTransformerFactory::InitializeFunctionNameAsQualifiedNameTrampoline(PEGT process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionNameAsQualifiedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto function_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformFunctionNameAsQualifiedName(transformer, function_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCatalogReservedSchemaFunctionNameTrampoline(PEGTransformer &transformer, @@ -13280,7 +13282,7 @@ void PEGTransformerFactory::InitializeCatalogReservedSchemaFunctionNameTrampolin process.PushChild({transformer.GetRule("CatalogQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogReservedSchemaFunctionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13303,7 +13305,7 @@ PEGTransformerFactory::FinalizeCatalogReservedSchemaFunctionNameTrampoline(PEGTr auto reserved_function_name = list_pr.GetChild(2).Cast().identifier; auto result = TransformCatalogReservedSchemaFunctionName(transformer, catalog_qualification, reserved_schema_qualification, reserved_function_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSchemaReservedFunctionNameTrampoline(PEGTransformer &transformer, @@ -13313,14 +13315,14 @@ void PEGTransformerFactory::InitializeSchemaReservedFunctionNameTrampoline(PEGTr process.PushChild({transformer.GetRule("SchemaQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaReservedFunctionNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto schema_qualification = process.TakeResult(0); auto reserved_function_name = list_pr.GetChild(1).Cast().identifier; auto result = TransformSchemaReservedFunctionName(transformer, schema_qualification, reserved_function_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDistinctOrAllTrampoline(PEGTransformer &transformer, @@ -13332,16 +13334,16 @@ void PEGTransformerFactory::InitializeDistinctOrAllTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDistinctOrAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDistinctKeywordTrampoline(PEGTransformer &transformer, @@ -13349,11 +13351,11 @@ void PEGTransformerFactory::InitializeDistinctKeywordTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDistinctKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDistinctKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAllKeywordTrampoline(PEGTransformer &transformer, @@ -13361,10 +13363,10 @@ void PEGTransformerFactory::InitializeAllKeywordTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAllKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformAllKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWithinGroupClauseTrampoline(PEGTransformer &transformer, @@ -13374,12 +13376,12 @@ void PEGTransformerFactory::InitializeWithinGroupClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("OrderByClause"), ExtractResultFromParens(list_pr.GetChild(2))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithinGroupClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto order_by_clause = process.TakeResult>(0); auto result = TransformWithinGroupClause(transformer, std::move(order_by_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFilterClauseTrampoline(PEGTransformer &transformer, @@ -13389,11 +13391,11 @@ void PEGTransformerFactory::InitializeFilterClauseTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("FilterClauseExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFilterClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto filter_clause_expression = process.TakeResult>(0); auto result = TransformFilterClause(transformer, std::move(filter_clause_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFilterClauseExpressionTrampoline(PEGTransformer &transformer, @@ -13403,12 +13405,12 @@ void PEGTransformerFactory::InitializeFilterClauseExpressionTrampoline(PEGTransf process.PushChild({transformer.GetRule("FilterClauseContents"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFilterClauseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto filter_clause_contents = process.TakeResult>(0); auto result = TransformFilterClauseExpression(transformer, std::move(filter_clause_contents)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFilterClauseContentsTrampoline(PEGTransformer &transformer, @@ -13418,7 +13420,7 @@ void PEGTransformerFactory::InitializeFilterClauseContentsTrampoline(PEGTransfor process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFilterClauseContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13427,7 +13429,7 @@ PEGTransformerFactory::FinalizeFilterClauseContentsTrampoline(PEGTransformer &tr has_result = has_result_opt.HasResult(); auto expression = process.TakeResult>(0); auto result = TransformFilterClauseContents(transformer, has_result, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIgnoreOrRespectNullsTrampoline(PEGTransformer &transformer, @@ -13439,16 +13441,16 @@ void PEGTransformerFactory::InitializeIgnoreOrRespectNullsTrampoline(PEGTransfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIgnoreOrRespectNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIgnoreNullsTrampoline(PEGTransformer &transformer, @@ -13456,10 +13458,10 @@ void PEGTransformerFactory::InitializeIgnoreNullsTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIgnoreNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformIgnoreNulls(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRespectNullsTrampoline(PEGTransformer &transformer, @@ -13467,10 +13469,10 @@ void PEGTransformerFactory::InitializeRespectNullsTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRespectNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformRespectNulls(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeParenthesisExpressionTrampoline(PEGTransformer &transformer, @@ -13491,7 +13493,7 @@ void PEGTransformerFactory::InitializeParenthesisExpressionTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeParenthesisExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13511,7 +13513,7 @@ PEGTransformerFactory::FinalizeParenthesisExpressionTrampoline(PEGTransformer &t expression = std::move(expression_value); } auto result = TransformParenthesisExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeConstantLiteralTrampoline(PEGTransformer &transformer, @@ -13523,17 +13525,17 @@ void PEGTransformerFactory::InitializeConstantLiteralTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeConstantLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto child = process.TakeResult(0); auto result = TransformConstantLiteral(transformer, child); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNullLiteralTrampoline(PEGTransformer &transformer, @@ -13541,10 +13543,10 @@ void PEGTransformerFactory::InitializeNullLiteralTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNullLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNullLiteral(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTrueLiteralTrampoline(PEGTransformer &transformer, @@ -13552,10 +13554,10 @@ void PEGTransformerFactory::InitializeTrueLiteralTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTrueLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTrueLiteral(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFalseLiteralTrampoline(PEGTransformer &transformer, @@ -13563,10 +13565,10 @@ void PEGTransformerFactory::InitializeFalseLiteralTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFalseLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformFalseLiteral(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCastExpressionTrampoline(PEGTransformer &transformer, @@ -13577,13 +13579,13 @@ void PEGTransformerFactory::InitializeCastExpressionTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("CastOrTryCast"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCastExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto cast_or_try_cast = process.TakeResult(0); auto cast_arguments = process.TakeResult(1); auto result = TransformCastExpression(transformer, cast_or_try_cast, std::move(cast_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCastArgumentsTrampoline(PEGTransformer &transformer, @@ -13594,13 +13596,13 @@ void PEGTransformerFactory::InitializeCastArgumentsTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCastArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto type = process.TakeResult(1); auto result = TransformCastArguments(transformer, std::move(expression), type); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCastOrTryCastTrampoline(PEGTransformer &transformer, @@ -13612,16 +13614,16 @@ void PEGTransformerFactory::InitializeCastOrTryCastTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCastOrTryCastTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCastKeywordTrampoline(PEGTransformer &transformer, @@ -13629,10 +13631,10 @@ void PEGTransformerFactory::InitializeCastKeywordTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCastKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCastKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTryCastKeywordTrampoline(PEGTransformer &transformer, @@ -13640,11 +13642,11 @@ void PEGTransformerFactory::InitializeTryCastKeywordTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTryCastKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTryCastKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeColIdDotTrampoline(PEGTransformer &transformer, @@ -13654,11 +13656,11 @@ void PEGTransformerFactory::InitializeColIdDotTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(0)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeColIdDotTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeColIdDotTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformColIdDot(transformer, col_id); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeStarExpressionTrampoline(PEGTransformer &transformer, @@ -13683,7 +13685,7 @@ void PEGTransformerFactory::InitializeStarExpressionTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStarExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> star_qualifier_list {}; @@ -13704,7 +13706,7 @@ PEGTransformerFactory::FinalizeStarExpressionTrampoline(PEGTransformer &transfor } auto result = TransformStarExpression(transformer, star_qualifier_list, exclude_list, std::move(replace_list), rename_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeStarQualifierListTrampoline(PEGTransformer &transformer, @@ -13720,7 +13722,7 @@ void PEGTransformerFactory::InitializeStarQualifierListTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStarQualifierListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13732,7 +13734,7 @@ PEGTransformerFactory::FinalizeStarQualifierListTrampoline(PEGTransformer &trans col_id_dot.push_back(process.TakeResult(i)); } auto result = TransformStarQualifierList(transformer, col_id_dot); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeExcludeListTrampoline(PEGTransformer &transformer, @@ -13742,11 +13744,11 @@ void PEGTransformerFactory::InitializeExcludeListTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ExcludeNames"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto exclude_names = process.TakeResult(0); auto result = TransformExcludeList(transformer, exclude_names); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeNamesTrampoline(PEGTransformer &transformer, @@ -13758,15 +13760,15 @@ void PEGTransformerFactory::InitializeExcludeNamesTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeNamesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeNameListTrampoline(PEGTransformer &transformer, @@ -13781,7 +13783,7 @@ void PEGTransformerFactory::InitializeExcludeNameListTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13792,7 +13794,7 @@ PEGTransformerFactory::FinalizeExcludeNameListTrampoline(PEGTransformer &transfo exclude_name.push_back(process.TakeResult(i)); } auto result = TransformExcludeNameList(transformer, exclude_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeNameSingleTrampoline(PEGTransformer &transformer, @@ -13802,12 +13804,12 @@ void PEGTransformerFactory::InitializeExcludeNameSingleTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ExcludeName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeNameSingleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto exclude_name = process.TakeResult(0); auto result = TransformExcludeNameSingle(transformer, exclude_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeNameTrampoline(PEGTransformer &transformer, @@ -13819,15 +13821,15 @@ void PEGTransformerFactory::InitializeExcludeNameTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeDottedNameTrampoline(PEGTransformer &transformer, @@ -13837,12 +13839,12 @@ void PEGTransformerFactory::InitializeExcludeDottedNameTrampoline(PEGTransformer process.PushChild({transformer.GetRule("DottedIdentifier"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeDottedNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto dotted_identifier = process.TakeResult>(0); auto result = TransformExcludeDottedName(transformer, dotted_identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeColumnNameTrampoline(PEGTransformer &transformer, @@ -13852,12 +13854,12 @@ void PEGTransformerFactory::InitializeExcludeColumnNameTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); auto result = TransformExcludeColumnName(transformer, col_id_or_string); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReplaceListTrampoline(PEGTransformer &transformer, @@ -13867,11 +13869,11 @@ void PEGTransformerFactory::InitializeReplaceListTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ReplaceEntries"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReplaceListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto replace_entries = process.TakeResult>>(0); auto result = TransformReplaceList(transformer, std::move(replace_entries)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeReplaceEntriesTrampoline(PEGTransformer &transformer, @@ -13883,16 +13885,16 @@ void PEGTransformerFactory::InitializeReplaceEntriesTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReplaceEntriesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>>(0); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeReplaceEntrySingleTrampoline(PEGTransformer &transformer, @@ -13902,12 +13904,12 @@ void PEGTransformerFactory::InitializeReplaceEntrySingleTrampoline(PEGTransforme process.PushChild({transformer.GetRule("ReplaceEntry"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReplaceEntrySingleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto replace_entry = process.TakeResult>>(0); auto result = TransformReplaceEntrySingle(transformer, std::move(replace_entry)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeReplaceEntryListTrampoline(PEGTransformer &transformer, @@ -13922,7 +13924,7 @@ void PEGTransformerFactory::InitializeReplaceEntryListTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReplaceEntryListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -13933,7 +13935,7 @@ PEGTransformerFactory::FinalizeReplaceEntryListTrampoline(PEGTransformer &transf replace_entry.push_back(process.TakeResult>>(i)); } auto result = TransformReplaceEntryList(transformer, std::move(replace_entry)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeReplaceEntryTrampoline(PEGTransformer &transformer, @@ -13944,12 +13946,12 @@ void PEGTransformerFactory::InitializeReplaceEntryTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReplaceEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto column_reference = process.TakeResult>(1); auto result = TransformReplaceEntry(transformer, std::move(expression), std::move(column_reference)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeRenameListTrampoline(PEGTransformer &transformer, @@ -13959,11 +13961,11 @@ void PEGTransformerFactory::InitializeRenameListTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("RenameEntries"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRenameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto rename_entries = process.TakeResult>(0); auto result = TransformRenameList(transformer, rename_entries); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeRenameEntriesTrampoline(PEGTransformer &transformer, @@ -13975,16 +13977,16 @@ void PEGTransformerFactory::InitializeRenameEntriesTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRenameEntriesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeRenameEntryListTrampoline(PEGTransformer &transformer, @@ -13999,7 +14001,7 @@ void PEGTransformerFactory::InitializeRenameEntryListTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRenameEntryListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -14010,7 +14012,7 @@ PEGTransformerFactory::FinalizeRenameEntryListTrampoline(PEGTransformer &transfo rename_entry.push_back(process.TakeResult>(i)); } auto result = TransformRenameEntryList(transformer, rename_entry); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeSingleRenameEntryTrampoline(PEGTransformer &transformer, @@ -14020,12 +14022,12 @@ void PEGTransformerFactory::InitializeSingleRenameEntryTrampoline(PEGTransformer process.PushChild({transformer.GetRule("RenameEntry"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSingleRenameEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto rename_entry = process.TakeResult>(0); auto result = TransformSingleRenameEntry(transformer, rename_entry); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeRenameEntryTrampoline(PEGTransformer &transformer, @@ -14035,13 +14037,13 @@ void PEGTransformerFactory::InitializeRenameEntryTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ExcludeName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRenameEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto exclude_name = process.TakeResult(0); auto identifier = list_pr.GetChild(2).Cast().identifier; auto result = TransformRenameEntry(transformer, exclude_name, identifier); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeSubqueryExpressionTrampoline(PEGTransformer &transformer, @@ -14059,7 +14061,7 @@ void PEGTransformerFactory::InitializeSubqueryExpressionTrampoline(PEGTransforme } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubqueryExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional subquery_not {}; @@ -14073,7 +14075,7 @@ PEGTransformerFactory::FinalizeSubqueryExpressionTrampoline(PEGTransformer &tran auto subquery_reference = process.TakeResult>(2); auto result = TransformSubqueryExpression(transformer, subquery_not, subquery_exists, std::move(subquery_reference)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSubqueryNotTrampoline(PEGTransformer &transformer, @@ -14081,10 +14083,10 @@ void PEGTransformerFactory::InitializeSubqueryNotTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubqueryNotTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSubqueryNot(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSubqueryExistsTrampoline(PEGTransformer &transformer, @@ -14092,11 +14094,11 @@ void PEGTransformerFactory::InitializeSubqueryExistsTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubqueryExistsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSubqueryExists(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCaseExpressionTrampoline(PEGTransformer &transformer, @@ -14120,7 +14122,7 @@ void PEGTransformerFactory::InitializeCaseExpressionTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCaseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -14141,7 +14143,7 @@ PEGTransformerFactory::FinalizeCaseExpressionTrampoline(PEGTransformer &transfor } auto result = TransformCaseExpression(transformer, std::move(expression), std::move(case_when_then), std::move(case_else)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCaseWhenThenTrampoline(PEGTransformer &transformer, @@ -14152,12 +14154,12 @@ void PEGTransformerFactory::InitializeCaseWhenThenTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCaseWhenThenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto expression_1 = process.TakeResult>(1); auto result = TransformCaseWhenThen(transformer, std::move(expression), std::move(expression_1)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCaseElseTrampoline(PEGTransformer &transformer, @@ -14167,11 +14169,11 @@ void PEGTransformerFactory::InitializeCaseElseTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeCaseElseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeCaseElseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformCaseElse(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTypeLiteralTrampoline(PEGTransformer &transformer, @@ -14181,13 +14183,13 @@ void PEGTransformerFactory::InitializeTypeLiteralTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("Type"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTypeLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto type = process.TakeResult(0); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(1)); auto result = TransformTypeLiteral(transformer, type, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalLiteralTrampoline(PEGTransformer &transformer, @@ -14201,7 +14203,7 @@ void PEGTransformerFactory::InitializeIntervalLiteralTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("IntervalParameter"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto interval_parameter = process.TakeResult>(0); @@ -14210,7 +14212,7 @@ PEGTransformerFactory::FinalizeIntervalLiteralTrampoline(PEGTransformer &transfo interval = process.TakeResult(1); } auto result = TransformIntervalLiteral(transformer, std::move(interval_parameter), interval); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalParameterTrampoline(PEGTransformer &transformer, @@ -14222,16 +14224,16 @@ void PEGTransformerFactory::InitializeIntervalParameterTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntervalStringParameterTrampoline(PEGTransformer &transformer, @@ -14239,13 +14241,13 @@ void PEGTransformerFactory::InitializeIntervalStringParameterTrampoline(PEGTrans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntervalStringParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(0)); auto result = TransformIntervalStringParameter(transformer, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFrameClauseTrampoline(PEGTransformer &transformer, @@ -14260,7 +14262,7 @@ void PEGTransformerFactory::InitializeFrameClauseTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("Framing"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFrameClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto framing = process.TakeResult(0); auto frame_extent = process.TakeResult>(1); @@ -14269,7 +14271,7 @@ PEGTransformerFactory::FinalizeFrameClauseTrampoline(PEGTransformer &transformer window_exclude_clause = process.TakeResult(2); } auto result = TransformFrameClause(transformer, framing, std::move(frame_extent), window_exclude_clause); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFramingTrampoline(PEGTransformer &transformer, @@ -14285,13 +14287,13 @@ void PEGTransformerFactory::InitializeFramingTrampoline(PEGTransformer &transfor return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeFramingTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeFramingTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { string result; if (process.child_results[0]) { result = process.TakeResult(0); @@ -14310,7 +14312,7 @@ unique_ptr PEGTransformerFactory::FinalizeFramingTrampolin result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRowsFramingTrampoline(PEGTransformer &transformer, @@ -14318,10 +14320,10 @@ void PEGTransformerFactory::InitializeRowsFramingTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRowsFramingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformRowsFraming(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRangeFramingTrampoline(PEGTransformer &transformer, @@ -14329,10 +14331,10 @@ void PEGTransformerFactory::InitializeRangeFramingTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRangeFramingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformRangeFraming(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGroupsFramingTrampoline(PEGTransformer &transformer, @@ -14340,11 +14342,11 @@ void PEGTransformerFactory::InitializeGroupsFramingTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupsFramingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformGroupsFraming(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFrameExtentTrampoline(PEGTransformer &transformer, @@ -14356,15 +14358,15 @@ void PEGTransformerFactory::InitializeFrameExtentTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFrameExtentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSingleFrameExtentTrampoline(PEGTransformer &transformer, @@ -14374,12 +14376,12 @@ void PEGTransformerFactory::InitializeSingleFrameExtentTrampoline(PEGTransformer process.PushChild({transformer.GetRule("FrameBound"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSingleFrameExtentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto frame_bound = process.TakeResult(0); auto result = TransformSingleFrameExtent(transformer, std::move(frame_bound)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBetweenFrameExtentTrampoline(PEGTransformer &transformer, @@ -14390,13 +14392,13 @@ void PEGTransformerFactory::InitializeBetweenFrameExtentTrampoline(PEGTransforme process.PushChild({transformer.GetRule("FrameBound"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBetweenFrameExtentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto frame_bound = process.TakeResult(0); auto frame_bound_1 = process.TakeResult(1); auto result = TransformBetweenFrameExtent(transformer, std::move(frame_bound), std::move(frame_bound_1)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFrameBoundTrampoline(PEGTransformer &transformer, @@ -14408,15 +14410,15 @@ void PEGTransformerFactory::InitializeFrameBoundTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFrameBoundTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFrameUnboundedTrampoline(PEGTransformer &transformer, @@ -14426,12 +14428,12 @@ void PEGTransformerFactory::InitializeFrameUnboundedTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("PrecedingOrFollowing"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFrameUnboundedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto preceding_or_following = process.TakeResult(0); auto result = TransformFrameUnbounded(transformer, preceding_or_following); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFrameExpressionTrampoline(PEGTransformer &transformer, @@ -14442,13 +14444,13 @@ void PEGTransformerFactory::InitializeFrameExpressionTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFrameExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto preceding_or_following = process.TakeResult(1); auto result = TransformFrameExpression(transformer, std::move(expression), preceding_or_following); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFrameCurrentRowTrampoline(PEGTransformer &transformer, @@ -14456,11 +14458,11 @@ void PEGTransformerFactory::InitializeFrameCurrentRowTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFrameCurrentRowTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformFrameCurrentRow(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePrecedingOrFollowingTrampoline(PEGTransformer &transformer, @@ -14472,16 +14474,16 @@ void PEGTransformerFactory::InitializePrecedingOrFollowingTrampoline(PEGTransfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePrecedingOrFollowingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePrecedingFrameTrampoline(PEGTransformer &transformer, @@ -14489,11 +14491,11 @@ void PEGTransformerFactory::InitializePrecedingFrameTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePrecedingFrameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformPrecedingFrame(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFollowingFrameTrampoline(PEGTransformer &transformer, @@ -14501,11 +14503,11 @@ void PEGTransformerFactory::InitializeFollowingFrameTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFollowingFrameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformFollowingFrame(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWindowExcludeClauseTrampoline(PEGTransformer &transformer, @@ -14515,12 +14517,12 @@ void PEGTransformerFactory::InitializeWindowExcludeClauseTrampoline(PEGTransform process.PushChild({transformer.GetRule("WindowExcludeElement"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowExcludeClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto window_exclude_element = process.TakeResult(0); auto result = TransformWindowExcludeClause(transformer, window_exclude_element); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWindowExcludeElementTrampoline(PEGTransformer &transformer, @@ -14532,16 +14534,16 @@ void PEGTransformerFactory::InitializeWindowExcludeElementTrampoline(PEGTransfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowExcludeElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeCurrentRowTrampoline(PEGTransformer &transformer, @@ -14549,11 +14551,11 @@ void PEGTransformerFactory::InitializeExcludeCurrentRowTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeCurrentRowTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformExcludeCurrentRow(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeGroupTrampoline(PEGTransformer &transformer, @@ -14561,10 +14563,10 @@ void PEGTransformerFactory::InitializeExcludeGroupTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeGroupTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformExcludeGroup(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeTiesTrampoline(PEGTransformer &transformer, @@ -14572,10 +14574,10 @@ void PEGTransformerFactory::InitializeExcludeTiesTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeTiesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformExcludeTies(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeNoOthersTrampoline(PEGTransformer &transformer, @@ -14583,11 +14585,11 @@ void PEGTransformerFactory::InitializeExcludeNoOthersTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeNoOthersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformExcludeNoOthers(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWindowFrameTrampoline(PEGTransformer &transformer, @@ -14599,15 +14601,15 @@ void PEGTransformerFactory::InitializeWindowFrameTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowFrameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIdentifierWindowFrameTrampoline(PEGTransformer &transformer, @@ -14615,13 +14617,13 @@ void PEGTransformerFactory::InitializeIdentifierWindowFrameTrampoline(PEGTransfo process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIdentifierWindowFrameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformIdentifierWindowFrame(transformer, identifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeParensIdentifierTrampoline(PEGTransformer &transformer, @@ -14629,13 +14631,13 @@ void PEGTransformerFactory::InitializeParensIdentifierTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeParensIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = ExtractResultFromParens(list_pr.GetChild(0)).Cast().identifier; auto result = TransformParensIdentifier(transformer, identifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWindowFrameDefinitionTrampoline(PEGTransformer &transformer, @@ -14647,16 +14649,16 @@ void PEGTransformerFactory::InitializeWindowFrameDefinitionTrampoline(PEGTransfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowFrameDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWindowFrameNameContentsParensTrampoline(PEGTransformer &transformer, @@ -14667,12 +14669,12 @@ void PEGTransformerFactory::InitializeWindowFrameNameContentsParensTrampoline(PE 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowFrameNameContentsParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto window_frame_name_contents = process.TakeResult>(0); auto result = TransformWindowFrameNameContentsParens(transformer, std::move(window_frame_name_contents)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWindowFrameNameContentsTrampoline(PEGTransformer &transformer, @@ -14686,7 +14688,7 @@ void PEGTransformerFactory::InitializeWindowFrameNameContentsTrampoline(PEGTrans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowFrameNameContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional base_window_name {}; @@ -14695,7 +14697,7 @@ PEGTransformerFactory::FinalizeWindowFrameNameContentsTrampoline(PEGTransformer } auto window_frame_contents = process.TakeResult>(1); auto result = TransformWindowFrameNameContents(transformer, base_window_name, std::move(window_frame_contents)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWindowFrameContentsParensTrampoline(PEGTransformer &transformer, @@ -14705,12 +14707,12 @@ void PEGTransformerFactory::InitializeWindowFrameContentsParensTrampoline(PEGTra process.PushChild({transformer.GetRule("WindowFrameContents"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowFrameContentsParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto window_frame_contents = process.TakeResult>(0); auto result = TransformWindowFrameContentsParens(transformer, std::move(window_frame_contents)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWindowFrameContentsTrampoline(PEGTransformer &transformer, @@ -14731,7 +14733,7 @@ void PEGTransformerFactory::InitializeWindowFrameContentsTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowFrameContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional>> window_partition {}; @@ -14748,7 +14750,7 @@ PEGTransformerFactory::FinalizeWindowFrameContentsTrampoline(PEGTransformer &tra } auto result = TransformWindowFrameContents(transformer, std::move(window_partition), std::move(order_by_clause), std::move(frame_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBaseWindowNameTrampoline(PEGTransformer &transformer, @@ -14756,13 +14758,13 @@ void PEGTransformerFactory::InitializeBaseWindowNameTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBaseWindowNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformBaseWindowName(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeWindowPartitionTrampoline(PEGTransformer &transformer, @@ -14777,7 +14779,7 @@ void PEGTransformerFactory::InitializeWindowPartitionTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowPartitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -14788,7 +14790,7 @@ PEGTransformerFactory::FinalizeWindowPartitionTrampoline(PEGTransformer &transfo expression.push_back(process.TakeResult>(i)); } auto result = TransformWindowPartition(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeListExpressionTrampoline(PEGTransformer &transformer, @@ -14800,16 +14802,16 @@ void PEGTransformerFactory::InitializeListExpressionTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeListExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeArrayBoundedListExpressionTrampoline(PEGTransformer &transformer, @@ -14819,7 +14821,7 @@ void PEGTransformerFactory::InitializeArrayBoundedListExpressionTrampoline(PEGTr process.PushChild({transformer.GetRule("BoundedListExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeArrayBoundedListExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -14828,7 +14830,7 @@ PEGTransformerFactory::FinalizeArrayBoundedListExpressionTrampoline(PEGTransform has_result = has_result_opt.HasResult(); auto bounded_list_expression = process.TakeResult>>(0); auto result = TransformArrayBoundedListExpression(transformer, has_result, std::move(bounded_list_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeArrayParensSelectTrampoline(PEGTransformer &transformer, @@ -14839,12 +14841,12 @@ void PEGTransformerFactory::InitializeArrayParensSelectTrampoline(PEGTransformer 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeArrayParensSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformArrayParensSelect(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBoundedListExpressionTrampoline(PEGTransformer &transformer, @@ -14865,7 +14867,7 @@ void PEGTransformerFactory::InitializeBoundedListExpressionTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBoundedListExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -14885,7 +14887,7 @@ PEGTransformerFactory::FinalizeBoundedListExpressionTrampoline(PEGTransformer &t expression = std::move(expression_value); } auto result = TransformBoundedListExpression(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeStructExpressionTrampoline(PEGTransformer &transformer, @@ -14906,7 +14908,7 @@ void PEGTransformerFactory::InitializeStructExpressionTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStructExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -14926,7 +14928,7 @@ PEGTransformerFactory::FinalizeStructExpressionTrampoline(PEGTransformer &transf struct_field = std::move(struct_field_value); } auto result = TransformStructExpression(transformer, std::move(struct_field)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeStructFieldTrampoline(PEGTransformer &transformer, @@ -14937,12 +14939,12 @@ void PEGTransformerFactory::InitializeStructFieldTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStructFieldTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); auto expression = process.TakeResult>(1); auto result = TransformStructField(transformer, col_id_or_string, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeMapExpressionTrampoline(PEGTransformer &transformer, @@ -14952,12 +14954,12 @@ void PEGTransformerFactory::InitializeMapExpressionTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("MapStructExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMapExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto map_struct_expression = process.TakeResult>>(0); auto result = TransformMapExpression(transformer, std::move(map_struct_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMapStructExpressionTrampoline(PEGTransformer &transformer, @@ -14978,7 +14980,7 @@ void PEGTransformerFactory::InitializeMapStructExpressionTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMapStructExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -14998,7 +15000,7 @@ PEGTransformerFactory::FinalizeMapStructExpressionTrampoline(PEGTransformer &tra map_struct_field = std::move(map_struct_field_value); } auto result = TransformMapStructExpression(transformer, std::move(map_struct_field)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeMapStructFieldTrampoline(PEGTransformer &transformer, @@ -15009,13 +15011,13 @@ void PEGTransformerFactory::InitializeMapStructFieldTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMapStructFieldTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto expression_1 = process.TakeResult>(1); auto result = TransformMapStructField(transformer, std::move(expression), std::move(expression_1)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeGroupingExpressionTrampoline(PEGTransformer &transformer, @@ -15037,7 +15039,7 @@ void PEGTransformerFactory::InitializeGroupingExpressionTrampoline(PEGTransforme process.PushChild({transformer.GetRule("GroupingOrGroupingId"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupingExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -15058,7 +15060,7 @@ PEGTransformerFactory::FinalizeGroupingExpressionTrampoline(PEGTransformer &tran expression = std::move(expression_value); } auto result = TransformGroupingExpression(transformer, grouping_or_grouping_id, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeGroupingOrGroupingIdTrampoline(PEGTransformer &transformer, @@ -15070,16 +15072,16 @@ void PEGTransformerFactory::InitializeGroupingOrGroupingIdTrampoline(PEGTransfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupingOrGroupingIdTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGroupingKeywordTrampoline(PEGTransformer &transformer, @@ -15087,11 +15089,11 @@ void PEGTransformerFactory::InitializeGroupingKeywordTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupingKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformGroupingKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGroupingIdKeywordTrampoline(PEGTransformer &transformer, @@ -15099,11 +15101,11 @@ void PEGTransformerFactory::InitializeGroupingIdKeywordTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupingIdKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformGroupingIdKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeParameterTrampoline(PEGTransformer &transformer, @@ -15115,15 +15117,15 @@ void PEGTransformerFactory::InitializeParameterTrampoline(PEGTransformer &transf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeParameterTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeQuestionMarkNumberedParameterTrampoline(PEGTransformer &transformer, @@ -15131,13 +15133,13 @@ void PEGTransformerFactory::InitializeQuestionMarkNumberedParameterTrampoline(PE process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQuestionMarkNumberedParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto number_literal = TransformNumberLiteral(transformer, list_pr.GetChild(1)); auto result = TransformQuestionMarkNumberedParameter(transformer, std::move(number_literal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAnonymousParameterTrampoline(PEGTransformer &transformer, @@ -15145,11 +15147,11 @@ void PEGTransformerFactory::InitializeAnonymousParameterTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAnonymousParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformAnonymousParameter(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNumberedParameterTrampoline(PEGTransformer &transformer, @@ -15157,13 +15159,13 @@ void PEGTransformerFactory::InitializeNumberedParameterTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNumberedParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto number_literal = TransformNumberLiteral(transformer, list_pr.GetChild(1)); auto result = TransformNumberedParameter(transformer, std::move(number_literal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColLabelParameterTrampoline(PEGTransformer &transformer, @@ -15173,12 +15175,12 @@ void PEGTransformerFactory::InitializeColLabelParameterTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColLabel"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColLabelParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_label = process.TakeResult(0); auto result = TransformColLabelParameter(transformer, col_label); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePositionalExpressionTrampoline(PEGTransformer &transformer, @@ -15186,13 +15188,13 @@ void PEGTransformerFactory::InitializePositionalExpressionTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePositionalExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto number_literal = TransformNumberLiteral(transformer, list_pr.GetChild(1)); auto result = TransformPositionalExpression(transformer, std::move(number_literal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDefaultExpressionTrampoline(PEGTransformer &transformer, @@ -15200,11 +15202,11 @@ void PEGTransformerFactory::InitializeDefaultExpressionTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDefaultExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDefaultExpression(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeListComprehensionExpressionTrampoline(PEGTransformer &transformer, @@ -15226,7 +15228,7 @@ void PEGTransformerFactory::InitializeListComprehensionExpressionTrampoline(PEGT process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeListComprehensionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -15244,7 +15246,7 @@ PEGTransformerFactory::FinalizeListComprehensionExpressionTrampoline(PEGTransfor } auto result = TransformListComprehensionExpression(transformer, std::move(expression), col_id_or_string, std::move(expression_1), std::move(list_comprehension_filter)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeListComprehensionFilterTrampoline(PEGTransformer &transformer, @@ -15254,12 +15256,12 @@ void PEGTransformerFactory::InitializeListComprehensionFilterTrampoline(PEGTrans process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeListComprehensionFilterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformListComprehensionFilter(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeParensExpressionTrampoline(PEGTransformer &transformer, @@ -15269,12 +15271,12 @@ void PEGTransformerFactory::InitializeParensExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("Expression"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeParensExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformParensExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSingleExpressionTrampoline(PEGTransformer &transformer, @@ -15286,16 +15288,16 @@ void PEGTransformerFactory::InitializeSingleExpressionTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSingleExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExpressionTrampoline(PEGTransformer &transformer, @@ -15305,10 +15307,10 @@ void PEGTransformerFactory::InitializeExpressionTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("LambdaArrowExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColumnDefaultExprTrampoline(PEGTransformer &transformer, @@ -15318,12 +15320,12 @@ void PEGTransformerFactory::InitializeColumnDefaultExprTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColDefOrExpr"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnDefaultExprTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_def_or_expr = process.TakeResult>(0); auto result = TransformColumnDefaultExpr(transformer, std::move(col_def_or_expr)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLambdaArrowExpressionTrampoline(PEGTransformer &transformer, @@ -15347,7 +15349,7 @@ void PEGTransformerFactory::InitializeLambdaArrowExpressionTrampoline(PEGTransfo process.PushChild({transformer.GetRule("LogicalOrExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLambdaArrowExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -15369,7 +15371,7 @@ PEGTransformerFactory::FinalizeLambdaArrowExpressionTrampoline(PEGTransformer &t } auto result = TransformLambdaArrowExpression(transformer, std::move(logical_or_expression), std::move(single_arrow_pair)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSingleArrowPairTrampoline(PEGTransformer &transformer, @@ -15379,12 +15381,12 @@ void PEGTransformerFactory::InitializeSingleArrowPairTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("LogicalOrExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSingleArrowPairTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto logical_or_expression = process.TakeResult>(0); auto result = TransformSingleArrowPair(transformer, std::move(logical_or_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLogicalOrExpressionTrampoline(PEGTransformer &transformer, @@ -15408,7 +15410,7 @@ void PEGTransformerFactory::InitializeLogicalOrExpressionTrampoline(PEGTransform process.PushChild({transformer.GetRule("LogicalAndExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLogicalOrExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -15430,7 +15432,7 @@ PEGTransformerFactory::FinalizeLogicalOrExpressionTrampoline(PEGTransformer &tra } auto result = TransformLogicalOrExpression(transformer, std::move(logical_and_expression), std::move(logical_or_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLogicalOrExpressionTailTrampoline(PEGTransformer &transformer, @@ -15440,12 +15442,12 @@ void PEGTransformerFactory::InitializeLogicalOrExpressionTailTrampoline(PEGTrans process.PushChild({transformer.GetRule("LogicalAndExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLogicalOrExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto logical_and_expression = process.TakeResult>(0); auto result = TransformLogicalOrExpressionTail(transformer, std::move(logical_and_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColDefOrExprTrampoline(PEGTransformer &transformer, @@ -15469,7 +15471,7 @@ void PEGTransformerFactory::InitializeColDefOrExprTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("ColDefAndExpr"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColDefOrExprTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); idx_t dynamic_child_count = 0; @@ -15490,7 +15492,7 @@ PEGTransformerFactory::FinalizeColDefOrExprTrampoline(PEGTransformer &transforme } auto result = TransformColDefOrExpr(transformer, std::move(col_def_and_expr), std::move(col_def_or_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColDefOrExpressionTailTrampoline(PEGTransformer &transformer, @@ -15500,12 +15502,12 @@ void PEGTransformerFactory::InitializeColDefOrExpressionTailTrampoline(PEGTransf process.PushChild({transformer.GetRule("ColDefAndExpr"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColDefOrExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_def_and_expr = process.TakeResult>(0); auto result = TransformColDefOrExpressionTail(transformer, std::move(col_def_and_expr)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLogicalAndExpressionTrampoline(PEGTransformer &transformer, @@ -15529,7 +15531,7 @@ void PEGTransformerFactory::InitializeLogicalAndExpressionTrampoline(PEGTransfor process.PushChild({transformer.GetRule("LogicalNotExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLogicalAndExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -15551,7 +15553,7 @@ PEGTransformerFactory::FinalizeLogicalAndExpressionTrampoline(PEGTransformer &tr } auto result = TransformLogicalAndExpression(transformer, std::move(logical_not_expression), std::move(logical_and_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLogicalAndExpressionTailTrampoline(PEGTransformer &transformer, @@ -15561,12 +15563,12 @@ void PEGTransformerFactory::InitializeLogicalAndExpressionTailTrampoline(PEGTran process.PushChild({transformer.GetRule("LogicalNotExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLogicalAndExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto logical_not_expression = process.TakeResult>(0); auto result = TransformLogicalAndExpressionTail(transformer, std::move(logical_not_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColDefAndExprTrampoline(PEGTransformer &transformer, @@ -15590,7 +15592,7 @@ void PEGTransformerFactory::InitializeColDefAndExprTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("IsDistinctFromExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColDefAndExprTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -15612,7 +15614,7 @@ PEGTransformerFactory::FinalizeColDefAndExprTrampoline(PEGTransformer &transform } auto result = TransformColDefAndExpr(transformer, std::move(is_distinct_from_expression), std::move(col_def_and_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColDefAndExpressionTailTrampoline(PEGTransformer &transformer, @@ -15622,12 +15624,12 @@ void PEGTransformerFactory::InitializeColDefAndExpressionTailTrampoline(PEGTrans process.PushChild({transformer.GetRule("IsDistinctFromExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColDefAndExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto is_distinct_from_expression = process.TakeResult>(0); auto result = TransformColDefAndExpressionTail(transformer, std::move(is_distinct_from_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLogicalNotExpressionTrampoline(PEGTransformer &transformer, @@ -15641,7 +15643,7 @@ void PEGTransformerFactory::InitializeLogicalNotExpressionTrampoline(PEGTransfor } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLogicalNotExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> not_expression {}; @@ -15650,7 +15652,7 @@ PEGTransformerFactory::FinalizeLogicalNotExpressionTrampoline(PEGTransformer &tr } auto is_expression = process.TakeResult>(1); auto result = TransformLogicalNotExpression(transformer, std::move(not_expression), std::move(is_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNotExpressionTrampoline(PEGTransformer &transformer, @@ -15666,7 +15668,7 @@ void PEGTransformerFactory::InitializeNotExpressionTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -15678,7 +15680,7 @@ PEGTransformerFactory::FinalizeNotExpressionTrampoline(PEGTransformer &transform not_keyword.push_back(process.TakeResult(i)); } auto result = TransformNotExpression(transformer, not_keyword); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNotKeywordTrampoline(PEGTransformer &transformer, @@ -15686,10 +15688,10 @@ void PEGTransformerFactory::InitializeNotKeywordTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNotKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIsExpressionTrampoline(PEGTransformer &transformer, @@ -15704,7 +15706,7 @@ void PEGTransformerFactory::InitializeIsExpressionTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("IsDistinctFromExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto is_distinct_from_expression = process.TakeResult>(0); optional> is_expression_continuation {}; @@ -15713,7 +15715,7 @@ PEGTransformerFactory::FinalizeIsExpressionTrampoline(PEGTransformer &transforme } auto result = TransformIsExpression(transformer, std::move(is_distinct_from_expression), std::move(is_expression_continuation)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIsExpressionContinuationTrampoline(PEGTransformer &transformer, @@ -15737,7 +15739,7 @@ void PEGTransformerFactory::InitializeIsExpressionContinuationTrampoline(PEGTran process.PushChild({transformer.GetRule("IsTest"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsExpressionContinuationTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -15758,7 +15760,7 @@ PEGTransformerFactory::FinalizeIsExpressionContinuationTrampoline(PEGTransformer is_expression_tail = std::move(is_expression_tail_value); } auto result = TransformIsExpressionContinuation(transformer, std::move(is_test), std::move(is_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIsExpressionTailTrampoline(PEGTransformer &transformer, @@ -15770,16 +15772,16 @@ void PEGTransformerFactory::InitializeIsExpressionTailTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeIsTestTailTrampoline(PEGTransformer &transformer, @@ -15789,11 +15791,11 @@ void PEGTransformerFactory::InitializeIsTestTailTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("IsTest"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsTestTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto is_test = process.TakeResult>(0); auto result = TransformIsTestTail(transformer, std::move(is_test)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeIsDistinctTailTrampoline(PEGTransformer &transformer, @@ -15803,12 +15805,12 @@ void PEGTransformerFactory::InitializeIsDistinctTailTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("IsDistinctFromTail"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsDistinctTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto is_distinct_from_tail = process.TakeResult(0); auto result = TransformIsDistinctTail(transformer, std::move(is_distinct_from_tail)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeIsComparisonTailTrampoline(PEGTransformer &transformer, @@ -15818,12 +15820,12 @@ void PEGTransformerFactory::InitializeIsComparisonTailTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ComparisonExpressionTail"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsComparisonTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto comparison_expression_tail = process.TakeResult(0); auto result = TransformIsComparisonTail(transformer, std::move(comparison_expression_tail)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeIsOtherOperatorTailTrampoline(PEGTransformer &transformer, @@ -15833,12 +15835,12 @@ void PEGTransformerFactory::InitializeIsOtherOperatorTailTrampoline(PEGTransform process.PushChild({transformer.GetRule("OtherOperatorTail"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsOtherOperatorTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto other_operator_tail = process.TakeResult(0); auto result = TransformIsOtherOperatorTail(transformer, std::move(other_operator_tail)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeIsTestTrampoline(PEGTransformer &transformer, @@ -15850,15 +15852,15 @@ void PEGTransformerFactory::InitializeIsTestTrampoline(PEGTransformer &transform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeIsTestTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeIsTestTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIsLiteralTrampoline(PEGTransformer &transformer, @@ -15868,15 +15870,15 @@ void PEGTransformerFactory::InitializeIsLiteralTrampoline(PEGTransformer &transf process.PushChild({transformer.GetRule("IsLiteralValue"), list_pr.GetChild(2)}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeIsLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeIsLiteralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto is_literal_value = process.TakeResult(0); auto result = TransformIsLiteral(transformer, has_result, is_literal_value); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIsLiteralValueTrampoline(PEGTransformer &transformer, @@ -15888,16 +15890,16 @@ void PEGTransformerFactory::InitializeIsLiteralValueTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsLiteralValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUnknownLiteralTrampoline(PEGTransformer &transformer, @@ -15905,11 +15907,11 @@ void PEGTransformerFactory::InitializeUnknownLiteralTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnknownLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformUnknownLiteral(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNotNullTrampoline(PEGTransformer &transformer, @@ -15921,15 +15923,15 @@ void PEGTransformerFactory::InitializeNotNullTrampoline(PEGTransformer &transfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeNotNullTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeNotNullTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNotNullKeywordTrampoline(PEGTransformer &transformer, @@ -15937,11 +15939,11 @@ void PEGTransformerFactory::InitializeNotNullKeywordTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotNullKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNotNullKeyword(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNotNullOperatorTrampoline(PEGTransformer &transformer, @@ -15949,11 +15951,11 @@ void PEGTransformerFactory::InitializeNotNullOperatorTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotNullOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNotNullOperator(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIsNullTrampoline(PEGTransformer &transformer, @@ -15963,11 +15965,11 @@ void PEGTransformerFactory::InitializeIsNullTrampoline(PEGTransformer &transform process.PushChild({transformer.GetRule("IsNullOperator"), list_pr.GetChild(0)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeIsNullTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeIsNullTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto is_null_operator = process.TakeResult>(0); auto result = TransformIsNull(transformer, std::move(is_null_operator)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIsNullOperatorTrampoline(PEGTransformer &transformer, @@ -15975,11 +15977,11 @@ void PEGTransformerFactory::InitializeIsNullOperatorTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsNullOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformIsNullOperator(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIsDistinctFromExpressionTrampoline(PEGTransformer &transformer, @@ -16003,7 +16005,7 @@ void PEGTransformerFactory::InitializeIsDistinctFromExpressionTrampoline(PEGTran process.PushChild({transformer.GetRule("ComparisonExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsDistinctFromExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16025,7 +16027,7 @@ PEGTransformerFactory::FinalizeIsDistinctFromExpressionTrampoline(PEGTransformer } auto result = TransformIsDistinctFromExpression(transformer, std::move(comparison_expression), std::move(is_distinct_from_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIsDistinctFromTailTrampoline(PEGTransformer &transformer, @@ -16036,13 +16038,13 @@ void PEGTransformerFactory::InitializeIsDistinctFromTailTrampoline(PEGTransforme process.PushChild({transformer.GetRule("IsDistinctFromOp"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsDistinctFromTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto is_distinct_from_op = process.TakeResult(0); auto comparison_expression = process.TakeResult>(1); auto result = TransformIsDistinctFromTail(transformer, is_distinct_from_op, std::move(comparison_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeIsDistinctFromOpTrampoline(PEGTransformer &transformer, @@ -16050,7 +16052,7 @@ void PEGTransformerFactory::InitializeIsDistinctFromOpTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIsDistinctFromOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16058,7 +16060,7 @@ PEGTransformerFactory::FinalizeIsDistinctFromOpTrampoline(PEGTransformer &transf auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformIsDistinctFromOp(transformer, has_result); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeComparisonExpressionTrampoline(PEGTransformer &transformer, @@ -16082,7 +16084,7 @@ void PEGTransformerFactory::InitializeComparisonExpressionTrampoline(PEGTransfor process.PushChild({transformer.GetRule("BetweenInLikeExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeComparisonExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16104,7 +16106,7 @@ PEGTransformerFactory::FinalizeComparisonExpressionTrampoline(PEGTransformer &tr } auto result = TransformComparisonExpression(transformer, std::move(between_in_like_expression), std::move(comparison_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeComparisonExpressionTailTrampoline(PEGTransformer &transformer, @@ -16119,7 +16121,7 @@ void PEGTransformerFactory::InitializeComparisonExpressionTailTrampoline(PEGTran process.PushChild({transformer.GetRule("ComparisonOperator"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeComparisonExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto comparison_operator = process.TakeResult(0); @@ -16130,7 +16132,7 @@ PEGTransformerFactory::FinalizeComparisonExpressionTailTrampoline(PEGTransformer auto between_in_like_expression = process.TakeResult>(2); auto result = TransformComparisonExpressionTail(transformer, comparison_operator, std::move(not_expression), std::move(between_in_like_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeComparisonOperatorTrampoline(PEGTransformer &transformer, @@ -16142,16 +16144,16 @@ void PEGTransformerFactory::InitializeComparisonOperatorTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeComparisonOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOperatorEqualTrampoline(PEGTransformer &transformer, @@ -16159,11 +16161,11 @@ void PEGTransformerFactory::InitializeOperatorEqualTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOperatorEqualTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOperatorEqual(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOperatorNotEqualTrampoline(PEGTransformer &transformer, @@ -16171,11 +16173,11 @@ void PEGTransformerFactory::InitializeOperatorNotEqualTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOperatorNotEqualTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOperatorNotEqual(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOperatorLessThanTrampoline(PEGTransformer &transformer, @@ -16183,11 +16185,11 @@ void PEGTransformerFactory::InitializeOperatorLessThanTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOperatorLessThanTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOperatorLessThan(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOperatorGreaterThanTrampoline(PEGTransformer &transformer, @@ -16195,11 +16197,11 @@ void PEGTransformerFactory::InitializeOperatorGreaterThanTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOperatorGreaterThanTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOperatorGreaterThan(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOperatorLessThanEqualsTrampoline(PEGTransformer &transformer, @@ -16207,11 +16209,11 @@ void PEGTransformerFactory::InitializeOperatorLessThanEqualsTrampoline(PEGTransf process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOperatorLessThanEqualsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOperatorLessThanEquals(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOperatorGreaterThanEqualsTrampoline(PEGTransformer &transformer, @@ -16219,11 +16221,11 @@ void PEGTransformerFactory::InitializeOperatorGreaterThanEqualsTrampoline(PEGTra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOperatorGreaterThanEqualsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOperatorGreaterThanEquals(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBetweenInLikeExpressionTrampoline(PEGTransformer &transformer, @@ -16256,7 +16258,7 @@ void PEGTransformerFactory::InitializeBetweenInLikeExpressionTrampoline(PEGTrans process.PushChild({transformer.GetRule("OtherOperatorExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBetweenInLikeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16282,7 +16284,7 @@ PEGTransformerFactory::FinalizeBetweenInLikeExpressionTrampoline(PEGTransformer } auto result = TransformBetweenInLikeExpression(transformer, std::move(other_operator_expression), std::move(in_predicate), std::move(between_like_op)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInPredicateTrampoline(PEGTransformer &transformer, @@ -16292,7 +16294,7 @@ void PEGTransformerFactory::InitializeInPredicateTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("InClause"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInPredicateTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -16300,7 +16302,7 @@ PEGTransformerFactory::FinalizeInPredicateTrampoline(PEGTransformer &transformer has_result = has_result_opt.HasResult(); auto in_clause = process.TakeResult>(0); auto result = TransformInPredicate(transformer, has_result, std::move(in_clause)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeBetweenLikeOpTrampoline(PEGTransformer &transformer, @@ -16310,7 +16312,7 @@ void PEGTransformerFactory::InitializeBetweenLikeOpTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("BetweenLikeOpExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBetweenLikeOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16319,7 +16321,7 @@ PEGTransformerFactory::FinalizeBetweenLikeOpTrampoline(PEGTransformer &transform has_result = has_result_opt.HasResult(); auto between_like_op_expression = process.TakeResult>(0); auto result = TransformBetweenLikeOp(transformer, has_result, std::move(between_like_op_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeBetweenLikeOpExpressionTrampoline(PEGTransformer &transformer, @@ -16331,16 +16333,16 @@ void PEGTransformerFactory::InitializeBetweenLikeOpExpressionTrampoline(PEGTrans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBetweenLikeOpExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLikeClauseTrampoline(PEGTransformer &transformer, @@ -16355,7 +16357,7 @@ void PEGTransformerFactory::InitializeLikeClauseTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("LikeVariations"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLikeClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto like_variations = process.TakeResult(0); auto other_operator_expression = process.TakeResult>(1); @@ -16365,7 +16367,7 @@ PEGTransformerFactory::FinalizeLikeClauseTrampoline(PEGTransformer &transformer, } auto result = TransformLikeClause(transformer, like_variations, std::move(other_operator_expression), std::move(escape_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeEscapeClauseTrampoline(PEGTransformer &transformer, @@ -16375,11 +16377,11 @@ void PEGTransformerFactory::InitializeEscapeClauseTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("OtherOperatorExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEscapeClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto other_operator_expression = process.TakeResult>(0); auto result = TransformEscapeClause(transformer, std::move(other_operator_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLikeVariationsTrampoline(PEGTransformer &transformer, @@ -16395,12 +16397,12 @@ void PEGTransformerFactory::InitializeLikeVariationsTrampoline(PEGTransformer &t return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLikeVariationsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result; @@ -16421,7 +16423,7 @@ PEGTransformerFactory::FinalizeLikeVariationsTrampoline(PEGTransformer &transfor result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeLikeTokenTrampoline(PEGTransformer &transformer, @@ -16429,10 +16431,10 @@ void PEGTransformerFactory::InitializeLikeTokenTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeLikeTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeLikeTokenTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformLikeToken(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeILikeTokenTrampoline(PEGTransformer &transformer, @@ -16440,10 +16442,10 @@ void PEGTransformerFactory::InitializeILikeTokenTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeILikeTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformILikeToken(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGlobTokenTrampoline(PEGTransformer &transformer, @@ -16451,10 +16453,10 @@ void PEGTransformerFactory::InitializeGlobTokenTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeGlobTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeGlobTokenTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformGlobToken(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSimilarToTokenTrampoline(PEGTransformer &transformer, @@ -16462,11 +16464,11 @@ void PEGTransformerFactory::InitializeSimilarToTokenTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSimilarToTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSimilarToToken(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRegexMatchTokenTrampoline(PEGTransformer &transformer, @@ -16474,11 +16476,11 @@ void PEGTransformerFactory::InitializeRegexMatchTokenTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRegexMatchTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformRegexMatchToken(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRegexInsensitiveMatchTokenTrampoline(PEGTransformer &transformer, @@ -16486,11 +16488,11 @@ void PEGTransformerFactory::InitializeRegexInsensitiveMatchTokenTrampoline(PEGTr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRegexInsensitiveMatchTokenTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformRegexInsensitiveMatchToken(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNotILikeOpTrampoline(PEGTransformer &transformer, @@ -16498,10 +16500,10 @@ void PEGTransformerFactory::InitializeNotILikeOpTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotILikeOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNotILikeOp(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNotLikeOpTrampoline(PEGTransformer &transformer, @@ -16509,10 +16511,10 @@ void PEGTransformerFactory::InitializeNotLikeOpTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeNotLikeOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeNotLikeOpTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformNotLikeOp(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNotRegexInsensitiveMatchOpTrampoline(PEGTransformer &transformer, @@ -16520,11 +16522,11 @@ void PEGTransformerFactory::InitializeNotRegexInsensitiveMatchOpTrampoline(PEGTr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotRegexInsensitiveMatchOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNotRegexInsensitiveMatchOp(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNotSimilarToOpTrampoline(PEGTransformer &transformer, @@ -16532,11 +16534,11 @@ void PEGTransformerFactory::InitializeNotSimilarToOpTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotSimilarToOpTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNotSimilarToOp(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInClauseTrampoline(PEGTransformer &transformer, @@ -16546,11 +16548,11 @@ void PEGTransformerFactory::InitializeInClauseTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("InExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeInClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeInClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto in_expression = process.TakeResult>(0); auto result = TransformInClause(transformer, std::move(in_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInExpressionTrampoline(PEGTransformer &transformer, @@ -16562,15 +16564,15 @@ void PEGTransformerFactory::InitializeInExpressionTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInContainsExpressionTrampoline(PEGTransformer &transformer, @@ -16580,12 +16582,12 @@ void PEGTransformerFactory::InitializeInContainsExpressionTrampoline(PEGTransfor process.PushChild({transformer.GetRule("OtherOperatorExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInContainsExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto other_operator_expression = process.TakeResult>(0); auto result = TransformInContainsExpression(transformer, std::move(other_operator_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInExpressionListTrampoline(PEGTransformer &transformer, @@ -16600,7 +16602,7 @@ void PEGTransformerFactory::InitializeInExpressionListTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16611,7 +16613,7 @@ PEGTransformerFactory::FinalizeInExpressionListTrampoline(PEGTransformer &transf expression.push_back(process.TakeResult>(i)); } auto result = TransformInExpressionList(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInSelectStatementTrampoline(PEGTransformer &transformer, @@ -16622,12 +16624,12 @@ void PEGTransformerFactory::InitializeInSelectStatementTrampoline(PEGTransformer 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInSelectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformInSelectStatement(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBetweenClauseTrampoline(PEGTransformer &transformer, @@ -16638,7 +16640,7 @@ void PEGTransformerFactory::InitializeBetweenClauseTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("OtherOperatorExpression"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBetweenClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16649,7 +16651,7 @@ PEGTransformerFactory::FinalizeBetweenClauseTrampoline(PEGTransformer &transform auto other_operator_expression_1 = process.TakeResult>(1); auto result = TransformBetweenClause(transformer, has_result, std::move(other_operator_expression), std::move(other_operator_expression_1)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOtherOperatorExpressionTrampoline(PEGTransformer &transformer, @@ -16661,16 +16663,16 @@ void PEGTransformerFactory::InitializeOtherOperatorExpressionTrampoline(PEGTrans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOtherOperatorExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInfixOtherOperatorExpressionTrampoline(PEGTransformer &transformer, @@ -16694,7 +16696,7 @@ void PEGTransformerFactory::InitializeInfixOtherOperatorExpressionTrampoline(PEG process.PushChild({transformer.GetRule("BitwiseExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInfixOtherOperatorExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16716,7 +16718,7 @@ PEGTransformerFactory::FinalizeInfixOtherOperatorExpressionTrampoline(PEGTransfo } auto result = TransformInfixOtherOperatorExpression(transformer, std::move(bitwise_expression), std::move(other_operator_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCustomPrefixExpressionTrampoline(PEGTransformer &transformer, @@ -16726,14 +16728,14 @@ void PEGTransformerFactory::InitializeCustomPrefixExpressionTrampoline(PEGTransf process.PushChild({transformer.GetRule("OtherOperatorExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCustomPrefixExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto operator_literal = list_pr.GetChild(0).Cast().operator_token; auto other_operator_expression = process.TakeResult>(0); auto result = TransformCustomPrefixExpression(transformer, operator_literal, std::move(other_operator_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOtherOperatorTailTrampoline(PEGTransformer &transformer, @@ -16744,13 +16746,13 @@ void PEGTransformerFactory::InitializeOtherOperatorTailTrampoline(PEGTransformer process.PushChild({transformer.GetRule("OtherOperator"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOtherOperatorTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto other_operator = process.TakeResult(0); auto bitwise_expression = process.TakeResult>(1); auto result = TransformOtherOperatorTail(transformer, std::move(other_operator), std::move(bitwise_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOtherOperatorTrampoline(PEGTransformer &transformer, @@ -16762,16 +16764,16 @@ void PEGTransformerFactory::InitializeOtherOperatorTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOtherOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeAnyAllParsedOperatorTrampoline(PEGTransformer &transformer, @@ -16781,12 +16783,12 @@ void PEGTransformerFactory::InitializeAnyAllParsedOperatorTrampoline(PEGTransfor process.PushChild({transformer.GetRule("AnyAllOperator"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAnyAllParsedOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto any_all_operator = process.TakeResult>(0); auto result = TransformAnyAllParsedOperator(transformer, any_all_operator); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeNamedOtherOperatorTrampoline(PEGTransformer &transformer, @@ -16804,12 +16806,12 @@ void PEGTransformerFactory::InitializeNamedOtherOperatorTrampoline(PEGTransforme return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNamedOtherOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string child; @@ -16831,7 +16833,7 @@ PEGTransformerFactory::FinalizeNamedOtherOperatorTrampoline(PEGTransformer &tran } } auto result = TransformNamedOtherOperator(transformer, child); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOperatorLiteralTrampoline(PEGTransformer &transformer, @@ -16839,11 +16841,11 @@ void PEGTransformerFactory::InitializeOperatorLiteralTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOperatorLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.parse_result.Cast().operator_token; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAnyOperatorLiteralTrampoline(PEGTransformer &transformer, @@ -16851,11 +16853,11 @@ void PEGTransformerFactory::InitializeAnyOperatorLiteralTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAnyOperatorLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.parse_result.Cast().operator_token; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAnyAllOperatorTrampoline(PEGTransformer &transformer, @@ -16865,14 +16867,14 @@ void PEGTransformerFactory::InitializeAnyAllOperatorTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("AnyOrAll"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAnyAllOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto any_operator_literal = list_pr.GetChild(0).Cast().operator_token; auto any_or_all = process.TakeResult(0); auto result = TransformAnyAllOperator(transformer, any_operator_literal, any_or_all); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeAnyOrAllTrampoline(PEGTransformer &transformer, @@ -16884,15 +16886,15 @@ void PEGTransformerFactory::InitializeAnyOrAllTrampoline(PEGTransformer &transfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeAnyOrAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeAnyOrAllTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSubqueryAnyTrampoline(PEGTransformer &transformer, @@ -16900,10 +16902,10 @@ void PEGTransformerFactory::InitializeSubqueryAnyTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubqueryAnyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSubqueryAny(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSubqueryAllTrampoline(PEGTransformer &transformer, @@ -16911,10 +16913,10 @@ void PEGTransformerFactory::InitializeSubqueryAllTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubqueryAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSubqueryAll(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeQualifiedOperatorTrampoline(PEGTransformer &transformer, @@ -16925,12 +16927,12 @@ void PEGTransformerFactory::InitializeQualifiedOperatorTrampoline(PEGTransformer 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto qualified_operator_contents = process.TakeResult(0); auto result = TransformQualifiedOperator(transformer, qualified_operator_contents); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeQualifiedOperatorContentsTrampoline(PEGTransformer &transformer, @@ -16952,7 +16954,7 @@ void PEGTransformerFactory::InitializeQualifiedOperatorContentsTrampoline(PEGTra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedOperatorContentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -16973,7 +16975,7 @@ PEGTransformerFactory::FinalizeQualifiedOperatorContentsTrampoline(PEGTransforme } auto any_operator_literal = list_pr.GetChild(1).Cast().operator_token; auto result = TransformQualifiedOperatorContents(transformer, col_id_dot, any_operator_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBitwiseExpressionTrampoline(PEGTransformer &transformer, @@ -16997,7 +16999,7 @@ void PEGTransformerFactory::InitializeBitwiseExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("TildeExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBitwiseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17019,7 +17021,7 @@ PEGTransformerFactory::FinalizeBitwiseExpressionTrampoline(PEGTransformer &trans } auto result = TransformBitwiseExpression(transformer, std::move(tilde_expression), std::move(bitwise_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBitwiseExpressionTailTrampoline(PEGTransformer &transformer, @@ -17030,13 +17032,13 @@ void PEGTransformerFactory::InitializeBitwiseExpressionTailTrampoline(PEGTransfo process.PushChild({transformer.GetRule("BitOperator"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBitwiseExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto bit_operator = process.TakeResult(0); auto tilde_expression = process.TakeResult>(1); auto result = TransformBitwiseExpressionTail(transformer, bit_operator, std::move(tilde_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeBitOperatorTrampoline(PEGTransformer &transformer, @@ -17044,12 +17046,12 @@ void PEGTransformerFactory::InitializeBitOperatorTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBitOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto &choice_pr = list_pr.Child(0); auto result = choice_pr.GetResult().Cast().keyword; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTildeExpressionTrampoline(PEGTransformer &transformer, @@ -17076,7 +17078,7 @@ void PEGTransformerFactory::InitializeTildeExpressionTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTildeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17097,7 +17099,7 @@ PEGTransformerFactory::FinalizeTildeExpressionTrampoline(PEGTransformer &transfo } auto additive_expression = process.TakeResult>(1 + dynamic_child_count - 1); auto result = TransformTildeExpression(transformer, tilde_prefix_operator, std::move(additive_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAdditiveExpressionTrampoline(PEGTransformer &transformer, @@ -17121,7 +17123,7 @@ void PEGTransformerFactory::InitializeAdditiveExpressionTrampoline(PEGTransforme process.PushChild({transformer.GetRule("MultiplicativeExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAdditiveExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17143,7 +17145,7 @@ PEGTransformerFactory::FinalizeAdditiveExpressionTrampoline(PEGTransformer &tran } auto result = TransformAdditiveExpression(transformer, std::move(multiplicative_expression), std::move(additive_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAdditiveExpressionTailTrampoline(PEGTransformer &transformer, @@ -17154,26 +17156,26 @@ void PEGTransformerFactory::InitializeAdditiveExpressionTailTrampoline(PEGTransf process.PushChild({transformer.GetRule("Term"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAdditiveExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto term = process.TakeResult(0); auto multiplicative_expression = process.TakeResult>(1); auto result = TransformAdditiveExpressionTail(transformer, term, std::move(multiplicative_expression), process.parse_result.offset); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeTermTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeTermTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTermTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto &choice_pr = list_pr.Child(0); auto result = choice_pr.GetResult().Cast().keyword; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMultiplicativeExpressionTrampoline(PEGTransformer &transformer, @@ -17197,7 +17199,7 @@ void PEGTransformerFactory::InitializeMultiplicativeExpressionTrampoline(PEGTran process.PushChild({transformer.GetRule("ExponentiationExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMultiplicativeExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17219,7 +17221,7 @@ PEGTransformerFactory::FinalizeMultiplicativeExpressionTrampoline(PEGTransformer } auto result = TransformMultiplicativeExpression(transformer, std::move(exponentiation_expression), std::move(multiplicative_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMultiplicativeExpressionTailTrampoline(PEGTransformer &transformer, @@ -17230,13 +17232,13 @@ void PEGTransformerFactory::InitializeMultiplicativeExpressionTailTrampoline(PEG process.PushChild({transformer.GetRule("Factor"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMultiplicativeExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto factor = process.TakeResult(0); auto exponentiation_expression = process.TakeResult>(1); auto result = TransformMultiplicativeExpressionTail(transformer, factor, std::move(exponentiation_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFactorTrampoline(PEGTransformer &transformer, @@ -17244,12 +17246,12 @@ void PEGTransformerFactory::InitializeFactorTrampoline(PEGTransformer &transform process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeFactorTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeFactorTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto &choice_pr = list_pr.Child(0); auto result = choice_pr.GetResult().Cast().keyword; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExponentiationExpressionTrampoline(PEGTransformer &transformer, @@ -17273,7 +17275,7 @@ void PEGTransformerFactory::InitializeExponentiationExpressionTrampoline(PEGTran process.PushChild({transformer.GetRule("CollateExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExponentiationExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17295,7 +17297,7 @@ PEGTransformerFactory::FinalizeExponentiationExpressionTrampoline(PEGTransformer } auto result = TransformExponentiationExpression(transformer, std::move(collate_expression), std::move(exponentiation_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExponentiationExpressionTailTrampoline(PEGTransformer &transformer, @@ -17306,13 +17308,13 @@ void PEGTransformerFactory::InitializeExponentiationExpressionTailTrampoline(PEG process.PushChild({transformer.GetRule("ExponentOperator"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExponentiationExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto exponent_operator = process.TakeResult(0); auto collate_expression = process.TakeResult>(1); auto result = TransformExponentiationExpressionTail(transformer, exponent_operator, std::move(collate_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeExponentOperatorTrampoline(PEGTransformer &transformer, @@ -17320,13 +17322,13 @@ void PEGTransformerFactory::InitializeExponentOperatorTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExponentOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto &choice_pr = list_pr.Child(0); auto result = choice_pr.GetResult().Cast().keyword; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCollateExpressionTrampoline(PEGTransformer &transformer, @@ -17350,7 +17352,7 @@ void PEGTransformerFactory::InitializeCollateExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("AtTimeZoneExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCollateExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17372,7 +17374,7 @@ PEGTransformerFactory::FinalizeCollateExpressionTrampoline(PEGTransformer &trans } auto result = TransformCollateExpression(transformer, std::move(at_time_zone_expression), std::move(collate_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCollateExpressionTailTrampoline(PEGTransformer &transformer, @@ -17382,12 +17384,12 @@ void PEGTransformerFactory::InitializeCollateExpressionTailTrampoline(PEGTransfo process.PushChild({transformer.GetRule("AtTimeZoneExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCollateExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto at_time_zone_expression = process.TakeResult>(0); auto result = TransformCollateExpressionTail(transformer, std::move(at_time_zone_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAtTimeZoneExpressionTrampoline(PEGTransformer &transformer, @@ -17411,7 +17413,7 @@ void PEGTransformerFactory::InitializeAtTimeZoneExpressionTrampoline(PEGTransfor process.PushChild({transformer.GetRule("PrefixExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAtTimeZoneExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17433,7 +17435,7 @@ PEGTransformerFactory::FinalizeAtTimeZoneExpressionTrampoline(PEGTransformer &tr } auto result = TransformAtTimeZoneExpression(transformer, std::move(prefix_expression), std::move(at_time_zone_expression_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAtTimeZoneExpressionTailTrampoline(PEGTransformer &transformer, @@ -17443,12 +17445,12 @@ void PEGTransformerFactory::InitializeAtTimeZoneExpressionTailTrampoline(PEGTran process.PushChild({transformer.GetRule("PrefixExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAtTimeZoneExpressionTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto prefix_expression = process.TakeResult>(0); auto result = TransformAtTimeZoneExpressionTail(transformer, std::move(prefix_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePrefixOperatorTrampoline(PEGTransformer &transformer, @@ -17464,12 +17466,12 @@ void PEGTransformerFactory::InitializePrefixOperatorTrampoline(PEGTransformer &t return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result; @@ -17490,7 +17492,7 @@ PEGTransformerFactory::FinalizePrefixOperatorTrampoline(PEGTransformer &transfor result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeMinusPrefixOperatorTrampoline(PEGTransformer &transformer, @@ -17498,11 +17500,11 @@ void PEGTransformerFactory::InitializeMinusPrefixOperatorTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMinusPrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result = "-"; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePlusPrefixOperatorTrampoline(PEGTransformer &transformer, @@ -17510,11 +17512,11 @@ void PEGTransformerFactory::InitializePlusPrefixOperatorTrampoline(PEGTransforme process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePlusPrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result = "+"; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTildePrefixOperatorTrampoline(PEGTransformer &transformer, @@ -17522,11 +17524,11 @@ void PEGTransformerFactory::InitializeTildePrefixOperatorTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTildePrefixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result = "~"; - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBaseExpressionTrampoline(PEGTransformer &transformer, @@ -17540,7 +17542,7 @@ void PEGTransformerFactory::InitializeBaseExpressionTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("SingleExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBaseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto single_expression = process.TakeResult>(0); @@ -17549,7 +17551,7 @@ PEGTransformerFactory::FinalizeBaseExpressionTrampoline(PEGTransformer &transfor indirection_list = process.TakeResult>>(1); } auto result = TransformBaseExpression(transformer, std::move(single_expression), std::move(indirection_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIndirectionListTrampoline(PEGTransformer &transformer, @@ -17565,7 +17567,7 @@ void PEGTransformerFactory::InitializeIndirectionListTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIndirectionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17577,7 +17579,7 @@ PEGTransformerFactory::FinalizeIndirectionListTrampoline(PEGTransformer &transfo indirection.push_back(process.TakeResult>(i)); } auto result = TransformIndirectionList(transformer, std::move(indirection)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeIndirectionTrampoline(PEGTransformer &transformer, @@ -17589,15 +17591,15 @@ void PEGTransformerFactory::InitializeIndirectionTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIndirectionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCastOperatorTrampoline(PEGTransformer &transformer, @@ -17607,11 +17609,11 @@ void PEGTransformerFactory::InitializeCastOperatorTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("Type"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCastOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto type = process.TakeResult(0); auto result = TransformCastOperator(transformer, type); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDotOperatorTrampoline(PEGTransformer &transformer, @@ -17623,15 +17625,15 @@ void PEGTransformerFactory::InitializeDotOperatorTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDotOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDotMethodOperatorTrampoline(PEGTransformer &transformer, @@ -17641,12 +17643,12 @@ void PEGTransformerFactory::InitializeDotMethodOperatorTrampoline(PEGTransformer process.PushChild({transformer.GetRule("MethodExpression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDotMethodOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto method_expression = process.TakeResult>(0); auto result = TransformDotMethodOperator(transformer, std::move(method_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDotColumnOperatorTrampoline(PEGTransformer &transformer, @@ -17656,12 +17658,12 @@ void PEGTransformerFactory::InitializeDotColumnOperatorTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColLabel"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDotColumnOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_label = process.TakeResult(0); auto result = TransformDotColumnOperator(transformer, col_label); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMethodExpressionTrampoline(PEGTransformer &transformer, @@ -17672,13 +17674,13 @@ void PEGTransformerFactory::InitializeMethodExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColLabel"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMethodExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_label = process.TakeResult(0); auto method_expression_arguments = process.TakeResult(1); auto result = TransformMethodExpression(transformer, col_label, std::move(method_expression_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMethodExpressionArgumentsTrampoline(PEGTransformer &transformer, @@ -17689,12 +17691,12 @@ void PEGTransformerFactory::InitializeMethodExpressionArgumentsTrampoline(PEGTra {transformer.GetRule("MethodExpressionArgumentList"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMethodExpressionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto method_expression_argument_list = process.TakeResult(0); auto result = TransformMethodExpressionArguments(transformer, std::move(method_expression_argument_list)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeMethodExpressionArgumentListTrampoline(PEGTransformer &transformer, @@ -17720,7 +17722,7 @@ void PEGTransformerFactory::InitializeMethodExpressionArgumentListTrampoline(PEG } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMethodExpressionArgumentListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional distinct_or_all {}; @@ -17742,7 +17744,7 @@ PEGTransformerFactory::FinalizeMethodExpressionArgumentListTrampoline(PEGTransfo auto result = TransformMethodExpressionArgumentList(transformer, distinct_or_all, std::move(method_function_arguments), std::move(order_by_clause), ignore_or_respect_nulls); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeMethodFunctionArgumentsTrampoline(PEGTransformer &transformer, @@ -17757,7 +17759,7 @@ void PEGTransformerFactory::InitializeMethodFunctionArgumentsTrampoline(PEGTrans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMethodFunctionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17768,7 +17770,7 @@ PEGTransformerFactory::FinalizeMethodFunctionArgumentsTrampoline(PEGTransformer function_argument.push_back(process.TakeResult(i)); } auto result = TransformMethodFunctionArguments(transformer, std::move(function_argument)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSliceExpressionTrampoline(PEGTransformer &transformer, @@ -17778,12 +17780,12 @@ void PEGTransformerFactory::InitializeSliceExpressionTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("SliceBound"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSliceExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto slice_bound = process.TakeResult>>(0); auto result = TransformSliceExpression(transformer, std::move(slice_bound)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSliceBoundTrampoline(PEGTransformer &transformer, @@ -17804,7 +17806,7 @@ void PEGTransformerFactory::InitializeSliceBoundTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSliceBoundTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> expression {}; if (process.child_results[0]) { @@ -17820,7 +17822,7 @@ PEGTransformerFactory::FinalizeSliceBoundTrampoline(PEGTransformer &transformer, } auto result = TransformSliceBound(transformer, std::move(expression), std::move(end_slice_bound), std::move(step_slice_bound)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeEndSliceBoundTrampoline(PEGTransformer &transformer, @@ -17833,7 +17835,7 @@ void PEGTransformerFactory::InitializeEndSliceBoundTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEndSliceBoundTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> end_slice_value {}; @@ -17841,7 +17843,7 @@ PEGTransformerFactory::FinalizeEndSliceBoundTrampoline(PEGTransformer &transform end_slice_value = process.TakeResult>(0); } auto result = TransformEndSliceBound(transformer, std::move(end_slice_value)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeEndSliceValueTrampoline(PEGTransformer &transformer, @@ -17853,16 +17855,16 @@ void PEGTransformerFactory::InitializeEndSliceValueTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEndSliceValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeEndSliceMinusTrampoline(PEGTransformer &transformer, @@ -17870,11 +17872,11 @@ void PEGTransformerFactory::InitializeEndSliceMinusTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEndSliceMinusTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformEndSliceMinus(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeStepSliceBoundTrampoline(PEGTransformer &transformer, @@ -17887,7 +17889,7 @@ void PEGTransformerFactory::InitializeStepSliceBoundTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStepSliceBoundTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> expression {}; @@ -17895,7 +17897,7 @@ PEGTransformerFactory::FinalizeStepSliceBoundTrampoline(PEGTransformer &transfor expression = process.TakeResult>(0); } auto result = TransformStepSliceBound(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePostfixOperatorTrampoline(PEGTransformer &transformer, @@ -17903,11 +17905,11 @@ void PEGTransformerFactory::InitializePostfixOperatorTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePostfixOperatorTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformPostfixOperator(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSpecialFunctionExpressionTrampoline(PEGTransformer &transformer, @@ -17919,16 +17921,16 @@ void PEGTransformerFactory::InitializeSpecialFunctionExpressionTrampoline(PEGTra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSpecialFunctionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCoalesceExpressionTrampoline(PEGTransformer &transformer, @@ -17943,7 +17945,7 @@ void PEGTransformerFactory::InitializeCoalesceExpressionTrampoline(PEGTransforme } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCoalesceExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -17954,7 +17956,7 @@ PEGTransformerFactory::FinalizeCoalesceExpressionTrampoline(PEGTransformer &tran expression.push_back(process.TakeResult>(i)); } auto result = TransformCoalesceExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUnpackExpressionTrampoline(PEGTransformer &transformer, @@ -17964,12 +17966,12 @@ void PEGTransformerFactory::InitializeUnpackExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("Expression"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnpackExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformUnpackExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTryExpressionTrampoline(PEGTransformer &transformer, @@ -17979,12 +17981,12 @@ void PEGTransformerFactory::InitializeTryExpressionTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("Expression"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTryExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformTryExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColumnsExpressionTrampoline(PEGTransformer &transformer, @@ -17994,7 +17996,7 @@ void PEGTransformerFactory::InitializeColumnsExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("Expression"), ExtractResultFromParens(list_pr.GetChild(2))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnsExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18003,7 +18005,7 @@ PEGTransformerFactory::FinalizeColumnsExpressionTrampoline(PEGTransformer &trans has_result = has_result_opt.HasResult(); auto expression = process.TakeResult>(0); auto result = TransformColumnsExpression(transformer, has_result, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExtractExpressionTrampoline(PEGTransformer &transformer, @@ -18013,12 +18015,12 @@ void PEGTransformerFactory::InitializeExtractExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ExtractArguments"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtractExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto extract_arguments = process.TakeResult>>(0); auto result = TransformExtractExpression(transformer, std::move(extract_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExtractArgumentsTrampoline(PEGTransformer &transformer, @@ -18029,13 +18031,13 @@ void PEGTransformerFactory::InitializeExtractArgumentsTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ExtractArgument"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtractArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto extract_argument = process.TakeResult>(0); auto expression = process.TakeResult>(1); auto result = TransformExtractArguments(transformer, std::move(extract_argument), std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeLambdaExpressionTrampoline(PEGTransformer &transformer, @@ -18051,7 +18053,7 @@ void PEGTransformerFactory::InitializeLambdaExpressionTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLambdaExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18063,7 +18065,7 @@ PEGTransformerFactory::FinalizeLambdaExpressionTrampoline(PEGTransformer &transf } auto expression = process.TakeResult>(1 + dynamic_child_count - 1); auto result = TransformLambdaExpression(transformer, col_id_or_string, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNullIfExpressionTrampoline(PEGTransformer &transformer, @@ -18073,12 +18075,12 @@ void PEGTransformerFactory::InitializeNullIfExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("NullIfArguments"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNullIfExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto null_if_arguments = process.TakeResult>>(0); auto result = TransformNullIfExpression(transformer, std::move(null_if_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNullIfArgumentsTrampoline(PEGTransformer &transformer, @@ -18089,13 +18091,13 @@ void PEGTransformerFactory::InitializeNullIfArgumentsTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNullIfArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto expression_1 = process.TakeResult>(1); auto result = TransformNullIfArguments(transformer, std::move(expression), std::move(expression_1)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializePositionExpressionTrampoline(PEGTransformer &transformer, @@ -18105,12 +18107,12 @@ void PEGTransformerFactory::InitializePositionExpressionTrampoline(PEGTransforme process.PushChild({transformer.GetRule("PositionArguments"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePositionExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto position_arguments = process.TakeResult>>(0); auto result = TransformPositionExpression(transformer, std::move(position_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePositionArgumentsTrampoline(PEGTransformer &transformer, @@ -18121,13 +18123,13 @@ void PEGTransformerFactory::InitializePositionArgumentsTrampoline(PEGTransformer process.PushChild({transformer.GetRule("OtherOperatorExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePositionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto other_operator_expression = process.TakeResult>(0); auto expression = process.TakeResult>(1); auto result = TransformPositionArguments(transformer, std::move(other_operator_expression), std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeRowExpressionTrampoline(PEGTransformer &transformer, @@ -18148,7 +18150,7 @@ void PEGTransformerFactory::InitializeRowExpressionTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRowExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18168,7 +18170,7 @@ PEGTransformerFactory::FinalizeRowExpressionTrampoline(PEGTransformer &transform expression = std::move(expression_value); } auto result = TransformRowExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSubstringExpressionTrampoline(PEGTransformer &transformer, @@ -18178,12 +18180,12 @@ void PEGTransformerFactory::InitializeSubstringExpressionTrampoline(PEGTransform process.PushChild({transformer.GetRule("SubstringArguments"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubstringExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto substring_arguments = process.TakeResult>>(0); auto result = TransformSubstringExpression(transformer, std::move(substring_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSubstringArgumentsTrampoline(PEGTransformer &transformer, @@ -18195,16 +18197,16 @@ void PEGTransformerFactory::InitializeSubstringArgumentsTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubstringArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>>(0); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSubstringExpressionListTrampoline(PEGTransformer &transformer, @@ -18219,7 +18221,7 @@ void PEGTransformerFactory::InitializeSubstringExpressionListTrampoline(PEGTrans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubstringExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18230,7 +18232,7 @@ PEGTransformerFactory::FinalizeSubstringExpressionListTrampoline(PEGTransformer expression.push_back(process.TakeResult>(i)); } auto result = TransformSubstringExpressionList(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSubstringParametersTrampoline(PEGTransformer &transformer, @@ -18241,13 +18243,13 @@ void PEGTransformerFactory::InitializeSubstringParametersTrampoline(PEGTransform process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubstringParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto substring_from_for = process.TakeResult>>(1); auto result = TransformSubstringParameters(transformer, std::move(expression), std::move(substring_from_for)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSubstringFromForTrampoline(PEGTransformer &transformer, @@ -18259,16 +18261,16 @@ void PEGTransformerFactory::InitializeSubstringFromForTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubstringFromForTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>>(0); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSubstringFromOptionalForTrampoline(PEGTransformer &transformer, @@ -18282,7 +18284,7 @@ void PEGTransformerFactory::InitializeSubstringFromOptionalForTrampoline(PEGTran process.PushChild({transformer.GetRule("FromExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubstringFromOptionalForTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto from_expression = process.TakeResult>(0); @@ -18291,7 +18293,7 @@ PEGTransformerFactory::FinalizeSubstringFromOptionalForTrampoline(PEGTransformer for_expression = process.TakeResult>(1); } auto result = TransformSubstringFromOptionalFor(transformer, std::move(from_expression), std::move(for_expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSubstringForTrampoline(PEGTransformer &transformer, @@ -18301,11 +18303,11 @@ void PEGTransformerFactory::InitializeSubstringForTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("ForExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubstringForTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto for_expression = process.TakeResult>(0); auto result = TransformSubstringFor(transformer, std::move(for_expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeTrimExpressionTrampoline(PEGTransformer &transformer, @@ -18315,12 +18317,12 @@ void PEGTransformerFactory::InitializeTrimExpressionTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("TrimArguments"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTrimExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto trim_arguments = process.TakeResult(0); auto result = TransformTrimExpression(transformer, std::move(trim_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTrimArgumentsTrampoline(PEGTransformer &transformer, @@ -18343,7 +18345,7 @@ void PEGTransformerFactory::InitializeTrimArgumentsTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTrimArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18362,7 +18364,7 @@ PEGTransformerFactory::FinalizeTrimArgumentsTrampoline(PEGTransformer &transform expression.push_back(process.TakeResult>(i)); } auto result = TransformTrimArguments(transformer, trim_direction, std::move(trim_source), std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeTrimDirectionTrampoline(PEGTransformer &transformer, @@ -18378,12 +18380,12 @@ void PEGTransformerFactory::InitializeTrimDirectionTrampoline(PEGTransformer &tr return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTrimDirectionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result; @@ -18404,7 +18406,7 @@ PEGTransformerFactory::FinalizeTrimDirectionTrampoline(PEGTransformer &transform result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTrimBothTrampoline(PEGTransformer &transformer, @@ -18412,10 +18414,10 @@ void PEGTransformerFactory::InitializeTrimBothTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeTrimBothTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTrimBothTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformTrimBoth(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTrimLeadingTrampoline(PEGTransformer &transformer, @@ -18423,10 +18425,10 @@ void PEGTransformerFactory::InitializeTrimLeadingTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTrimLeadingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTrimLeading(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTrimTrailingTrampoline(PEGTransformer &transformer, @@ -18434,10 +18436,10 @@ void PEGTransformerFactory::InitializeTrimTrailingTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTrimTrailingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTrimTrailing(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTrimSourceTrampoline(PEGTransformer &transformer, @@ -18450,14 +18452,14 @@ void PEGTransformerFactory::InitializeTrimSourceTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTrimSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> expression {}; if (process.child_results[0]) { expression = process.TakeResult>(0); } auto result = TransformTrimSource(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOverlayExpressionTrampoline(PEGTransformer &transformer, @@ -18467,12 +18469,12 @@ void PEGTransformerFactory::InitializeOverlayExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("OverlayArguments"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOverlayExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto overlay_arguments = process.TakeResult>>(0); auto result = TransformOverlayExpression(transformer, std::move(overlay_arguments)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOverlayArgumentsTrampoline(PEGTransformer &transformer, @@ -18484,16 +18486,16 @@ void PEGTransformerFactory::InitializeOverlayArgumentsTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOverlayArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>>(0); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeOverlayParametersTrampoline(PEGTransformer &transformer, @@ -18509,7 +18511,7 @@ void PEGTransformerFactory::InitializeOverlayParametersTrampoline(PEGTransformer process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOverlayParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); @@ -18521,7 +18523,7 @@ PEGTransformerFactory::FinalizeOverlayParametersTrampoline(PEGTransformer &trans } auto result = TransformOverlayParameters(transformer, std::move(expression), std::move(expression_1), std::move(from_expression), std::move(for_expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeFromExpressionTrampoline(PEGTransformer &transformer, @@ -18531,12 +18533,12 @@ void PEGTransformerFactory::InitializeFromExpressionTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFromExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformFromExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeForExpressionTrampoline(PEGTransformer &transformer, @@ -18546,12 +18548,12 @@ void PEGTransformerFactory::InitializeForExpressionTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeForExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformForExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOverlayExpressionListTrampoline(PEGTransformer &transformer, @@ -18566,7 +18568,7 @@ void PEGTransformerFactory::InitializeOverlayExpressionListTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOverlayExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18577,7 +18579,7 @@ PEGTransformerFactory::FinalizeOverlayExpressionListTrampoline(PEGTransformer &t expression.push_back(process.TakeResult>(i)); } auto result = TransformOverlayExpressionList(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeExtractArgumentTrampoline(PEGTransformer &transformer, @@ -18589,16 +18591,16 @@ void PEGTransformerFactory::InitializeExtractArgumentTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtractArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExtractDatePartArgumentTrampoline(PEGTransformer &transformer, @@ -18608,12 +18610,12 @@ void PEGTransformerFactory::InitializeExtractDatePartArgumentTrampoline(PEGTrans process.PushChild({transformer.GetRule("ExtractDatePart"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtractDatePartArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto extract_date_part = process.TakeResult(0); auto result = TransformExtractDatePartArgument(transformer, extract_date_part); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExtractIdentifierArgumentTrampoline(PEGTransformer &transformer, @@ -18621,13 +18623,13 @@ void PEGTransformerFactory::InitializeExtractIdentifierArgumentTrampoline(PEGTra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtractIdentifierArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformExtractIdentifierArgument(transformer, identifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExtractStringArgumentTrampoline(PEGTransformer &transformer, @@ -18635,13 +18637,13 @@ void PEGTransformerFactory::InitializeExtractStringArgumentTrampoline(PEGTransfo process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtractStringArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(0)); auto result = TransformExtractStringArgument(transformer, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExtractDatePartTrampoline(PEGTransformer &transformer, @@ -18653,16 +18655,16 @@ void PEGTransformerFactory::InitializeExtractDatePartTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtractDatePartTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExternalResourceStatementTrampoline(PEGTransformer &transformer, @@ -18674,16 +18676,16 @@ void PEGTransformerFactory::InitializeExternalResourceStatementTrampoline(PEGTra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExternalResourceStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateExternalResourceStmtTrampoline(PEGTransformer &transformer, @@ -18702,7 +18704,7 @@ void PEGTransformerFactory::InitializeCreateExternalResourceStmtTrampoline(PEGTr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18717,7 +18719,7 @@ PEGTransformerFactory::FinalizeCreateExternalResourceStmtTrampoline(PEGTransform } auto result = TransformCreateExternalResourceStmt(transformer, string_literal, attach_alias, external_resource_creation_options); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeRegisterExternalResourceStmtTrampoline(PEGTransformer &transformer, @@ -18731,7 +18733,7 @@ void PEGTransformerFactory::InitializeRegisterExternalResourceStmtTrampoline(PEG } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRegisterExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18743,7 +18745,7 @@ PEGTransformerFactory::FinalizeRegisterExternalResourceStmtTrampoline(PEGTransfo auto expression = process.TakeResult>(1); auto result = TransformRegisterExternalResourceStmt(transformer, string_literal, attach_alias, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDestroyExternalResourceStmtTrampoline(PEGTransformer &transformer, @@ -18753,12 +18755,12 @@ void PEGTransformerFactory::InitializeDestroyExternalResourceStmtTrampoline(PEGT process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDestroyExternalResourceStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformDestroyExternalResourceStmt(transformer, col_id); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeShowExternalResourcesStmtTrampoline(PEGTransformer &transformer, @@ -18771,7 +18773,7 @@ void PEGTransformerFactory::InitializeShowExternalResourcesStmtTrampoline(PEGTra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowExternalResourcesStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional show_all_modifier {}; @@ -18779,7 +18781,7 @@ PEGTransformerFactory::FinalizeShowExternalResourcesStmtTrampoline(PEGTransforme show_all_modifier = process.TakeResult(0); } auto result = TransformShowExternalResourcesStmt(transformer, show_all_modifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeShowAllModifierTrampoline(PEGTransformer &transformer, @@ -18787,11 +18789,11 @@ void PEGTransformerFactory::InitializeShowAllModifierTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeShowAllModifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformShowAllModifier(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExternalResourceCreationOptionsTrampoline(PEGTransformer &transformer, @@ -18801,11 +18803,11 @@ void PEGTransformerFactory::InitializeExternalResourceCreationOptionsTrampoline( process.PushChild({transformer.GetRule("GenericCopyOptionList"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExternalResourceCreationOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeAttachToExternalResourceTrampoline(PEGTransformer &transformer, @@ -18820,7 +18822,7 @@ void PEGTransformerFactory::InitializeAttachToExternalResourceTrampoline(PEGTran process.PushChild({transformer.GetRule("ExternalResourceSource"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAttachToExternalResourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto external_resource_source = process.TakeResult>(0); @@ -18831,7 +18833,7 @@ PEGTransformerFactory::FinalizeAttachToExternalResourceTrampoline(PEGTransformer } auto result = TransformAttachToExternalResource(transformer, std::move(external_resource_source), attach_alias, attach_options); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeConnectToExternalResourceTrampoline(PEGTransformer &transformer, @@ -18845,7 +18847,7 @@ void PEGTransformerFactory::InitializeConnectToExternalResourceTrampoline(PEGTra process.PushChild({transformer.GetRule("ExternalResourceSource"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeConnectToExternalResourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto external_resource_source = process.TakeResult>(0); @@ -18854,7 +18856,7 @@ PEGTransformerFactory::FinalizeConnectToExternalResourceTrampoline(PEGTransforme attach_options = process.TakeResult>(1); } auto result = TransformConnectToExternalResource(transformer, std::move(external_resource_source), attach_options); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExternalResourceSourceTrampoline(PEGTransformer &transformer, @@ -18866,16 +18868,16 @@ void PEGTransformerFactory::InitializeExternalResourceSourceTrampoline(PEGTransf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExternalResourceSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExternalResourceCreateClauseTrampoline(PEGTransformer &transformer, @@ -18890,7 +18892,7 @@ void PEGTransformerFactory::InitializeExternalResourceCreateClauseTrampoline(PEG } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExternalResourceCreateClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -18901,7 +18903,7 @@ PEGTransformerFactory::FinalizeExternalResourceCreateClauseTrampoline(PEGTransfo } auto result = TransformExternalResourceCreateClause(transformer, string_literal, external_resource_creation_options); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExternalResourceReferenceClauseTrampoline(PEGTransformer &transformer, @@ -18911,12 +18913,12 @@ void PEGTransformerFactory::InitializeExternalResourceReferenceClauseTrampoline( process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExternalResourceReferenceClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformExternalResourceReferenceClause(transformer, col_id); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInsertStatementTrampoline(PEGTransformer &transformer, @@ -18951,7 +18953,7 @@ void PEGTransformerFactory::InitializeInsertStatementTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional with_clause {}; @@ -18983,7 +18985,7 @@ PEGTransformerFactory::FinalizeInsertStatementTrampoline(PEGTransformer &transfo auto result = TransformInsertStatement(transformer, std::move(with_clause), or_action, std::move(insert_target), by_name_or_position, insert_column_list, std::move(insert_values), std::move(on_conflict_clause), std::move(returning_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOrActionTrampoline(PEGTransformer &transformer, @@ -18995,15 +18997,15 @@ void PEGTransformerFactory::InitializeOrActionTrampoline(PEGTransformer &transfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeOrActionTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeOrActionTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInsertOrReplaceTrampoline(PEGTransformer &transformer, @@ -19011,11 +19013,11 @@ void PEGTransformerFactory::InitializeInsertOrReplaceTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertOrReplaceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformInsertOrReplace(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInsertOrIgnoreTrampoline(PEGTransformer &transformer, @@ -19023,11 +19025,11 @@ void PEGTransformerFactory::InitializeInsertOrIgnoreTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertOrIgnoreTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformInsertOrIgnore(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeByNameOrPositionTrampoline(PEGTransformer &transformer, @@ -19039,16 +19041,16 @@ void PEGTransformerFactory::InitializeByNameOrPositionTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeByNameOrPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInsertByNameOrderTrampoline(PEGTransformer &transformer, @@ -19058,11 +19060,11 @@ void PEGTransformerFactory::InitializeInsertByNameOrderTrampoline(PEGTransformer process.PushChild({transformer.GetRule("InsertByName"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertByNameOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInsertByPositionOrderTrampoline(PEGTransformer &transformer, @@ -19072,11 +19074,11 @@ void PEGTransformerFactory::InitializeInsertByPositionOrderTrampoline(PEGTransfo process.PushChild({transformer.GetRule("InsertByPosition"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertByPositionOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInsertByNameTrampoline(PEGTransformer &transformer, @@ -19084,10 +19086,10 @@ void PEGTransformerFactory::InitializeInsertByNameTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertByNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformInsertByName(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInsertByPositionTrampoline(PEGTransformer &transformer, @@ -19095,11 +19097,11 @@ void PEGTransformerFactory::InitializeInsertByPositionTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertByPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformInsertByPosition(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInsertTargetTrampoline(PEGTransformer &transformer, @@ -19113,7 +19115,7 @@ void PEGTransformerFactory::InitializeInsertTargetTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); optional insert_alias {}; @@ -19121,7 +19123,7 @@ PEGTransformerFactory::FinalizeInsertTargetTrampoline(PEGTransformer &transforme insert_alias = process.TakeResult(1); } auto result = TransformInsertTarget(transformer, std::move(base_table_name), insert_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInsertAliasTrampoline(PEGTransformer &transformer, @@ -19129,12 +19131,12 @@ void PEGTransformerFactory::InitializeInsertAliasTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(1).Cast().identifier; auto result = TransformInsertAlias(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeColumnListTrampoline(PEGTransformer &transformer, @@ -19149,7 +19151,7 @@ void PEGTransformerFactory::InitializeColumnListTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(0)); @@ -19159,7 +19161,7 @@ PEGTransformerFactory::FinalizeColumnListTrampoline(PEGTransformer &transformer, col_id.push_back(process.TakeResult(i)); } auto result = TransformColumnList(transformer, col_id); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeInsertColumnListTrampoline(PEGTransformer &transformer, @@ -19169,12 +19171,12 @@ void PEGTransformerFactory::InitializeInsertColumnListTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColumnList"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto column_list = process.TakeResult>(0); auto result = TransformInsertColumnList(transformer, column_list); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeInsertValuesTrampoline(PEGTransformer &transformer, @@ -19186,15 +19188,15 @@ void PEGTransformerFactory::InitializeInsertValuesTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeSelectInsertValuesTrampoline(PEGTransformer &transformer, @@ -19204,12 +19206,12 @@ void PEGTransformerFactory::InitializeSelectInsertValuesTrampoline(PEGTransforme process.PushChild({transformer.GetRule("SelectStatementInternal"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectInsertValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformSelectInsertValues(transformer, std::move(select_statement_internal)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDefaultValuesTrampoline(PEGTransformer &transformer, @@ -19217,11 +19219,11 @@ void PEGTransformerFactory::InitializeDefaultValuesTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDefaultValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDefaultValues(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOnConflictClauseTrampoline(PEGTransformer &transformer, @@ -19235,7 +19237,7 @@ void PEGTransformerFactory::InitializeOnConflictClauseTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOnConflictClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional on_conflict_target {}; @@ -19244,7 +19246,7 @@ PEGTransformerFactory::FinalizeOnConflictClauseTrampoline(PEGTransformer &transf } auto on_conflict_action = process.TakeResult>(1); auto result = TransformOnConflictClause(transformer, std::move(on_conflict_target), std::move(on_conflict_action)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOnConflictTargetTrampoline(PEGTransformer &transformer, @@ -19256,16 +19258,16 @@ void PEGTransformerFactory::InitializeOnConflictTargetTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOnConflictTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOnConflictExpressionTargetTrampoline(PEGTransformer &transformer, @@ -19279,7 +19281,7 @@ void PEGTransformerFactory::InitializeOnConflictExpressionTargetTrampoline(PEGTr process.PushChild({transformer.GetRule("ColumnIdList"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOnConflictExpressionTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto column_id_list = process.TakeResult>(0); @@ -19288,7 +19290,7 @@ PEGTransformerFactory::FinalizeOnConflictExpressionTargetTrampoline(PEGTransform where_clause = process.TakeResult>(1); } auto result = TransformOnConflictExpressionTarget(transformer, column_id_list, std::move(where_clause)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOnConflictIndexTargetTrampoline(PEGTransformer &transformer, @@ -19298,12 +19300,12 @@ void PEGTransformerFactory::InitializeOnConflictIndexTargetTrampoline(PEGTransfo process.PushChild({transformer.GetRule("ConstraintName"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOnConflictIndexTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto constraint_name = process.TakeResult(0); auto result = TransformOnConflictIndexTarget(transformer, constraint_name); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOnConflictActionTrampoline(PEGTransformer &transformer, @@ -19315,16 +19317,16 @@ void PEGTransformerFactory::InitializeOnConflictActionTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOnConflictActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOnConflictUpdateTrampoline(PEGTransformer &transformer, @@ -19338,7 +19340,7 @@ void PEGTransformerFactory::InitializeOnConflictUpdateTrampoline(PEGTransformer process.PushChild({transformer.GetRule("UpdateSetClause"), list_pr.GetChild(3)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOnConflictUpdateTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto update_set_clause = process.TakeResult>(0); @@ -19347,7 +19349,7 @@ PEGTransformerFactory::FinalizeOnConflictUpdateTrampoline(PEGTransformer &transf where_clause = process.TakeResult>(1); } auto result = TransformOnConflictUpdate(transformer, std::move(update_set_clause), std::move(where_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOnConflictNothingTrampoline(PEGTransformer &transformer, @@ -19355,11 +19357,11 @@ void PEGTransformerFactory::InitializeOnConflictNothingTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOnConflictNothingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOnConflictNothing(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeReturningClauseTrampoline(PEGTransformer &transformer, @@ -19369,12 +19371,12 @@ void PEGTransformerFactory::InitializeReturningClauseTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("TargetList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReturningClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto target_list = process.TakeResult>>(0); auto result = TransformReturningClause(transformer, std::move(target_list)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeLoadStatementTrampoline(PEGTransformer &transformer, @@ -19392,7 +19394,7 @@ void PEGTransformerFactory::InitializeLoadStatementTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLoadStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); @@ -19405,7 +19407,7 @@ PEGTransformerFactory::FinalizeLoadStatementTrampoline(PEGTransformer &transform extension_alias = process.TakeResult(2); } auto result = TransformLoadStatement(transformer, col_id_or_string, from_source, extension_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExtensionAliasTrampoline(PEGTransformer &transformer, @@ -19413,13 +19415,13 @@ void PEGTransformerFactory::InitializeExtensionAliasTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtensionAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(1).Cast().identifier; auto result = TransformExtensionAlias(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInstallStatementTrampoline(PEGTransformer &transformer, @@ -19441,7 +19443,7 @@ void PEGTransformerFactory::InitializeInstallStatementTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInstallStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -19463,7 +19465,7 @@ PEGTransformerFactory::FinalizeInstallStatementTrampoline(PEGTransformer &transf } auto result = TransformInstallStatement(transformer, has_result, install_and_load, identifier_or_string_literal, from_source, version_number); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInstallAndLoadTrampoline(PEGTransformer &transformer, @@ -19471,11 +19473,11 @@ void PEGTransformerFactory::InitializeInstallAndLoadTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInstallAndLoadTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformInstallAndLoad(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUpdateExtensionsStatementTrampoline(PEGTransformer &transformer, @@ -19483,7 +19485,7 @@ void PEGTransformerFactory::InitializeUpdateExtensionsStatementTrampoline(PEGTra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateExtensionsStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -19499,7 +19501,7 @@ PEGTransformerFactory::FinalizeUpdateExtensionsStatementTrampoline(PEGTransforme identifier = std::move(identifier_value); } auto result = TransformUpdateExtensionsStatement(transformer, identifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFromSourceTrampoline(PEGTransformer &transformer, @@ -19511,15 +19513,15 @@ void PEGTransformerFactory::InitializeFromSourceTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFromSourceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFromSourceIdentifierTrampoline(PEGTransformer &transformer, @@ -19527,13 +19529,13 @@ void PEGTransformerFactory::InitializeFromSourceIdentifierTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFromSourceIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(1).Cast().identifier; auto result = TransformFromSourceIdentifier(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFromSourceStringTrampoline(PEGTransformer &transformer, @@ -19541,13 +19543,13 @@ void PEGTransformerFactory::InitializeFromSourceStringTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFromSourceStringTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(1)); auto result = TransformFromSourceString(transformer, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeVersionNumberTrampoline(PEGTransformer &transformer, @@ -19557,12 +19559,12 @@ void PEGTransformerFactory::InitializeVersionNumberTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("IdentifierOrStringLiteral"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVersionNumberTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto identifier_or_string_literal = process.TakeResult(0); auto result = TransformVersionNumber(transformer, identifier_or_string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExtensionRepositoryStatementTrampoline(PEGTransformer &transformer, @@ -19574,16 +19576,16 @@ void PEGTransformerFactory::InitializeExtensionRepositoryStatementTrampoline(PEG auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExtensionRepositoryStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCreateExtensionRepositoryStmtTrampoline(PEGTransformer &transformer, @@ -19606,7 +19608,7 @@ void PEGTransformerFactory::InitializeCreateExtensionRepositoryStmtTrampoline(PE } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCreateExtensionRepositoryStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional or_replace {}; @@ -19625,7 +19627,7 @@ PEGTransformerFactory::FinalizeCreateExtensionRepositoryStmtTrampoline(PEGTransf } auto result = TransformCreateExtensionRepositoryStmt(transformer, or_replace, if_not_exists, col_id_or_string, repository_prefix, repository_public_key); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeRepositoryPrefixTrampoline(PEGTransformer &transformer, @@ -19633,7 +19635,7 @@ void PEGTransformerFactory::InitializeRepositoryPrefixTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRepositoryPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -19642,7 +19644,7 @@ PEGTransformerFactory::FinalizeRepositoryPrefixTrampoline(PEGTransformer &transf has_result = has_result_opt.HasResult(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(2)); auto result = TransformRepositoryPrefix(transformer, has_result, string_literal); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRepositoryPublicKeyTrampoline(PEGTransformer &transformer, @@ -19650,7 +19652,7 @@ void PEGTransformerFactory::InitializeRepositoryPublicKeyTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRepositoryPublicKeyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -19664,7 +19666,7 @@ PEGTransformerFactory::FinalizeRepositoryPublicKeyTrampoline(PEGTransformer &tra string_literal.push_back(string_literal_value); } auto result = TransformRepositoryPublicKey(transformer, has_result, string_literal); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeDropExtensionRepositoryStmtTrampoline(PEGTransformer &transformer, @@ -19678,7 +19680,7 @@ void PEGTransformerFactory::InitializeDropExtensionRepositoryStmtTrampoline(PEGT } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDropExtensionRepositoryStmtTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional if_exists {}; @@ -19687,7 +19689,7 @@ PEGTransformerFactory::FinalizeDropExtensionRepositoryStmtTrampoline(PEGTransfor } auto col_id_or_string = process.TakeResult(1); auto result = TransformDropExtensionRepositoryStmt(transformer, if_exists, col_id_or_string); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMergeIntoStatementTrampoline(PEGTransformer &transformer, @@ -19715,7 +19717,7 @@ void PEGTransformerFactory::InitializeMergeIntoStatementTrampoline(PEGTransforme } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMergeIntoStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -19740,7 +19742,7 @@ PEGTransformerFactory::FinalizeMergeIntoStatementTrampoline(PEGTransformer &tran auto result = TransformMergeIntoStatement(transformer, std::move(with_clause), std::move(target_opt_alias), std::move(merge_into_using_clause), std::move(join_qualifier), std::move(merge_match), std::move(returning_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMergeIntoUsingClauseTrampoline(PEGTransformer &transformer, @@ -19750,12 +19752,12 @@ void PEGTransformerFactory::InitializeMergeIntoUsingClauseTrampoline(PEGTransfor process.PushChild({transformer.GetRule("TableRef"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMergeIntoUsingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto table_ref = process.TakeResult>(0); auto result = TransformMergeIntoUsingClause(transformer, std::move(table_ref)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeMergeMatchTrampoline(PEGTransformer &transformer, @@ -19767,15 +19769,15 @@ void PEGTransformerFactory::InitializeMergeMatchTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMergeMatchTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>>(0); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeMatchedClauseTrampoline(PEGTransformer &transformer, @@ -19789,7 +19791,7 @@ void PEGTransformerFactory::InitializeMatchedClauseTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMatchedClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> and_expression {}; @@ -19798,7 +19800,7 @@ PEGTransformerFactory::FinalizeMatchedClauseTrampoline(PEGTransformer &transform } auto matched_clause_action = process.TakeResult>(1); auto result = TransformMatchedClause(transformer, std::move(and_expression), std::move(matched_clause_action)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeMatchedClauseActionTrampoline(PEGTransformer &transformer, @@ -19810,16 +19812,16 @@ void PEGTransformerFactory::InitializeMatchedClauseActionTrampoline(PEGTransform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMatchedClauseActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateMatchClauseTrampoline(PEGTransformer &transformer, @@ -19832,7 +19834,7 @@ void PEGTransformerFactory::InitializeUpdateMatchClauseTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> update_match_info {}; @@ -19840,7 +19842,7 @@ PEGTransformerFactory::FinalizeUpdateMatchClauseTrampoline(PEGTransformer &trans update_match_info = process.TakeResult>(0); } auto result = TransformUpdateMatchClause(transformer, std::move(update_match_info)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateMatchInfoTrampoline(PEGTransformer &transformer, @@ -19852,16 +19854,16 @@ void PEGTransformerFactory::InitializeUpdateMatchInfoTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateMatchInfoTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateMatchSetActionTrampoline(PEGTransformer &transformer, @@ -19871,12 +19873,12 @@ void PEGTransformerFactory::InitializeUpdateMatchSetActionTrampoline(PEGTransfor process.PushChild({transformer.GetRule("UpdateMatchSetClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateMatchSetActionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto update_match_set_clause = process.TakeResult>(0); auto result = TransformUpdateMatchSetAction(transformer, std::move(update_match_set_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateByNameOrPositionTrampoline(PEGTransformer &transformer, @@ -19886,12 +19888,12 @@ void PEGTransformerFactory::InitializeUpdateByNameOrPositionTrampoline(PEGTransf process.PushChild({transformer.GetRule("ByNameOrPosition"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateByNameOrPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto by_name_or_position = process.TakeResult(0); auto result = TransformUpdateByNameOrPosition(transformer, by_name_or_position); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDeleteMatchClauseTrampoline(PEGTransformer &transformer, @@ -19899,11 +19901,11 @@ void PEGTransformerFactory::InitializeDeleteMatchClauseTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDeleteMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDeleteMatchClause(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInsertMatchClauseTrampoline(PEGTransformer &transformer, @@ -19916,7 +19918,7 @@ void PEGTransformerFactory::InitializeInsertMatchClauseTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> insert_match_info {}; @@ -19924,7 +19926,7 @@ PEGTransformerFactory::FinalizeInsertMatchClauseTrampoline(PEGTransformer &trans insert_match_info = process.TakeResult>(0); } auto result = TransformInsertMatchClause(transformer, std::move(insert_match_info)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInsertMatchInfoTrampoline(PEGTransformer &transformer, @@ -19936,16 +19938,16 @@ void PEGTransformerFactory::InitializeInsertMatchInfoTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertMatchInfoTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInsertDefaultValuesTrampoline(PEGTransformer &transformer, @@ -19953,11 +19955,11 @@ void PEGTransformerFactory::InitializeInsertDefaultValuesTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertDefaultValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformInsertDefaultValues(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInsertByNameOrPositionTrampoline(PEGTransformer &transformer, @@ -19970,7 +19972,7 @@ void PEGTransformerFactory::InitializeInsertByNameOrPositionTrampoline(PEGTransf } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertByNameOrPositionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -19982,7 +19984,7 @@ PEGTransformerFactory::FinalizeInsertByNameOrPositionTrampoline(PEGTransformer & auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformInsertByNameOrPosition(transformer, by_name_or_position, has_result); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeInsertValuesListTrampoline(PEGTransformer &transformer, @@ -20001,7 +20003,7 @@ void PEGTransformerFactory::InitializeInsertValuesListTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInsertValuesListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -20016,7 +20018,7 @@ PEGTransformerFactory::FinalizeInsertValuesListTrampoline(PEGTransformer &transf expression.push_back(process.TakeResult>(i)); } auto result = TransformInsertValuesList(transformer, insert_column_list, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeDoNothingMatchClauseTrampoline(PEGTransformer &transformer, @@ -20024,11 +20026,11 @@ void PEGTransformerFactory::InitializeDoNothingMatchClauseTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDoNothingMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDoNothingMatchClause(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeErrorMatchClauseTrampoline(PEGTransformer &transformer, @@ -20041,7 +20043,7 @@ void PEGTransformerFactory::InitializeErrorMatchClauseTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeErrorMatchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> expression {}; @@ -20049,7 +20051,7 @@ PEGTransformerFactory::FinalizeErrorMatchClauseTrampoline(PEGTransformer &transf expression = process.TakeResult>(0); } auto result = TransformErrorMatchClause(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateMatchSetClauseTrampoline(PEGTransformer &transformer, @@ -20059,11 +20061,11 @@ void PEGTransformerFactory::InitializeUpdateMatchSetClauseTrampoline(PEGTransfor process.PushChild({transformer.GetRule("UpdateMatchSetInfo"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateMatchSetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateMatchSetInfoTrampoline(PEGTransformer &transformer, @@ -20074,23 +20076,23 @@ void PEGTransformerFactory::InitializeUpdateMatchSetInfoTrampoline(PEGTransforme process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (!has_transform_process && (choice_result.name == "StarSymbol")) { + if (!has_transform_process && (choice_result.Name() == "StarSymbol")) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateMatchSetInfoTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { unique_ptr result {}; if (process.child_results[0]) { result = process.TakeResult>(0); } - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAndExpressionTrampoline(PEGTransformer &transformer, @@ -20100,12 +20102,12 @@ void PEGTransformerFactory::InitializeAndExpressionTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAndExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformAndExpression(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNotMatchedClauseTrampoline(PEGTransformer &transformer, @@ -20123,7 +20125,7 @@ void PEGTransformerFactory::InitializeNotMatchedClauseTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNotMatchedClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional by_source_or_target {}; @@ -20137,7 +20139,7 @@ PEGTransformerFactory::FinalizeNotMatchedClauseTrampoline(PEGTransformer &transf auto matched_clause_action = process.TakeResult>(2); auto result = TransformNotMatchedClause(transformer, by_source_or_target, std::move(and_expression), std::move(matched_clause_action)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeBySourceOrTargetTrampoline(PEGTransformer &transformer, @@ -20149,16 +20151,16 @@ void PEGTransformerFactory::InitializeBySourceOrTargetTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBySourceOrTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBySourceTrampoline(PEGTransformer &transformer, @@ -20166,10 +20168,10 @@ void PEGTransformerFactory::InitializeBySourceTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeBySourceTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeBySourceTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformBySource(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeByTargetTrampoline(PEGTransformer &transformer, @@ -20177,10 +20179,10 @@ void PEGTransformerFactory::InitializeByTargetTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeByTargetTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeByTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformByTarget(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePivotOnTrampoline(PEGTransformer &transformer, @@ -20190,11 +20192,11 @@ void PEGTransformerFactory::InitializePivotOnTrampoline(PEGTransformer &transfor process.PushChild({transformer.GetRule("PivotColumnList"), list_pr.GetChild(1)}, 0); } -unique_ptr PEGTransformerFactory::FinalizePivotOnTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizePivotOnTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto pivot_column_list = process.TakeResult>(0); auto result = TransformPivotOn(transformer, std::move(pivot_column_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePivotUsingTrampoline(PEGTransformer &transformer, @@ -20204,11 +20206,11 @@ void PEGTransformerFactory::InitializePivotUsingTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("TargetList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotUsingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto target_list = process.TakeResult>>(0); auto result = TransformPivotUsing(transformer, std::move(target_list)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializePivotColumnListTrampoline(PEGTransformer &transformer, @@ -20223,7 +20225,7 @@ void PEGTransformerFactory::InitializePivotColumnListTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotColumnListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -20234,7 +20236,7 @@ PEGTransformerFactory::FinalizePivotColumnListTrampoline(PEGTransformer &transfo pivot_column_entry.push_back(process.TakeResult(i)); } auto result = TransformPivotColumnList(transformer, std::move(pivot_column_entry)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePivotColumnEntryTrampoline(PEGTransformer &transformer, @@ -20246,16 +20248,16 @@ void PEGTransformerFactory::InitializePivotColumnEntryTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotColumnEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePivotColumnExpressionTrampoline(PEGTransformer &transformer, @@ -20265,12 +20267,12 @@ void PEGTransformerFactory::InitializePivotColumnExpressionTrampoline(PEGTransfo process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotColumnExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformPivotColumnExpression(transformer, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePivotColumnSubqueryTrampoline(PEGTransformer &transformer, @@ -20282,14 +20284,14 @@ void PEGTransformerFactory::InitializePivotColumnSubqueryTrampoline(PEGTransform process.PushChild({transformer.GetRule("BaseExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotColumnSubqueryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_expression = process.TakeResult>(0); auto select_statement_internal = process.TakeResult>(1); auto result = TransformPivotColumnSubquery(transformer, std::move(base_expression), std::move(select_statement_internal)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeIntoNameValuesTrampoline(PEGTransformer &transformer, @@ -20300,13 +20302,13 @@ void PEGTransformerFactory::InitializeIntoNameValuesTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntoNameValuesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); auto optional_parens_name_list = process.TakeResult>(1); auto result = TransformIntoNameValues(transformer, col_id_or_string, optional_parens_name_list); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOptionalParensNameListTrampoline(PEGTransformer &transformer, @@ -20318,16 +20320,16 @@ void PEGTransformerFactory::InitializeOptionalParensNameListTrampoline(PEGTransf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOptionalParensNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeParenthesizedNameListTrampoline(PEGTransformer &transformer, @@ -20342,7 +20344,7 @@ void PEGTransformerFactory::InitializeParenthesizedNameListTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeParenthesizedNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -20353,7 +20355,7 @@ PEGTransformerFactory::FinalizeParenthesizedNameListTrampoline(PEGTransformer &t col_id_or_string.push_back(process.TakeResult(i)); } auto result = TransformParenthesizedNameList(transformer, col_id_or_string); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeBareNameListTrampoline(PEGTransformer &transformer, @@ -20368,7 +20370,7 @@ void PEGTransformerFactory::InitializeBareNameListTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBareNameListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(0)); @@ -20378,7 +20380,7 @@ PEGTransformerFactory::FinalizeBareNameListTrampoline(PEGTransformer &transforme col_id_or_string.push_back(process.TakeResult(i)); } auto result = TransformBareNameList(transformer, col_id_or_string); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeIncludeOrExcludeNullsTrampoline(PEGTransformer &transformer, @@ -20390,16 +20392,16 @@ void PEGTransformerFactory::InitializeIncludeOrExcludeNullsTrampoline(PEGTransfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIncludeOrExcludeNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeIncludeNullsTrampoline(PEGTransformer &transformer, @@ -20407,10 +20409,10 @@ void PEGTransformerFactory::InitializeIncludeNullsTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIncludeNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformIncludeNulls(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeExcludeNullsTrampoline(PEGTransformer &transformer, @@ -20418,10 +20420,10 @@ void PEGTransformerFactory::InitializeExcludeNullsTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExcludeNullsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformExcludeNulls(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUnpivotHeaderTrampoline(PEGTransformer &transformer, @@ -20433,16 +20435,16 @@ void PEGTransformerFactory::InitializeUnpivotHeaderTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnpivotHeaderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeUnpivotHeaderSingleTrampoline(PEGTransformer &transformer, @@ -20452,12 +20454,12 @@ void PEGTransformerFactory::InitializeUnpivotHeaderSingleTrampoline(PEGTransform process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnpivotHeaderSingleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); auto result = TransformUnpivotHeaderSingle(transformer, col_id_or_string); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeUnpivotHeaderListTrampoline(PEGTransformer &transformer, @@ -20472,7 +20474,7 @@ void PEGTransformerFactory::InitializeUnpivotHeaderListTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnpivotHeaderListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -20483,7 +20485,7 @@ PEGTransformerFactory::FinalizeUnpivotHeaderListTrampoline(PEGTransformer &trans col_id_or_string.push_back(process.TakeResult(i)); } auto result = TransformUnpivotHeaderList(transformer, col_id_or_string); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializePragmaStatementTrampoline(PEGTransformer &transformer, @@ -20493,12 +20495,12 @@ void PEGTransformerFactory::InitializePragmaStatementTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("PragmaAssignOrFunction"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePragmaStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto pragma_assign_or_function = process.TakeResult>(0); auto result = TransformPragmaStatement(transformer, std::move(pragma_assign_or_function)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePragmaAssignOrFunctionTrampoline(PEGTransformer &transformer, @@ -20510,16 +20512,16 @@ void PEGTransformerFactory::InitializePragmaAssignOrFunctionTrampoline(PEGTransf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePragmaAssignOrFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePragmaAssignTrampoline(PEGTransformer &transformer, @@ -20529,13 +20531,13 @@ void PEGTransformerFactory::InitializePragmaAssignTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("VariableList"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePragmaAssignTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto setting_name = list_pr.GetChild(0).Cast().identifier; auto variable_list = process.TakeResult>>(0); auto result = TransformPragmaAssign(transformer, setting_name, std::move(variable_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePragmaFunctionTrampoline(PEGTransformer &transformer, @@ -20548,7 +20550,7 @@ void PEGTransformerFactory::InitializePragmaFunctionTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePragmaFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -20558,7 +20560,7 @@ PEGTransformerFactory::FinalizePragmaFunctionTrampoline(PEGTransformer &transfor pragma_parameters = process.TakeResult>>(0); } auto result = TransformPragmaFunction(transformer, pragma_name, std::move(pragma_parameters)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePragmaParametersTrampoline(PEGTransformer &transformer, @@ -20573,7 +20575,7 @@ void PEGTransformerFactory::InitializePragmaParametersTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePragmaParametersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -20584,7 +20586,7 @@ PEGTransformerFactory::FinalizePragmaParametersTrampoline(PEGTransformer &transf expression.push_back(process.TakeResult>(i)); } auto result = TransformPragmaParameters(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializePrepareStatementTrampoline(PEGTransformer &transformer, @@ -20599,7 +20601,7 @@ void PEGTransformerFactory::InitializePrepareStatementTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePrepareStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); @@ -20609,7 +20611,7 @@ PEGTransformerFactory::FinalizePrepareStatementTrampoline(PEGTransformer &transf } auto statement = process.TakeResult>(2); auto result = TransformPrepareStatement(transformer, col_id_or_string, type_list, std::move(statement)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTypeListTrampoline(PEGTransformer &transformer, @@ -20624,8 +20626,8 @@ void PEGTransformerFactory::InitializeTypeListTrampoline(PEGTransformer &transfo } } -unique_ptr PEGTransformerFactory::FinalizeTypeListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTypeListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(ExtractResultFromParens(list_pr.GetChild(0))); auto dynamic_child_count = dynamic_list_items.size(); @@ -20634,7 +20636,7 @@ unique_ptr PEGTransformerFactory::FinalizeTypeListTrampoli type.push_back(process.TakeResult(i)); } auto result = TransformTypeList(transformer, type); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeSelectStatementTrampoline(PEGTransformer &transformer, @@ -20644,12 +20646,12 @@ void PEGTransformerFactory::InitializeSelectStatementTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("SelectStatementInternal"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformSelectStatement(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSelectSetOpChainTrampoline(PEGTransformer &transformer, @@ -20673,7 +20675,7 @@ void PEGTransformerFactory::InitializeSelectSetOpChainTrampoline(PEGTransformer process.PushChild({transformer.GetRule("IntersectChain"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectSetOpChainTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -20696,7 +20698,7 @@ PEGTransformerFactory::FinalizeSelectSetOpChainTrampoline(PEGTransformer &transf } auto result = TransformSelectSetOpChain(transformer, std::move(intersect_chain), std::move(select_set_op_chain_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSelectSetOpChainTailTrampoline(PEGTransformer &transformer, @@ -20707,14 +20709,13 @@ void PEGTransformerFactory::InitializeSelectSetOpChainTailTrampoline(PEGTransfor process.PushChild({transformer.GetRule("SetopClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectSetOpChainTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto setop_clause = process.TakeResult>(0); auto intersect_chain = process.TakeResult>(1); auto result = TransformSelectSetOpChainTail(transformer, std::move(setop_clause), std::move(intersect_chain)); - return make_uniq, unique_ptr>>>( - std::move(result)); + return transformer.MakeResult, unique_ptr>>(std::move(result)); } void PEGTransformerFactory::InitializeIntersectChainTrampoline(PEGTransformer &transformer, @@ -20738,7 +20739,7 @@ void PEGTransformerFactory::InitializeIntersectChainTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("SelectAtom"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntersectChainTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -20760,7 +20761,7 @@ PEGTransformerFactory::FinalizeIntersectChainTrampoline(PEGTransformer &transfor intersect_chain_tail = std::move(intersect_chain_tail_value); } auto result = TransformIntersectChain(transformer, std::move(select_atom), std::move(intersect_chain_tail)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeIntersectChainTailTrampoline(PEGTransformer &transformer, @@ -20771,14 +20772,13 @@ void PEGTransformerFactory::InitializeIntersectChainTailTrampoline(PEGTransforme process.PushChild({transformer.GetRule("SetIntersectClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeIntersectChainTailTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto set_intersect_clause = process.TakeResult>(0); auto select_atom = process.TakeResult>(1); auto result = TransformIntersectChainTail(transformer, std::move(set_intersect_clause), std::move(select_atom)); - return make_uniq, unique_ptr>>>( - std::move(result)); + return transformer.MakeResult, unique_ptr>>(std::move(result)); } void PEGTransformerFactory::InitializeSetIntersectClauseTrampoline(PEGTransformer &transformer, @@ -20791,7 +20791,7 @@ void PEGTransformerFactory::InitializeSetIntersectClauseTrampoline(PEGTransforme } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetIntersectClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional distinct_or_all {}; @@ -20799,7 +20799,7 @@ PEGTransformerFactory::FinalizeSetIntersectClauseTrampoline(PEGTransformer &tran distinct_or_all = process.TakeResult(0); } auto result = TransformSetIntersectClause(transformer, distinct_or_all); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSelectAtomTrampoline(PEGTransformer &transformer, @@ -20811,15 +20811,15 @@ void PEGTransformerFactory::InitializeSelectAtomTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectAtomTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSelectParensTrampoline(PEGTransformer &transformer, @@ -20830,11 +20830,11 @@ void PEGTransformerFactory::InitializeSelectParensTrampoline(PEGTransformer &tra 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformSelectParens(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetopClauseTrampoline(PEGTransformer &transformer, @@ -20848,7 +20848,7 @@ void PEGTransformerFactory::InitializeSetopClauseTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("SetopType"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetopClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto setop_type = process.TakeResult(0); @@ -20860,7 +20860,7 @@ PEGTransformerFactory::FinalizeSetopClauseTrampoline(PEGTransformer &transformer auto &has_result_opt = list_pr.GetChild(2).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformSetopClause(transformer, setop_type, distinct_or_all, has_result); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetopTypeTrampoline(PEGTransformer &transformer, @@ -20872,15 +20872,15 @@ void PEGTransformerFactory::InitializeSetopTypeTrampoline(PEGTransformer &transf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeSetopTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeSetopTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSetopUnionTrampoline(PEGTransformer &transformer, @@ -20888,10 +20888,10 @@ void PEGTransformerFactory::InitializeSetopUnionTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetopUnionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSetopUnion(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSetopExceptTrampoline(PEGTransformer &transformer, @@ -20899,10 +20899,10 @@ void PEGTransformerFactory::InitializeSetopExceptTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetopExceptTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSetopExcept(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSelectStatementTypeTrampoline(PEGTransformer &transformer, @@ -20914,16 +20914,16 @@ void PEGTransformerFactory::InitializeSelectStatementTypeTrampoline(PEGTransform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectStatementTypeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeResultModifiersTrampoline(PEGTransformer &transformer, @@ -20940,7 +20940,7 @@ void PEGTransformerFactory::InitializeResultModifiersTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeResultModifiersTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional> order_by_clause {}; @@ -20952,7 +20952,7 @@ PEGTransformerFactory::FinalizeResultModifiersTrampoline(PEGTransformer &transfo limit_offset = process.TakeResult>(1); } auto result = TransformResultModifiers(transformer, std::move(order_by_clause), std::move(limit_offset)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeLimitOffsetTrampoline(PEGTransformer &transformer, @@ -20964,15 +20964,15 @@ void PEGTransformerFactory::InitializeLimitOffsetTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLimitOffsetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLimitOffsetClauseTrampoline(PEGTransformer &transformer, @@ -20986,7 +20986,7 @@ void PEGTransformerFactory::InitializeLimitOffsetClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("LimitClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLimitOffsetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto limit_clause = process.TakeResult(0); @@ -20995,7 +20995,7 @@ PEGTransformerFactory::FinalizeLimitOffsetClauseTrampoline(PEGTransformer &trans offset_clause = process.TakeResult(1); } auto result = TransformLimitOffsetClause(transformer, std::move(limit_clause), std::move(offset_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOffsetLimitClauseTrampoline(PEGTransformer &transformer, @@ -21009,7 +21009,7 @@ void PEGTransformerFactory::InitializeOffsetLimitClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("OffsetClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOffsetLimitClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto offset_clause = process.TakeResult(0); @@ -21018,7 +21018,7 @@ PEGTransformerFactory::FinalizeOffsetLimitClauseTrampoline(PEGTransformer &trans limit_clause = process.TakeResult(1); } auto result = TransformOffsetLimitClause(transformer, std::move(offset_clause), std::move(limit_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOffsetFetchClauseTrampoline(PEGTransformer &transformer, @@ -21029,13 +21029,13 @@ void PEGTransformerFactory::InitializeOffsetFetchClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("OffsetClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOffsetFetchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto offset_clause = process.TakeResult(0); auto fetch_clause = process.TakeResult(1); auto result = TransformOffsetFetchClause(transformer, std::move(offset_clause), std::move(fetch_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFetchOffsetClauseTrampoline(PEGTransformer &transformer, @@ -21046,13 +21046,13 @@ void PEGTransformerFactory::InitializeFetchOffsetClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("FetchClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFetchOffsetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto fetch_clause = process.TakeResult(0); auto offset_clause = process.TakeResult(1); auto result = TransformFetchOffsetClause(transformer, std::move(fetch_clause), std::move(offset_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFetchOnlyClauseTrampoline(PEGTransformer &transformer, @@ -21062,12 +21062,12 @@ void PEGTransformerFactory::InitializeFetchOnlyClauseTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("FetchClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFetchOnlyClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto fetch_clause = process.TakeResult(0); auto result = TransformFetchOnlyClause(transformer, std::move(fetch_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableStatementTrampoline(PEGTransformer &transformer, @@ -21077,12 +21077,12 @@ void PEGTransformerFactory::InitializeTableStatementTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); auto result = TransformTableStatement(transformer, std::move(base_table_name)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOptionalParensSimpleSelectTrampoline(PEGTransformer &transformer, @@ -21094,16 +21094,16 @@ void PEGTransformerFactory::InitializeOptionalParensSimpleSelectTrampoline(PEGTr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOptionalParensSimpleSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSimpleSelectParensTrampoline(PEGTransformer &transformer, @@ -21113,12 +21113,12 @@ void PEGTransformerFactory::InitializeSimpleSelectParensTrampoline(PEGTransforme process.PushChild({transformer.GetRule("SimpleSelect"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSimpleSelectParensTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto simple_select = process.TakeResult>(0); auto result = TransformSimpleSelectParens(transformer, std::move(simple_select)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSelectFromTrampoline(PEGTransformer &transformer, @@ -21130,15 +21130,15 @@ void PEGTransformerFactory::InitializeSelectFromTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectFromTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSelectFromClauseTrampoline(PEGTransformer &transformer, @@ -21152,7 +21152,7 @@ void PEGTransformerFactory::InitializeSelectFromClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("SelectClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectFromClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_clause = process.TakeResult>(0); @@ -21161,7 +21161,7 @@ PEGTransformerFactory::FinalizeSelectFromClauseTrampoline(PEGTransformer &transf from_clause = process.TakeResult>(1); } auto result = TransformSelectFromClause(transformer, std::move(select_clause), std::move(from_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFromSelectClauseTrampoline(PEGTransformer &transformer, @@ -21175,7 +21175,7 @@ void PEGTransformerFactory::InitializeFromSelectClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("FromClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFromSelectClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto from_clause = process.TakeResult>(0); @@ -21184,7 +21184,7 @@ PEGTransformerFactory::FinalizeFromSelectClauseTrampoline(PEGTransformer &transf select_clause = process.TakeResult>(1); } auto result = TransformFromSelectClause(transformer, std::move(from_clause), std::move(select_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWithStatementTrampoline(PEGTransformer &transformer, @@ -21207,7 +21207,7 @@ void PEGTransformerFactory::InitializeWithStatementTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); @@ -21226,7 +21226,7 @@ PEGTransformerFactory::FinalizeWithStatementTrampoline(PEGTransformer &transform auto cte_body = process.TakeResult>(4); auto result = TransformWithStatement(transformer, col_id_or_string, column_aliases, std::move(using_key), materialized, std::move(cte_body)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeCTEBodyTrampoline(PEGTransformer &transformer, @@ -21238,15 +21238,15 @@ void PEGTransformerFactory::InitializeCTEBodyTrampoline(PEGTransformer &transfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeCTEBodyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeCTEBodyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCTESelectBodyTrampoline(PEGTransformer &transformer, @@ -21257,12 +21257,12 @@ void PEGTransformerFactory::InitializeCTESelectBodyTrampoline(PEGTransformer &tr 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCTESelectBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformCTESelectBody(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCTEDMLBodyTrampoline(PEGTransformer &transformer, @@ -21272,11 +21272,11 @@ void PEGTransformerFactory::InitializeCTEDMLBodyTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("Statement"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCTEDMLBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto statement = process.TakeResult>(0); auto result = TransformCTEDMLBody(transformer, std::move(statement)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUsingKeyTrampoline(PEGTransformer &transformer, @@ -21286,11 +21286,11 @@ void PEGTransformerFactory::InitializeUsingKeyTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("TargetList"), ExtractResultFromParens(list_pr.GetChild(2))}, 0); } -unique_ptr PEGTransformerFactory::FinalizeUsingKeyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeUsingKeyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto target_list = process.TakeResult>>(0); auto result = TransformUsingKey(transformer, std::move(target_list)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeMaterializedTrampoline(PEGTransformer &transformer, @@ -21298,14 +21298,14 @@ void PEGTransformerFactory::InitializeMaterializedTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeMaterializedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; auto &has_result_opt = list_pr.GetChild(0).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformMaterialized(transformer, has_result); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSelectClauseTrampoline(PEGTransformer &transformer, @@ -21322,7 +21322,7 @@ void PEGTransformerFactory::InitializeSelectClauseTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional distinct_clause {}; if (process.child_results[0]) { @@ -21333,7 +21333,7 @@ PEGTransformerFactory::FinalizeSelectClauseTrampoline(PEGTransformer &transforme target_list = process.TakeResult>>(1); } auto result = TransformSelectClause(transformer, std::move(distinct_clause), std::move(target_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTargetListTrampoline(PEGTransformer &transformer, @@ -21348,7 +21348,7 @@ void PEGTransformerFactory::InitializeTargetListTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTargetListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(0)); @@ -21358,7 +21358,7 @@ PEGTransformerFactory::FinalizeTargetListTrampoline(PEGTransformer &transformer, aliased_expression.push_back(process.TakeResult>(i)); } auto result = TransformTargetList(transformer, std::move(aliased_expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeColumnAliasesTrampoline(PEGTransformer &transformer, @@ -21373,7 +21373,7 @@ void PEGTransformerFactory::InitializeColumnAliasesTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColumnAliasesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -21384,7 +21384,7 @@ PEGTransformerFactory::FinalizeColumnAliasesTrampoline(PEGTransformer &transform col_id_or_string.push_back(process.TakeResult(i)); } auto result = TransformColumnAliases(transformer, col_id_or_string); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeDistinctClauseTrampoline(PEGTransformer &transformer, @@ -21396,16 +21396,16 @@ void PEGTransformerFactory::InitializeDistinctClauseTrampoline(PEGTransformer &t auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDistinctClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDistinctAllTrampoline(PEGTransformer &transformer, @@ -21413,10 +21413,10 @@ void PEGTransformerFactory::InitializeDistinctAllTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDistinctAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDistinctAll(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDistinctOnTrampoline(PEGTransformer &transformer, @@ -21429,14 +21429,14 @@ void PEGTransformerFactory::InitializeDistinctOnTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDistinctOnTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional>> distinct_on_targets {}; if (process.child_results[0]) { distinct_on_targets = process.TakeResult>>(0); } auto result = TransformDistinctOn(transformer, std::move(distinct_on_targets)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDistinctOnTargetsTrampoline(PEGTransformer &transformer, @@ -21451,7 +21451,7 @@ void PEGTransformerFactory::InitializeDistinctOnTargetsTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDistinctOnTargetsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -21462,7 +21462,7 @@ PEGTransformerFactory::FinalizeDistinctOnTargetsTrampoline(PEGTransformer &trans expression.push_back(process.TakeResult>(i)); } auto result = TransformDistinctOnTargets(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeInnerTableRefTrampoline(PEGTransformer &transformer, @@ -21474,16 +21474,16 @@ void PEGTransformerFactory::InitializeInnerTableRefTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeInnerTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableSubqueryTrampoline(PEGTransformer &transformer, @@ -21505,7 +21505,7 @@ void PEGTransformerFactory::InitializeTableSubqueryTrampoline(PEGTransformer &tr } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableSubqueryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional table_alias_colon {}; @@ -21523,7 +21523,7 @@ PEGTransformerFactory::FinalizeTableSubqueryTrampoline(PEGTransformer &transform } auto result = TransformTableSubquery(transformer, table_alias_colon, lateral, std::move(subquery_reference), table_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBaseTableRefTrampoline(PEGTransformer &transformer, @@ -21549,7 +21549,7 @@ void PEGTransformerFactory::InitializeBaseTableRefTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBaseTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional table_alias_colon {}; if (process.child_results[0]) { @@ -21570,7 +21570,7 @@ PEGTransformerFactory::FinalizeBaseTableRefTrampoline(PEGTransformer &transforme } auto result = TransformBaseTableRef(transformer, table_alias_colon, std::move(base_table_name), table_alias, std::move(at_clause), std::move(sample_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableAliasColonTrampoline(PEGTransformer &transformer, @@ -21580,12 +21580,12 @@ void PEGTransformerFactory::InitializeTableAliasColonTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("ColIdOrString"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableAliasColonTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id_or_string = process.TakeResult(0); auto result = TransformTableAliasColon(transformer, col_id_or_string); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeValuesRefTrampoline(PEGTransformer &transformer, @@ -21603,8 +21603,8 @@ void PEGTransformerFactory::InitializeValuesRefTrampoline(PEGTransformer &transf } } -unique_ptr -PEGTransformerFactory::FinalizeValuesRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeValuesRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { optional table_alias_colon {}; if (process.child_results[0]) { table_alias_colon = process.TakeResult(0); @@ -21615,7 +21615,7 @@ PEGTransformerFactory::FinalizeValuesRefTrampoline(PEGTransformer &transformer, table_alias = process.TakeResult(2); } auto result = TransformValuesRef(transformer, table_alias_colon, std::move(values_clause), table_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeParensTableRefTrampoline(PEGTransformer &transformer, @@ -21637,7 +21637,7 @@ void PEGTransformerFactory::InitializeParensTableRefTrampoline(PEGTransformer &t } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeParensTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional table_alias_colon {}; @@ -21655,7 +21655,7 @@ PEGTransformerFactory::FinalizeParensTableRefTrampoline(PEGTransformer &transfor } auto result = TransformParensTableRef(transformer, table_alias_colon, std::move(table_ref), table_alias, std::move(sample_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeJoinOrPivotTrampoline(PEGTransformer &transformer, @@ -21667,15 +21667,15 @@ void PEGTransformerFactory::InitializeJoinOrPivotTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeJoinOrPivotTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTablePivotClauseTrampoline(PEGTransformer &transformer, @@ -21689,7 +21689,7 @@ void PEGTransformerFactory::InitializeTablePivotClauseTrampoline(PEGTransformer process.PushChild({transformer.GetRule("TablePivotClauseBody"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTablePivotClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto table_pivot_clause_body = process.TakeResult>(0); @@ -21698,7 +21698,7 @@ PEGTransformerFactory::FinalizeTablePivotClauseTrampoline(PEGTransformer &transf table_alias = process.TakeResult(1); } auto result = TransformTablePivotClause(transformer, std::move(table_pivot_clause_body), table_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTablePivotClauseBodyTrampoline(PEGTransformer &transformer, @@ -21720,7 +21720,7 @@ void PEGTransformerFactory::InitializeTablePivotClauseBodyTrampoline(PEGTransfor process.PushChild({transformer.GetRule("TargetList"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTablePivotClauseBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -21738,7 +21738,7 @@ PEGTransformerFactory::FinalizeTablePivotClauseBodyTrampoline(PEGTransformer &tr } auto result = TransformTablePivotClauseBody(transformer, std::move(target_list), std::move(pivot_value_list), pivot_group_by_list); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePivotGroupByListTrampoline(PEGTransformer &transformer, @@ -21748,12 +21748,12 @@ void PEGTransformerFactory::InitializePivotGroupByListTrampoline(PEGTransformer process.PushChild({transformer.GetRule("OptionalParensNameList"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotGroupByListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto optional_parens_name_list = process.TakeResult>(0); auto result = TransformPivotGroupByList(transformer, optional_parens_name_list); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeTableUnpivotClauseTrampoline(PEGTransformer &transformer, @@ -21771,7 +21771,7 @@ void PEGTransformerFactory::InitializeTableUnpivotClauseTrampoline(PEGTransforme } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableUnpivotClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional include_or_exclude_nulls {}; @@ -21785,7 +21785,7 @@ PEGTransformerFactory::FinalizeTableUnpivotClauseTrampoline(PEGTransformer &tran } auto result = TransformTableUnpivotClause(transformer, include_or_exclude_nulls, std::move(table_unpivot_clause_body), table_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableUnpivotClauseBodyTrampoline(PEGTransformer &transformer, @@ -21802,7 +21802,7 @@ void PEGTransformerFactory::InitializeTableUnpivotClauseBodyTrampoline(PEGTransf process.PushChild({transformer.GetRule("UnpivotHeader"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableUnpivotClauseBodyTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -21815,7 +21815,7 @@ PEGTransformerFactory::FinalizeTableUnpivotClauseBodyTrampoline(PEGTransformer & unpivot_value_list.push_back(process.TakeResult(i)); } auto result = TransformTableUnpivotClauseBody(transformer, unpivot_header, std::move(unpivot_value_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePivotHeaderTrampoline(PEGTransformer &transformer, @@ -21825,11 +21825,11 @@ void PEGTransformerFactory::InitializePivotHeaderTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("BaseExpression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotHeaderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_expression = process.TakeResult>(0); auto result = TransformPivotHeader(transformer, std::move(base_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializePivotValueListTrampoline(PEGTransformer &transformer, @@ -21840,13 +21840,13 @@ void PEGTransformerFactory::InitializePivotValueListTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("PivotHeader"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotValueListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto pivot_header = process.TakeResult>(0); auto pivot_value_target = process.TakeResult(1); auto result = TransformPivotValueList(transformer, std::move(pivot_header), std::move(pivot_value_target)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePivotValueTargetTrampoline(PEGTransformer &transformer, @@ -21858,16 +21858,16 @@ void PEGTransformerFactory::InitializePivotValueTargetTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotValueTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePivotEnumTargetTrampoline(PEGTransformer &transformer, @@ -21875,13 +21875,13 @@ void PEGTransformerFactory::InitializePivotEnumTargetTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotEnumTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformPivotEnumTarget(transformer, identifier); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePivotListTargetTrampoline(PEGTransformer &transformer, @@ -21891,12 +21891,12 @@ void PEGTransformerFactory::InitializePivotListTargetTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("PivotTargetList"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotListTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto pivot_target_list = process.TakeResult>(0); auto result = TransformPivotListTarget(transformer, std::move(pivot_target_list)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeUnpivotValueListTrampoline(PEGTransformer &transformer, @@ -21907,13 +21907,13 @@ void PEGTransformerFactory::InitializeUnpivotValueListTrampoline(PEGTransformer process.PushChild({transformer.GetRule("UnpivotHeader"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnpivotValueListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto unpivot_header = process.TakeResult>(0); auto unpivot_target_list = process.TakeResult>(1); auto result = TransformUnpivotValueList(transformer, unpivot_header, std::move(unpivot_target_list)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePivotTargetListTrampoline(PEGTransformer &transformer, @@ -21923,12 +21923,12 @@ void PEGTransformerFactory::InitializePivotTargetListTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("TargetList"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotTargetListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto target_list = process.TakeResult>>(0); auto result = TransformPivotTargetList(transformer, std::move(target_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUnpivotTargetListTrampoline(PEGTransformer &transformer, @@ -21938,12 +21938,12 @@ void PEGTransformerFactory::InitializeUnpivotTargetListTrampoline(PEGTransformer process.PushChild({transformer.GetRule("TargetList"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnpivotTargetListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto target_list = process.TakeResult>>(0); auto result = TransformUnpivotTargetList(transformer, std::move(target_list)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLateralTrampoline(PEGTransformer &transformer, @@ -21951,10 +21951,10 @@ void PEGTransformerFactory::InitializeLateralTrampoline(PEGTransformer &transfor process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeLateralTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeLateralTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformLateral(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeBaseTableNameTrampoline(PEGTransformer &transformer, @@ -21966,16 +21966,16 @@ void PEGTransformerFactory::InitializeBaseTableNameTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBaseTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUnqualifiedBaseTableNameTrampoline(PEGTransformer &transformer, @@ -21983,13 +21983,13 @@ void PEGTransformerFactory::InitializeUnqualifiedBaseTableNameTrampoline(PEGTran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnqualifiedBaseTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto table_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformUnqualifiedBaseTableName(transformer, table_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeQualifiedTableNameTrampoline(PEGTransformer &transformer, @@ -22001,16 +22001,16 @@ void PEGTransformerFactory::InitializeQualifiedTableNameTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedTableNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSchemaReservedTableTrampoline(PEGTransformer &transformer, @@ -22020,14 +22020,14 @@ void PEGTransformerFactory::InitializeSchemaReservedTableTrampoline(PEGTransform process.PushChild({transformer.GetRule("SchemaQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaReservedTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto schema_qualification = process.TakeResult(0); auto reserved_table_name = list_pr.GetChild(1).Cast().identifier; auto result = TransformSchemaReservedTable(transformer, schema_qualification, reserved_table_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCatalogReservedSchemaTableTrampoline(PEGTransformer &transformer, @@ -22045,7 +22045,7 @@ void PEGTransformerFactory::InitializeCatalogReservedSchemaTableTrampoline(PEGTr process.PushChild({transformer.GetRule("CatalogQualification"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogReservedSchemaTableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -22060,7 +22060,7 @@ PEGTransformerFactory::FinalizeCatalogReservedSchemaTableTrampoline(PEGTransform auto reserved_table_name = list_pr.GetChild(2).Cast().identifier; auto result = TransformCatalogReservedSchemaTable(transformer, catalog_qualification, reserved_schema_qualification, reserved_table_name); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableFunctionTrampoline(PEGTransformer &transformer, @@ -22072,16 +22072,16 @@ void PEGTransformerFactory::InitializeTableFunctionTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableFunctionLateralOptTrampoline(PEGTransformer &transformer, @@ -22104,7 +22104,7 @@ void PEGTransformerFactory::InitializeTableFunctionLateralOptTrampoline(PEGTrans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableFunctionLateralOptTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional lateral {}; @@ -22123,7 +22123,7 @@ PEGTransformerFactory::FinalizeTableFunctionLateralOptTrampoline(PEGTransformer } auto result = TransformTableFunctionLateralOpt(transformer, lateral, qualified_table_function, std::move(table_function_arguments), with_ordinality, table_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeTableFunctionAliasColonTrampoline(PEGTransformer &transformer, @@ -22143,7 +22143,7 @@ void PEGTransformerFactory::InitializeTableFunctionAliasColonTrampoline(PEGTrans process.PushChild({transformer.GetRule("TableAliasColon"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableFunctionAliasColonTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto table_alias_colon = process.TakeResult(0); @@ -22160,7 +22160,7 @@ PEGTransformerFactory::FinalizeTableFunctionAliasColonTrampoline(PEGTransformer auto result = TransformTableFunctionAliasColon(transformer, table_alias_colon, qualified_table_function, std::move(table_function_arguments), with_ordinality, std::move(sample_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWithOrdinalityTrampoline(PEGTransformer &transformer, @@ -22168,11 +22168,11 @@ void PEGTransformerFactory::InitializeWithOrdinalityTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithOrdinalityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformWithOrdinality(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeQualifiedTableFunctionTrampoline(PEGTransformer &transformer, @@ -22199,7 +22199,7 @@ void PEGTransformerFactory::InitializeQualifiedTableFunctionTrampoline(PEGTransf } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifiedTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -22225,7 +22225,7 @@ PEGTransformerFactory::FinalizeQualifiedTableFunctionTrampoline(PEGTransformer & auto table_function_name = list_pr.GetChild(2).Cast().identifier; auto result = TransformQualifiedTableFunction(transformer, catalog_qualification, schema_qualification, table_function_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTableFunctionArgumentsTrampoline(PEGTransformer &transformer, @@ -22246,7 +22246,7 @@ void PEGTransformerFactory::InitializeTableFunctionArgumentsTrampoline(PEGTransf } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableFunctionArgumentsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -22266,7 +22266,7 @@ PEGTransformerFactory::FinalizeTableFunctionArgumentsTrampoline(PEGTransformer & function_argument = std::move(function_argument_value); } auto result = TransformTableFunctionArguments(transformer, std::move(function_argument)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeFunctionArgumentTrampoline(PEGTransformer &transformer, @@ -22278,16 +22278,16 @@ void PEGTransformerFactory::InitializeFunctionArgumentTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFunctionArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeNamedFunctionArgumentTrampoline(PEGTransformer &transformer, @@ -22297,12 +22297,12 @@ void PEGTransformerFactory::InitializeNamedFunctionArgumentTrampoline(PEGTransfo process.PushChild({transformer.GetRule("NamedParameter"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNamedFunctionArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto named_parameter = process.TakeResult(0); auto result = TransformNamedFunctionArgument(transformer, std::move(named_parameter)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializePositionalFunctionArgumentTrampoline(PEGTransformer &transformer, @@ -22312,12 +22312,12 @@ void PEGTransformerFactory::InitializePositionalFunctionArgumentTrampoline(PEGTr process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePositionalFunctionArgumentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformPositionalFunctionArgument(transformer, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeNamedParameterTrampoline(PEGTransformer &transformer, @@ -22332,7 +22332,7 @@ void PEGTransformerFactory::InitializeNamedParameterTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("TypeFuncName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNamedParameterTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto type_func_name = process.TakeResult(0); @@ -22342,7 +22342,7 @@ PEGTransformerFactory::FinalizeNamedParameterTrampoline(PEGTransformer &transfor } auto expression = process.TakeResult>(2); auto result = TransformNamedParameter(transformer, type_func_name, type, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeTableAliasTrampoline(PEGTransformer &transformer, @@ -22354,15 +22354,15 @@ void PEGTransformerFactory::InitializeTableAliasTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTableAliasAsTrampoline(PEGTransformer &transformer, @@ -22376,7 +22376,7 @@ void PEGTransformerFactory::InitializeTableAliasAsTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("IdentifierOrStringLiteral"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableAliasAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto identifier_or_string_literal = process.TakeResult(0); optional> column_aliases {}; @@ -22384,7 +22384,7 @@ PEGTransformerFactory::FinalizeTableAliasAsTrampoline(PEGTransformer &transforme column_aliases = process.TakeResult>(1); } auto result = TransformTableAliasAs(transformer, identifier_or_string_literal, column_aliases); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTableAliasWithoutAsTrampoline(PEGTransformer &transformer, @@ -22397,7 +22397,7 @@ void PEGTransformerFactory::InitializeTableAliasWithoutAsTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTableAliasWithoutAsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -22407,7 +22407,7 @@ PEGTransformerFactory::FinalizeTableAliasWithoutAsTrampoline(PEGTransformer &tra column_aliases = process.TakeResult>(0); } auto result = TransformTableAliasWithoutAs(transformer, identifier, column_aliases); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAtClauseTrampoline(PEGTransformer &transformer, @@ -22417,11 +22417,11 @@ void PEGTransformerFactory::InitializeAtClauseTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("AtSpecifier"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr PEGTransformerFactory::FinalizeAtClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeAtClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto at_specifier = process.TakeResult>(0); auto result = TransformAtClause(transformer, std::move(at_specifier)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAtSpecifierTrampoline(PEGTransformer &transformer, @@ -22432,12 +22432,12 @@ void PEGTransformerFactory::InitializeAtSpecifierTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("AtUnit"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAtSpecifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto at_unit = process.TakeResult(0); auto expression = process.TakeResult>(1); auto result = TransformAtSpecifier(transformer, at_unit, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAtUnitTrampoline(PEGTransformer &transformer, @@ -22453,13 +22453,13 @@ void PEGTransformerFactory::InitializeAtUnitTrampoline(PEGTransformer &transform return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeAtUnitTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeAtUnitTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { string result; if (process.child_results[0]) { result = process.TakeResult(0); @@ -22478,7 +22478,7 @@ unique_ptr PEGTransformerFactory::FinalizeAtUnitTrampoline result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeVersionAtUnitTrampoline(PEGTransformer &transformer, @@ -22486,11 +22486,11 @@ void PEGTransformerFactory::InitializeVersionAtUnitTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVersionAtUnitTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformVersionAtUnit(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeTimestampAtUnitTrampoline(PEGTransformer &transformer, @@ -22498,11 +22498,11 @@ void PEGTransformerFactory::InitializeTimestampAtUnitTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTimestampAtUnitTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformTimestampAtUnit(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeJoinClauseTrampoline(PEGTransformer &transformer, @@ -22514,15 +22514,15 @@ void PEGTransformerFactory::InitializeJoinClauseTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeJoinClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestJoinClauseTrampoline(PEGTransformer &transformer, @@ -22534,16 +22534,16 @@ void PEGTransformerFactory::InitializeNearestJoinClauseTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestJoinClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestJoinAliasedTrampoline(PEGTransformer &transformer, @@ -22563,7 +22563,7 @@ void PEGTransformerFactory::InitializeNearestJoinAliasedTrampoline(PEGTransforme } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestJoinAliasedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -22585,7 +22585,7 @@ PEGTransformerFactory::FinalizeNearestJoinAliasedTrampoline(PEGTransformer &tran auto expression = process.TakeResult>(4); auto result = TransformNearestJoinAliased(transformer, join_type, std::move(table_ref), approx_or_exact, std::move(number_literal), distance_or_similarity, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestJoinBareTrampoline(PEGTransformer &transformer, @@ -22605,7 +22605,7 @@ void PEGTransformerFactory::InitializeNearestJoinBareTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestJoinBareTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -22627,7 +22627,7 @@ PEGTransformerFactory::FinalizeNearestJoinBareTrampoline(PEGTransformer &transfo auto expression = process.TakeResult>(4); auto result = TransformNearestJoinBare(transformer, join_type, std::move(nearest_bare_table_ref), approx_or_exact, std::move(number_literal), distance_or_similarity, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestBareTableRefTrampoline(PEGTransformer &transformer, @@ -22639,16 +22639,16 @@ void PEGTransformerFactory::InitializeNearestBareTableRefTrampoline(PEGTransform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestBareTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestValuesRefTrampoline(PEGTransformer &transformer, @@ -22658,12 +22658,12 @@ void PEGTransformerFactory::InitializeNearestValuesRefTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ValuesClause"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestValuesRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto values_clause = process.TakeResult>(0); auto result = TransformNearestValuesRef(transformer, std::move(values_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestTableFunctionTrampoline(PEGTransformer &transformer, @@ -22682,7 +22682,7 @@ void PEGTransformerFactory::InitializeNearestTableFunctionTrampoline(PEGTransfor } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestTableFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional lateral {}; @@ -22697,7 +22697,7 @@ PEGTransformerFactory::FinalizeNearestTableFunctionTrampoline(PEGTransformer &tr } auto result = TransformNearestTableFunction(transformer, lateral, qualified_table_function, std::move(table_function_arguments), with_ordinality); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestTableSubqueryTrampoline(PEGTransformer &transformer, @@ -22711,7 +22711,7 @@ void PEGTransformerFactory::InitializeNearestTableSubqueryTrampoline(PEGTransfor } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestTableSubqueryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional lateral {}; @@ -22720,7 +22720,7 @@ PEGTransformerFactory::FinalizeNearestTableSubqueryTrampoline(PEGTransformer &tr } auto subquery_reference = process.TakeResult>(1); auto result = TransformNearestTableSubquery(transformer, lateral, std::move(subquery_reference)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestBaseTableRefTrampoline(PEGTransformer &transformer, @@ -22738,7 +22738,7 @@ void PEGTransformerFactory::InitializeNearestBaseTableRefTrampoline(PEGTransform process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestBaseTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); @@ -22752,7 +22752,7 @@ PEGTransformerFactory::FinalizeNearestBaseTableRefTrampoline(PEGTransformer &tra } auto result = TransformNearestBaseTableRef(transformer, std::move(base_table_name), std::move(at_clause), std::move(sample_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeNearestParensTableRefTrampoline(PEGTransformer &transformer, @@ -22766,7 +22766,7 @@ void PEGTransformerFactory::InitializeNearestParensTableRefTrampoline(PEGTransfo process.PushChild({transformer.GetRule("TableRef"), ExtractResultFromParens(list_pr.GetChild(0))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestParensTableRefTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto table_ref = process.TakeResult>(0); @@ -22775,7 +22775,7 @@ PEGTransformerFactory::FinalizeNearestParensTableRefTrampoline(PEGTransformer &t sample_clause = process.TakeResult>(1); } auto result = TransformNearestParensTableRef(transformer, std::move(table_ref), std::move(sample_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeApproxOrExactTrampoline(PEGTransformer &transformer, @@ -22787,16 +22787,16 @@ void PEGTransformerFactory::InitializeApproxOrExactTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeApproxOrExactTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNearestApproxTrampoline(PEGTransformer &transformer, @@ -22804,11 +22804,11 @@ void PEGTransformerFactory::InitializeNearestApproxTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestApproxTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNearestApprox(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNearestExactTrampoline(PEGTransformer &transformer, @@ -22816,10 +22816,10 @@ void PEGTransformerFactory::InitializeNearestExactTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestExactTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNearestExact(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDistanceOrSimilarityTrampoline(PEGTransformer &transformer, @@ -22831,16 +22831,16 @@ void PEGTransformerFactory::InitializeDistanceOrSimilarityTrampoline(PEGTransfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDistanceOrSimilarityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNearestDistanceTrampoline(PEGTransformer &transformer, @@ -22848,11 +22848,11 @@ void PEGTransformerFactory::InitializeNearestDistanceTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestDistanceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNearestDistance(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNearestSimilarityTrampoline(PEGTransformer &transformer, @@ -22860,11 +22860,11 @@ void PEGTransformerFactory::InitializeNearestSimilarityTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNearestSimilarityTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNearestSimilarity(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRegularJoinClauseTrampoline(PEGTransformer &transformer, @@ -22883,7 +22883,7 @@ void PEGTransformerFactory::InitializeRegularJoinClauseTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRegularJoinClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional asof {}; @@ -22898,7 +22898,7 @@ PEGTransformerFactory::FinalizeRegularJoinClauseTrampoline(PEGTransformer &trans auto join_qualifier = process.TakeResult(3); auto result = TransformRegularJoinClause(transformer, asof, join_type, std::move(table_ref), std::move(join_qualifier)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeJoinByClauseTrampoline(PEGTransformer &transformer, @@ -22912,23 +22912,23 @@ void PEGTransformerFactory::InitializeJoinByClauseTrampoline(PEGTransformer &tra 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeJoinByClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_label = process.TakeResult(0); auto table_ref = process.TakeResult>(1); auto join_qualifier = process.TakeResult(2); auto result = TransformJoinByClause(transformer, col_label, std::move(table_ref), std::move(join_qualifier)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeAsofTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeAsofTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeAsofTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformAsof(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeJoinWithoutOnClauseTrampoline(PEGTransformer &transformer, @@ -22939,13 +22939,13 @@ void PEGTransformerFactory::InitializeJoinWithoutOnClauseTrampoline(PEGTransform process.PushChild({transformer.GetRule("JoinPrefix"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeJoinWithoutOnClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto join_prefix = process.TakeResult(0); auto inner_table_ref = process.TakeResult>(1); auto result = TransformJoinWithoutOnClause(transformer, join_prefix, std::move(inner_table_ref)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeJoinQualifierTrampoline(PEGTransformer &transformer, @@ -22957,16 +22957,16 @@ void PEGTransformerFactory::InitializeJoinQualifierTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeJoinQualifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOnClauseTrampoline(PEGTransformer &transformer, @@ -22976,11 +22976,11 @@ void PEGTransformerFactory::InitializeOnClauseTrampoline(PEGTransformer &transfo process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeOnClauseTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeOnClauseTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformOnClause(transformer, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeUsingClauseTrampoline(PEGTransformer &transformer, @@ -22995,7 +22995,7 @@ void PEGTransformerFactory::InitializeUsingClauseTrampoline(PEGTransformer &tran } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUsingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(ExtractResultFromParens(list_pr.GetChild(1))); @@ -23005,7 +23005,7 @@ PEGTransformerFactory::FinalizeUsingClauseTrampoline(PEGTransformer &transformer using_column_name.push_back(process.TakeResult(i)); } auto result = TransformUsingClause(transformer, using_column_name); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeUsingColumnNameTrampoline(PEGTransformer &transformer, @@ -23016,17 +23016,17 @@ void PEGTransformerFactory::InitializeUsingColumnNameTrampoline(PEGTransformer & process.ReserveChildSlots(1); auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; - if (choice_result.name.empty() || choice_result.type == ParseResultType::IDENTIFIER || + if (choice_result.Name().empty() || choice_result.type == ParseResultType::IDENTIFIER || choice_result.type == ParseResultType::KEYWORD || choice_result.type == ParseResultType::STRING) { return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUsingColumnNameTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { Identifier result; @@ -23045,7 +23045,7 @@ PEGTransformerFactory::FinalizeUsingColumnNameTrampoline(PEGTransformer &transfo result = Identifier(TransformIdentifierOrKeyword(transformer, choice_result)); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeJoinTypeTrampoline(PEGTransformer &transformer, @@ -23057,15 +23057,15 @@ void PEGTransformerFactory::InitializeJoinTypeTrampoline(PEGTransformer &transfo auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr PEGTransformerFactory::FinalizeJoinTypeTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeJoinTypeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeJoinPrefixTrampoline(PEGTransformer &transformer, @@ -23077,15 +23077,15 @@ void PEGTransformerFactory::InitializeJoinPrefixTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeJoinPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCrossJoinPrefixTrampoline(PEGTransformer &transformer, @@ -23093,11 +23093,11 @@ void PEGTransformerFactory::InitializeCrossJoinPrefixTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCrossJoinPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCrossJoinPrefix(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNaturalJoinPrefixTrampoline(PEGTransformer &transformer, @@ -23110,7 +23110,7 @@ void PEGTransformerFactory::InitializeNaturalJoinPrefixTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNaturalJoinPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional join_type {}; @@ -23118,7 +23118,7 @@ PEGTransformerFactory::FinalizeNaturalJoinPrefixTrampoline(PEGTransformer &trans join_type = process.TakeResult(0); } auto result = TransformNaturalJoinPrefix(transformer, join_type); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializePositionalJoinPrefixTrampoline(PEGTransformer &transformer, @@ -23126,11 +23126,11 @@ void PEGTransformerFactory::InitializePositionalJoinPrefixTrampoline(PEGTransfor process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePositionalJoinPrefixTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformPositionalJoinPrefix(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFullJoinTrampoline(PEGTransformer &transformer, @@ -23138,14 +23138,14 @@ void PEGTransformerFactory::InitializeFullJoinTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeFullJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeFullJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformFullJoin(transformer, has_result); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeLeftJoinTrampoline(PEGTransformer &transformer, @@ -23153,14 +23153,14 @@ void PEGTransformerFactory::InitializeLeftJoinTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeLeftJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeLeftJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformLeftJoin(transformer, has_result); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRightJoinTrampoline(PEGTransformer &transformer, @@ -23168,14 +23168,14 @@ void PEGTransformerFactory::InitializeRightJoinTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeRightJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeRightJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformRightJoin(transformer, has_result); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSemiJoinTrampoline(PEGTransformer &transformer, @@ -23183,10 +23183,10 @@ void PEGTransformerFactory::InitializeSemiJoinTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeSemiJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeSemiJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformSemiJoin(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAntiJoinTrampoline(PEGTransformer &transformer, @@ -23194,10 +23194,10 @@ void PEGTransformerFactory::InitializeAntiJoinTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeAntiJoinTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeAntiJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformAntiJoin(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeInnerJoinTrampoline(PEGTransformer &transformer, @@ -23205,10 +23205,10 @@ void PEGTransformerFactory::InitializeInnerJoinTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeInnerJoinTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeInnerJoinTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformInnerJoin(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeFromClauseTrampoline(PEGTransformer &transformer, @@ -23223,7 +23223,7 @@ void PEGTransformerFactory::InitializeFromClauseTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFromClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(1)); @@ -23233,7 +23233,7 @@ PEGTransformerFactory::FinalizeFromClauseTrampoline(PEGTransformer &transformer, table_ref.push_back(process.TakeResult>(i)); } auto result = TransformFromClause(transformer, std::move(table_ref)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWhereClauseTrampoline(PEGTransformer &transformer, @@ -23243,11 +23243,11 @@ void PEGTransformerFactory::InitializeWhereClauseTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWhereClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformWhereClause(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeGroupByClauseTrampoline(PEGTransformer &transformer, @@ -23257,12 +23257,12 @@ void PEGTransformerFactory::InitializeGroupByClauseTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("GroupByExpressions"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupByClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto group_by_expressions = process.TakeResult(0); auto result = TransformGroupByClause(transformer, std::move(group_by_expressions)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeHavingClauseTrampoline(PEGTransformer &transformer, @@ -23272,11 +23272,11 @@ void PEGTransformerFactory::InitializeHavingClauseTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeHavingClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformHavingClause(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeQualifyClauseTrampoline(PEGTransformer &transformer, @@ -23286,12 +23286,12 @@ void PEGTransformerFactory::InitializeQualifyClauseTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeQualifyClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformQualifyClause(transformer, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSampleClauseTrampoline(PEGTransformer &transformer, @@ -23301,11 +23301,11 @@ void PEGTransformerFactory::InitializeSampleClauseTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("SampleEntry"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto sample_entry = process.TakeResult>(0); auto result = TransformSampleClause(transformer, std::move(sample_entry)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeWindowClauseTrampoline(PEGTransformer &transformer, @@ -23320,7 +23320,7 @@ void PEGTransformerFactory::InitializeWindowClauseTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(1)); @@ -23330,7 +23330,7 @@ PEGTransformerFactory::FinalizeWindowClauseTrampoline(PEGTransformer &transforme window_definition.push_back(process.TakeResult>(i)); } auto result = TransformWindowClause(transformer, std::move(window_definition)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSampleEntryTrampoline(PEGTransformer &transformer, @@ -23342,15 +23342,15 @@ void PEGTransformerFactory::InitializeSampleEntryTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleEntryTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSampleEntryCountTrampoline(PEGTransformer &transformer, @@ -23365,7 +23365,7 @@ void PEGTransformerFactory::InitializeSampleEntryCountTrampoline(PEGTransformer process.PushChild({transformer.GetRule("SampleCount"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleEntryCountTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto sample_count = process.TakeResult>(0); @@ -23374,7 +23374,7 @@ PEGTransformerFactory::FinalizeSampleEntryCountTrampoline(PEGTransformer &transf sample_properties = process.TakeResult>(1); } auto result = TransformSampleEntryCount(transformer, std::move(sample_count), sample_properties); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSampleEntryFunctionTrampoline(PEGTransformer &transformer, @@ -23392,7 +23392,7 @@ void PEGTransformerFactory::InitializeSampleEntryFunctionTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleEntryFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional sample_function {}; @@ -23406,7 +23406,7 @@ PEGTransformerFactory::FinalizeSampleEntryFunctionTrampoline(PEGTransformer &tra } auto result = TransformSampleEntryFunction(transformer, sample_function, std::move(sample_count), repeatable_sample); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSampleFunctionTrampoline(PEGTransformer &transformer, @@ -23416,12 +23416,12 @@ void PEGTransformerFactory::InitializeSampleFunctionTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleFunctionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto result = TransformSampleFunction(transformer, col_id); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSamplePropertiesTrampoline(PEGTransformer &transformer, @@ -23436,7 +23436,7 @@ void PEGTransformerFactory::InitializeSamplePropertiesTrampoline(PEGTransformer process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSamplePropertiesTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); @@ -23445,7 +23445,7 @@ PEGTransformerFactory::FinalizeSamplePropertiesTrampoline(PEGTransformer &transf sample_seed = process.TakeResult(1); } auto result = TransformSampleProperties(transformer, col_id, sample_seed); - return make_uniq>>(result); + return transformer.MakeResult>(result); } void PEGTransformerFactory::InitializeRepeatableSampleTrampoline(PEGTransformer &transformer, @@ -23455,12 +23455,12 @@ void PEGTransformerFactory::InitializeRepeatableSampleTrampoline(PEGTransformer process.PushChild({transformer.GetRule("SampleSeed"), ExtractResultFromParens(list_pr.GetChild(1))}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRepeatableSampleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto sample_seed = process.TakeResult(0); auto result = TransformRepeatableSample(transformer, sample_seed); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSampleSeedTrampoline(PEGTransformer &transformer, @@ -23468,12 +23468,12 @@ void PEGTransformerFactory::InitializeSampleSeedTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleSeedTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto number_literal = TransformNumberLiteral(transformer, list_pr.GetChild(0)); auto result = TransformSampleSeed(transformer, std::move(number_literal)); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSampleCountTrampoline(PEGTransformer &transformer, @@ -23487,7 +23487,7 @@ void PEGTransformerFactory::InitializeSampleCountTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("SampleValue"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleCountTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto sample_value = process.TakeResult>(0); optional sample_unit {}; @@ -23495,7 +23495,7 @@ PEGTransformerFactory::FinalizeSampleCountTrampoline(PEGTransformer &transformer sample_unit = process.TakeResult(1); } auto result = TransformSampleCount(transformer, std::move(sample_value), sample_unit); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSampleValueTrampoline(PEGTransformer &transformer, @@ -23507,15 +23507,15 @@ void PEGTransformerFactory::InitializeSampleValueTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSampleUnitTrampoline(PEGTransformer &transformer, @@ -23527,15 +23527,15 @@ void PEGTransformerFactory::InitializeSampleUnitTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleUnitTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSamplePercentageTrampoline(PEGTransformer &transformer, @@ -23543,11 +23543,11 @@ void PEGTransformerFactory::InitializeSamplePercentageTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSamplePercentageTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSamplePercentage(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSampleRowsTrampoline(PEGTransformer &transformer, @@ -23555,10 +23555,10 @@ void PEGTransformerFactory::InitializeSampleRowsTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSampleRowsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSampleRows(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGroupByExpressionsTrampoline(PEGTransformer &transformer, @@ -23570,16 +23570,16 @@ void PEGTransformerFactory::InitializeGroupByExpressionsTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupByExpressionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeGroupByAllTrampoline(PEGTransformer &transformer, @@ -23587,10 +23587,10 @@ void PEGTransformerFactory::InitializeGroupByAllTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupByAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformGroupByAll(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeGroupByListTrampoline(PEGTransformer &transformer, @@ -23605,7 +23605,7 @@ void PEGTransformerFactory::InitializeGroupByListTrampoline(PEGTransformer &tran } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupByListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(0)); @@ -23615,7 +23615,7 @@ PEGTransformerFactory::FinalizeGroupByListTrampoline(PEGTransformer &transformer group_by_expression.push_back(process.TakeResult(i)); } auto result = TransformGroupByList(transformer, std::move(group_by_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeGroupByExpressionTrampoline(PEGTransformer &transformer, @@ -23627,16 +23627,16 @@ void PEGTransformerFactory::InitializeGroupByExpressionTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupByExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeGroupByBaseExpressionTrampoline(PEGTransformer &transformer, @@ -23646,12 +23646,12 @@ void PEGTransformerFactory::InitializeGroupByBaseExpressionTrampoline(PEGTransfo process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupByBaseExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformGroupByBaseExpression(transformer, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeEmptyGroupingItemTrampoline(PEGTransformer &transformer, @@ -23659,11 +23659,11 @@ void PEGTransformerFactory::InitializeEmptyGroupingItemTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeEmptyGroupingItemTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformEmptyGroupingItem(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCubeOrRollupClauseTrampoline(PEGTransformer &transformer, @@ -23685,7 +23685,7 @@ void PEGTransformerFactory::InitializeCubeOrRollupClauseTrampoline(PEGTransforme process.PushChild({transformer.GetRule("CubeOrRollup"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCubeOrRollupClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -23706,7 +23706,7 @@ PEGTransformerFactory::FinalizeCubeOrRollupClauseTrampoline(PEGTransformer &tran expression = std::move(expression_value); } auto result = TransformCubeOrRollupClause(transformer, cube_or_rollup, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeCubeOrRollupTrampoline(PEGTransformer &transformer, @@ -23722,12 +23722,12 @@ void PEGTransformerFactory::InitializeCubeOrRollupTrampoline(PEGTransformer &tra return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCubeOrRollupTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result; if (process.child_results[0]) { @@ -23747,7 +23747,7 @@ PEGTransformerFactory::FinalizeCubeOrRollupTrampoline(PEGTransformer &transforme result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCubeKeywordTrampoline(PEGTransformer &transformer, @@ -23755,10 +23755,10 @@ void PEGTransformerFactory::InitializeCubeKeywordTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCubeKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformCubeKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeRollupKeywordTrampoline(PEGTransformer &transformer, @@ -23766,11 +23766,11 @@ void PEGTransformerFactory::InitializeRollupKeywordTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRollupKeywordTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformRollupKeyword(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGroupingSetsClauseTrampoline(PEGTransformer &transformer, @@ -23785,7 +23785,7 @@ void PEGTransformerFactory::InitializeGroupingSetsClauseTrampoline(PEGTransforme } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGroupingSetsClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -23796,7 +23796,7 @@ PEGTransformerFactory::FinalizeGroupingSetsClauseTrampoline(PEGTransformer &tran group_by_expression.push_back(process.TakeResult(i)); } auto result = TransformGroupingSetsClause(transformer, std::move(group_by_expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeSubqueryReferenceTrampoline(PEGTransformer &transformer, @@ -23807,12 +23807,12 @@ void PEGTransformerFactory::InitializeSubqueryReferenceTrampoline(PEGTransformer 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSubqueryReferenceTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto select_statement_internal = process.TakeResult>(0); auto result = TransformSubqueryReference(transformer, std::move(select_statement_internal)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOrderByExpressionTrampoline(PEGTransformer &transformer, @@ -23830,7 +23830,7 @@ void PEGTransformerFactory::InitializeOrderByExpressionTrampoline(PEGTransformer process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOrderByExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); @@ -23843,7 +23843,7 @@ PEGTransformerFactory::FinalizeOrderByExpressionTrampoline(PEGTransformer &trans nulls_first_or_last = process.TakeResult(2); } auto result = TransformOrderByExpression(transformer, std::move(expression), desc_or_asc, nulls_first_or_last); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeDescOrAscTrampoline(PEGTransformer &transformer, @@ -23855,15 +23855,15 @@ void PEGTransformerFactory::InitializeDescOrAscTrampoline(PEGTransformer &transf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeDescOrAscTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeDescOrAscTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDescendingOrderTrampoline(PEGTransformer &transformer, @@ -23871,11 +23871,11 @@ void PEGTransformerFactory::InitializeDescendingOrderTrampoline(PEGTransformer & process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDescendingOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformDescendingOrder(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeAscendingOrderTrampoline(PEGTransformer &transformer, @@ -23883,11 +23883,11 @@ void PEGTransformerFactory::InitializeAscendingOrderTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAscendingOrderTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformAscendingOrder(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNullsFirstOrLastTrampoline(PEGTransformer &transformer, @@ -23899,16 +23899,16 @@ void PEGTransformerFactory::InitializeNullsFirstOrLastTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNullsFirstOrLastTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNullsFirstTrampoline(PEGTransformer &transformer, @@ -23916,10 +23916,10 @@ void PEGTransformerFactory::InitializeNullsFirstTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeNullsFirstTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformNullsFirst(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNullsLastTrampoline(PEGTransformer &transformer, @@ -23927,10 +23927,10 @@ void PEGTransformerFactory::InitializeNullsLastTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeNullsLastTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeNullsLastTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformNullsLast(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOrderByClauseTrampoline(PEGTransformer &transformer, @@ -23940,12 +23940,12 @@ void PEGTransformerFactory::InitializeOrderByClauseTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("OrderByExpressions"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOrderByClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto order_by_expressions = process.TakeResult>(0); auto result = TransformOrderByClause(transformer, std::move(order_by_expressions)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOrderByExpressionsTrampoline(PEGTransformer &transformer, @@ -23957,16 +23957,16 @@ void PEGTransformerFactory::InitializeOrderByExpressionsTrampoline(PEGTransforme auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOrderByExpressionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOrderByExpressionListTrampoline(PEGTransformer &transformer, @@ -23981,7 +23981,7 @@ void PEGTransformerFactory::InitializeOrderByExpressionListTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOrderByExpressionListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -23992,7 +23992,7 @@ PEGTransformerFactory::FinalizeOrderByExpressionListTrampoline(PEGTransformer &t order_by_expression.push_back(process.TakeResult(i)); } auto result = TransformOrderByExpressionList(transformer, std::move(order_by_expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeOrderByAllTrampoline(PEGTransformer &transformer, @@ -24009,7 +24009,7 @@ void PEGTransformerFactory::InitializeOrderByAllTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOrderByAllTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional desc_or_asc {}; if (process.child_results[0]) { @@ -24020,7 +24020,7 @@ PEGTransformerFactory::FinalizeOrderByAllTrampoline(PEGTransformer &transformer, nulls_first_or_last = process.TakeResult(1); } auto result = TransformOrderByAll(transformer, desc_or_asc, nulls_first_or_last); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeLimitClauseTrampoline(PEGTransformer &transformer, @@ -24030,11 +24030,11 @@ void PEGTransformerFactory::InitializeLimitClauseTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("LimitValue"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLimitClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto limit_value = process.TakeResult(0); auto result = TransformLimitClause(transformer, std::move(limit_value)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOffsetClauseTrampoline(PEGTransformer &transformer, @@ -24044,11 +24044,11 @@ void PEGTransformerFactory::InitializeOffsetClauseTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("OffsetValue"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOffsetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto offset_value = process.TakeResult(0); auto result = TransformOffsetClause(transformer, std::move(offset_value)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeOffsetValueTrampoline(PEGTransformer &transformer, @@ -24058,7 +24058,7 @@ void PEGTransformerFactory::InitializeOffsetValueTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOffsetValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto expression = process.TakeResult>(0); @@ -24066,7 +24066,7 @@ PEGTransformerFactory::FinalizeOffsetValueTrampoline(PEGTransformer &transformer auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformOffsetValue(transformer, std::move(expression), has_result); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeLimitValueTrampoline(PEGTransformer &transformer, @@ -24078,15 +24078,15 @@ void PEGTransformerFactory::InitializeLimitValueTrampoline(PEGTransformer &trans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLimitValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeLimitAllTrampoline(PEGTransformer &transformer, @@ -24094,10 +24094,10 @@ void PEGTransformerFactory::InitializeLimitAllTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeLimitAllTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeLimitAllTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformLimitAll(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeLimitLiteralPercentTrampoline(PEGTransformer &transformer, @@ -24105,13 +24105,13 @@ void PEGTransformerFactory::InitializeLimitLiteralPercentTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLimitLiteralPercentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto number_literal = TransformNumberLiteral(transformer, list_pr.GetChild(0)); auto result = TransformLimitLiteralPercent(transformer, std::move(number_literal)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeLimitExpressionTrampoline(PEGTransformer &transformer, @@ -24121,7 +24121,7 @@ void PEGTransformerFactory::InitializeLimitExpressionTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLimitExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -24130,7 +24130,7 @@ PEGTransformerFactory::FinalizeLimitExpressionTrampoline(PEGTransformer &transfo auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformLimitExpression(transformer, std::move(expression), has_result); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFetchClauseTrampoline(PEGTransformer &transformer, @@ -24142,15 +24142,15 @@ void PEGTransformerFactory::InitializeFetchClauseTrampoline(PEGTransformer &tran auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFetchClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFetchClauseWithoutValueTrampoline(PEGTransformer &transformer, @@ -24158,11 +24158,11 @@ void PEGTransformerFactory::InitializeFetchClauseWithoutValueTrampoline(PEGTrans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFetchClauseWithoutValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformFetchClauseWithoutValue(transformer); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFetchClauseWithValueTrampoline(PEGTransformer &transformer, @@ -24172,11 +24172,11 @@ void PEGTransformerFactory::InitializeFetchClauseWithValueTrampoline(PEGTransfor process.PushChild({transformer.GetRule("FetchValue"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFetchClauseWithValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeFetchValueTrampoline(PEGTransformer &transformer, @@ -24186,11 +24186,11 @@ void PEGTransformerFactory::InitializeFetchValueTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeFetchValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto result = TransformFetchValue(transformer, std::move(expression)); - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } void PEGTransformerFactory::InitializeAliasedExpressionTrampoline(PEGTransformer &transformer, @@ -24202,16 +24202,16 @@ void PEGTransformerFactory::InitializeAliasedExpressionTrampoline(PEGTransformer auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeAliasedExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeColIdExpressionTrampoline(PEGTransformer &transformer, @@ -24222,13 +24222,13 @@ void PEGTransformerFactory::InitializeColIdExpressionTrampoline(PEGTransformer & process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeColIdExpressionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto col_id = process.TakeResult(0); auto expression = process.TakeResult>(1); auto result = TransformColIdExpression(transformer, col_id, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExpressionAsCollabelTrampoline(PEGTransformer &transformer, @@ -24239,13 +24239,13 @@ void PEGTransformerFactory::InitializeExpressionAsCollabelTrampoline(PEGTransfor process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExpressionAsCollabelTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto expression = process.TakeResult>(0); auto col_label_or_string = process.TakeResult(1); auto result = TransformExpressionAsCollabel(transformer, std::move(expression), col_label_or_string); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeExpressionOptIdentifierTrampoline(PEGTransformer &transformer, @@ -24255,7 +24255,7 @@ void PEGTransformerFactory::InitializeExpressionOptIdentifierTrampoline(PEGTrans process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeExpressionOptIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -24266,7 +24266,7 @@ PEGTransformerFactory::FinalizeExpressionOptIdentifierTrampoline(PEGTransformer identifier = identifier_opt.GetResult().Cast().identifier; } auto result = TransformExpressionOptIdentifier(transformer, std::move(expression), identifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeValuesClauseTrampoline(PEGTransformer &transformer, @@ -24281,7 +24281,7 @@ void PEGTransformerFactory::InitializeValuesClauseTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeValuesClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(1)); @@ -24291,7 +24291,7 @@ PEGTransformerFactory::FinalizeValuesClauseTrampoline(PEGTransformer &transforme values_expressions.push_back(process.TakeResult>>(i)); } auto result = TransformValuesClause(transformer, std::move(values_expressions)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeValuesExpressionsTrampoline(PEGTransformer &transformer, @@ -24306,7 +24306,7 @@ void PEGTransformerFactory::InitializeValuesExpressionsTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeValuesExpressionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -24317,7 +24317,7 @@ PEGTransformerFactory::FinalizeValuesExpressionsTrampoline(PEGTransformer &trans expression.push_back(process.TakeResult>(i)); } auto result = TransformValuesExpressions(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeSetStatementTrampoline(PEGTransformer &transformer, @@ -24327,11 +24327,11 @@ void PEGTransformerFactory::InitializeSetStatementTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("SetAssignmentOrTimeZone"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto set_assignment_or_time_zone = process.TakeResult>(0); auto result = TransformSetStatement(transformer, std::move(set_assignment_or_time_zone)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetAssignmentOrTimeZoneTrampoline(PEGTransformer &transformer, @@ -24343,16 +24343,16 @@ void PEGTransformerFactory::InitializeSetAssignmentOrTimeZoneTrampoline(PEGTrans auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetAssignmentOrTimeZoneTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeResetStatementTrampoline(PEGTransformer &transformer, @@ -24362,12 +24362,12 @@ void PEGTransformerFactory::InitializeResetStatementTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("SetVariableOrSetting"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeResetStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto set_variable_or_setting = process.TakeResult(0); auto result = TransformResetStatement(transformer, set_variable_or_setting); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetSchemaTrampoline(PEGTransformer &transformer, @@ -24375,12 +24375,12 @@ void PEGTransformerFactory::InitializeSetSchemaTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeSetSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeSetSchemaTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(1)); auto result = TransformSetSchema(transformer, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeStandardAssignmentTrampoline(PEGTransformer &transformer, @@ -24391,13 +24391,13 @@ void PEGTransformerFactory::InitializeStandardAssignmentTrampoline(PEGTransforme process.PushChild({transformer.GetRule("SetVariableOrSetting"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeStandardAssignmentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto set_variable_or_setting = process.TakeResult(0); auto set_assignment = process.TakeResult>>(1); auto result = TransformStandardAssignment(transformer, set_variable_or_setting, std::move(set_assignment)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetVariableOrSettingTrampoline(PEGTransformer &transformer, @@ -24409,16 +24409,16 @@ void PEGTransformerFactory::InitializeSetVariableOrSettingTrampoline(PEGTransfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetVariableOrSettingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSetTimeZoneTrampoline(PEGTransformer &transformer, @@ -24428,11 +24428,11 @@ void PEGTransformerFactory::InitializeSetTimeZoneTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ZoneValue"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetTimeZoneTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto zone_value = process.TakeResult>(0); auto result = TransformSetTimeZone(transformer, std::move(zone_value)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeZoneValueTrampoline(PEGTransformer &transformer, @@ -24444,15 +24444,15 @@ void PEGTransformerFactory::InitializeZoneValueTrampoline(PEGTransformer &transf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeZoneValueTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeZoneValueTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeZoneLocalTrampoline(PEGTransformer &transformer, @@ -24460,10 +24460,10 @@ void PEGTransformerFactory::InitializeZoneLocalTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeZoneLocalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeZoneLocalTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformZoneLocal(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeZoneDefaultTrampoline(PEGTransformer &transformer, @@ -24471,10 +24471,10 @@ void PEGTransformerFactory::InitializeZoneDefaultTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeZoneDefaultTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformZoneDefault(transformer); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeZoneStringLiteralTrampoline(PEGTransformer &transformer, @@ -24482,13 +24482,13 @@ void PEGTransformerFactory::InitializeZoneStringLiteralTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeZoneStringLiteralTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(0)); auto result = TransformZoneStringLiteral(transformer, string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeZoneIdentifierTrampoline(PEGTransformer &transformer, @@ -24496,13 +24496,13 @@ void PEGTransformerFactory::InitializeZoneIdentifierTrampoline(PEGTransformer &t process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeZoneIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(0).Cast().identifier; auto result = TransformZoneIdentifier(transformer, identifier); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeZoneIntervalWithIntervalTrampoline(PEGTransformer &transformer, @@ -24515,7 +24515,7 @@ void PEGTransformerFactory::InitializeZoneIntervalWithIntervalTrampoline(PEGTran } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeZoneIntervalWithIntervalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -24525,7 +24525,7 @@ PEGTransformerFactory::FinalizeZoneIntervalWithIntervalTrampoline(PEGTransformer interval = process.TakeResult(0); } auto result = TransformZoneIntervalWithInterval(transformer, string_literal, interval); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeZoneIntervalWithPrecisionTrampoline(PEGTransformer &transformer, @@ -24533,14 +24533,14 @@ void PEGTransformerFactory::InitializeZoneIntervalWithPrecisionTrampoline(PEGTra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeZoneIntervalWithPrecisionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto number_literal = TransformNumberLiteral(transformer, ExtractResultFromParens(list_pr.GetChild(1))); auto string_literal = TransformStringLiteral(transformer, list_pr.GetChild(2)); auto result = TransformZoneIntervalWithPrecision(transformer, std::move(number_literal), string_literal); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeSetSettingTrampoline(PEGTransformer &transformer, @@ -24553,7 +24553,7 @@ void PEGTransformerFactory::InitializeSetSettingTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetSettingTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); optional setting_scope {}; @@ -24562,7 +24562,7 @@ PEGTransformerFactory::FinalizeSetSettingTrampoline(PEGTransformer &transformer, } auto setting_name = list_pr.GetChild(1).Cast().identifier; auto result = TransformSetSetting(transformer, setting_scope, setting_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSetVariableTrampoline(PEGTransformer &transformer, @@ -24572,13 +24572,13 @@ void PEGTransformerFactory::InitializeSetVariableTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("VariableScope"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetVariableTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto variable_scope = process.TakeResult(0); auto identifier = list_pr.GetChild(1).Cast().identifier; auto result = TransformSetVariable(transformer, variable_scope, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeVariableScopeTrampoline(PEGTransformer &transformer, @@ -24586,11 +24586,11 @@ void PEGTransformerFactory::InitializeVariableScopeTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVariableScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformVariableScope(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSettingScopeTrampoline(PEGTransformer &transformer, @@ -24602,15 +24602,15 @@ void PEGTransformerFactory::InitializeSettingScopeTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSettingScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeLocalScopeTrampoline(PEGTransformer &transformer, @@ -24618,10 +24618,10 @@ void PEGTransformerFactory::InitializeLocalScopeTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeLocalScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformLocalScope(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSessionScopeTrampoline(PEGTransformer &transformer, @@ -24629,10 +24629,10 @@ void PEGTransformerFactory::InitializeSessionScopeTrampoline(PEGTransformer &tra process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSessionScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformSessionScope(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeGlobalScopeTrampoline(PEGTransformer &transformer, @@ -24640,10 +24640,10 @@ void PEGTransformerFactory::InitializeGlobalScopeTrampoline(PEGTransformer &tran process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeGlobalScopeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformGlobalScope(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSetAssignmentTrampoline(PEGTransformer &transformer, @@ -24653,12 +24653,12 @@ void PEGTransformerFactory::InitializeSetAssignmentTrampoline(PEGTransformer &tr process.PushChild({transformer.GetRule("VariableList"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSetAssignmentTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto variable_list = process.TakeResult>>(0); auto result = TransformSetAssignment(transformer, std::move(variable_list)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeVariableListTrampoline(PEGTransformer &transformer, @@ -24673,7 +24673,7 @@ void PEGTransformerFactory::InitializeVariableListTrampoline(PEGTransformer &tra } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVariableListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(list_pr.GetChild(0)); @@ -24683,7 +24683,7 @@ PEGTransformerFactory::FinalizeVariableListTrampoline(PEGTransformer &transforme expression.push_back(process.TakeResult>(i)); } auto result = TransformVariableList(transformer, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeTransactionStatementTrampoline(PEGTransformer &transformer, @@ -24695,16 +24695,16 @@ void PEGTransformerFactory::InitializeTransactionStatementTrampoline(PEGTransfor auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeTransactionStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBeginTransactionTrampoline(PEGTransformer &transformer, @@ -24717,7 +24717,7 @@ void PEGTransformerFactory::InitializeBeginTransactionTrampoline(PEGTransformer } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBeginTransactionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -24729,7 +24729,7 @@ PEGTransformerFactory::FinalizeBeginTransactionTrampoline(PEGTransformer &transf read_or_write = process.TakeResult(0); } auto result = TransformBeginTransaction(transformer, has_result, read_or_write); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeRollbackTransactionTrampoline(PEGTransformer &transformer, @@ -24737,7 +24737,7 @@ void PEGTransformerFactory::InitializeRollbackTransactionTrampoline(PEGTransform process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeRollbackTransactionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -24745,7 +24745,7 @@ PEGTransformerFactory::FinalizeRollbackTransactionTrampoline(PEGTransformer &tra auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformRollbackTransaction(transformer, has_result); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeCommitTransactionTrampoline(PEGTransformer &transformer, @@ -24753,7 +24753,7 @@ void PEGTransformerFactory::InitializeCommitTransactionTrampoline(PEGTransformer process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCommitTransactionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -24761,7 +24761,7 @@ PEGTransformerFactory::FinalizeCommitTransactionTrampoline(PEGTransformer &trans auto &has_result_opt = list_pr.GetChild(1).Cast(); has_result = has_result_opt.HasResult(); auto result = TransformCommitTransaction(transformer, has_result); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeReadOrWriteTrampoline(PEGTransformer &transformer, @@ -24771,11 +24771,11 @@ void PEGTransformerFactory::InitializeReadOrWriteTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ReadOnlyOrReadWrite"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReadOrWriteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto read_only_or_read_write = process.TakeResult(0); auto result = TransformReadOrWrite(transformer, read_only_or_read_write); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReadOnlyOrReadWriteTrampoline(PEGTransformer &transformer, @@ -24787,16 +24787,16 @@ void PEGTransformerFactory::InitializeReadOnlyOrReadWriteTrampoline(PEGTransform auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeReadOnlyOrReadWriteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReadOnlyTrampoline(PEGTransformer &transformer, @@ -24804,10 +24804,10 @@ void PEGTransformerFactory::InitializeReadOnlyTrampoline(PEGTransformer &transfo process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeReadOnlyTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeReadOnlyTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformReadOnly(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeReadWriteTrampoline(PEGTransformer &transformer, @@ -24815,10 +24815,10 @@ void PEGTransformerFactory::InitializeReadWriteTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeReadWriteTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeReadWriteTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformReadWrite(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUpdateStatementTrampoline(PEGTransformer &transformer, @@ -24845,7 +24845,7 @@ void PEGTransformerFactory::InitializeUpdateStatementTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional with_clause {}; @@ -24869,7 +24869,7 @@ PEGTransformerFactory::FinalizeUpdateStatementTrampoline(PEGTransformer &transfo auto result = TransformUpdateStatement(transformer, std::move(with_clause), std::move(update_target), std::move(update_set_clause), std::move(from_clause), std::move(where_clause), std::move(returning_clause)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateTargetTrampoline(PEGTransformer &transformer, @@ -24881,15 +24881,15 @@ void PEGTransformerFactory::InitializeUpdateTargetTrampoline(PEGTransformer &tra auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBaseTableSetTrampoline(PEGTransformer &transformer, @@ -24899,11 +24899,11 @@ void PEGTransformerFactory::InitializeBaseTableSetTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBaseTableSetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); auto result = TransformBaseTableSet(transformer, std::move(base_table_name)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeBaseTableAliasSetTrampoline(PEGTransformer &transformer, @@ -24917,7 +24917,7 @@ void PEGTransformerFactory::InitializeBaseTableAliasSetTrampoline(PEGTransformer process.PushChild({transformer.GetRule("BaseTableName"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeBaseTableAliasSetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto base_table_name = process.TakeResult>(0); @@ -24926,7 +24926,7 @@ PEGTransformerFactory::FinalizeBaseTableAliasSetTrampoline(PEGTransformer &trans update_alias = process.TakeResult(1); } auto result = TransformBaseTableAliasSet(transformer, std::move(base_table_name), update_alias); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateAliasTrampoline(PEGTransformer &transformer, @@ -24936,7 +24936,7 @@ void PEGTransformerFactory::InitializeUpdateAliasTrampoline(PEGTransformer &tran process.PushChild({transformer.GetRule("ColId"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateAliasTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool has_result {}; @@ -24944,7 +24944,7 @@ PEGTransformerFactory::FinalizeUpdateAliasTrampoline(PEGTransformer &transformer has_result = has_result_opt.HasResult(); auto col_id = process.TakeResult(0); auto result = TransformUpdateAlias(transformer, has_result, col_id); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUpdateSetClauseTrampoline(PEGTransformer &transformer, @@ -24956,16 +24956,16 @@ void PEGTransformerFactory::InitializeUpdateSetClauseTrampoline(PEGTransformer & auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateSetClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult>(0); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateSetTupleTrampoline(PEGTransformer &transformer, @@ -24975,7 +24975,7 @@ void PEGTransformerFactory::InitializeUpdateSetTupleTrampoline(PEGTransformer &t process.PushChild({transformer.GetRule("Expression"), list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateSetTupleTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -24986,7 +24986,7 @@ PEGTransformerFactory::FinalizeUpdateSetTupleTrampoline(PEGTransformer &transfor } auto expression = process.TakeResult>(0); auto result = TransformUpdateSetTuple(transformer, column_name, std::move(expression)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateSetElementListTrampoline(PEGTransformer &transformer, @@ -25001,7 +25001,7 @@ void PEGTransformerFactory::InitializeUpdateSetElementListTrampoline(PEGTransfor } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateSetElementListTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -25012,7 +25012,7 @@ PEGTransformerFactory::FinalizeUpdateSetElementListTrampoline(PEGTransformer &tr update_set_element.push_back(process.TakeResult>>(i)); } auto result = TransformUpdateSetElementList(transformer, std::move(update_set_element)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateSetElementTrampoline(PEGTransformer &transformer, @@ -25023,13 +25023,13 @@ void PEGTransformerFactory::InitializeUpdateSetElementTrampoline(PEGTransformer process.PushChild({transformer.GetRule("UpdateSetColumnTarget"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateSetElementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto update_set_column_target = process.TakeResult(0); auto expression = process.TakeResult>(1); auto result = TransformUpdateSetElement(transformer, update_set_column_target, std::move(expression)); - return make_uniq>>>(std::move(result)); + return transformer.MakeResult>>(std::move(result)); } void PEGTransformerFactory::InitializeUpdateSetColumnTargetTrampoline(PEGTransformer &transformer, @@ -25051,7 +25051,7 @@ void PEGTransformerFactory::InitializeUpdateSetColumnTargetTrampoline(PEGTransfo } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUpdateSetColumnTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -25072,7 +25072,7 @@ PEGTransformerFactory::FinalizeUpdateSetColumnTargetTrampoline(PEGTransformer &t dot_identifier = std::move(dot_identifier_value); } auto result = TransformUpdateSetColumnTarget(transformer, column_name, dot_identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUseStatementTrampoline(PEGTransformer &transformer, @@ -25082,11 +25082,11 @@ void PEGTransformerFactory::InitializeUseStatementTrampoline(PEGTransformer &tra process.PushChild({transformer.GetRule("UseTarget"), list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUseStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto use_target = process.TakeResult(0); auto result = TransformUseStatement(transformer, use_target); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeUseTargetTrampoline(PEGTransformer &transformer, @@ -25098,15 +25098,15 @@ void PEGTransformerFactory::InitializeUseTargetTrampoline(PEGTransformer &transf auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr -PEGTransformerFactory::FinalizeUseTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeUseTargetTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeSchemaNameAsUseTargetTrampoline(PEGTransformer &transformer, @@ -25114,13 +25114,13 @@ void PEGTransformerFactory::InitializeSchemaNameAsUseTargetTrampoline(PEGTransfo process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSchemaNameAsUseTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto schema_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformSchemaNameAsUseTarget(transformer, schema_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeCatalogNameAsUseTargetTrampoline(PEGTransformer &transformer, @@ -25128,13 +25128,13 @@ void PEGTransformerFactory::InitializeCatalogNameAsUseTargetTrampoline(PEGTransf process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeCatalogNameAsUseTargetTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto catalog_name = list_pr.GetChild(0).Cast().identifier; auto result = TransformCatalogNameAsUseTarget(transformer, catalog_name); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeUseTargetCatalogSchemaTrampoline(PEGTransformer &transformer, @@ -25156,7 +25156,7 @@ void PEGTransformerFactory::InitializeUseTargetCatalogSchemaTrampoline(PEGTransf } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUseTargetCatalogSchemaTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -25178,7 +25178,7 @@ PEGTransformerFactory::FinalizeUseTargetCatalogSchemaTrampoline(PEGTransformer & dot_identifier = std::move(dot_identifier_value); } auto result = TransformUseTargetCatalogSchema(transformer, catalog_name, reserved_schema_name, dot_identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeDotIdentifierTrampoline(PEGTransformer &transformer, @@ -25186,13 +25186,13 @@ void PEGTransformerFactory::InitializeDotIdentifierTrampoline(PEGTransformer &tr process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeDotIdentifierTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto identifier = list_pr.GetChild(1).Cast().identifier; auto result = TransformDotIdentifier(transformer, identifier); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeVacuumStatementTrampoline(PEGTransformer &transformer, @@ -25209,7 +25209,7 @@ void PEGTransformerFactory::InitializeVacuumStatementTrampoline(PEGTransformer & } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVacuumStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional vacuum_options {}; @@ -25221,7 +25221,7 @@ PEGTransformerFactory::FinalizeVacuumStatementTrampoline(PEGTransformer &transfo analyze_target = process.TakeResult(1); } auto result = TransformVacuumStatement(transformer, vacuum_options, std::move(analyze_target)); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } void PEGTransformerFactory::InitializeVacuumOptionsTrampoline(PEGTransformer &transformer, @@ -25233,16 +25233,16 @@ void PEGTransformerFactory::InitializeVacuumOptionsTrampoline(PEGTransformer &tr auto child_rule = choice_result.GetRule(); auto has_transform_process = child_rule && child_rule->transform_process; if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVacuumOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = process.TakeResult(0); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeVacuumParensOptionsTrampoline(PEGTransformer &transformer, @@ -25257,7 +25257,7 @@ void PEGTransformerFactory::InitializeVacuumParensOptionsTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVacuumParensOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -25268,7 +25268,7 @@ PEGTransformerFactory::FinalizeVacuumParensOptionsTrampoline(PEGTransformer &tra vacuum_option.push_back(process.TakeResult(i)); } auto result = TransformVacuumParensOptions(transformer, vacuum_option); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeVacuumLegacyOptionsTrampoline(PEGTransformer &transformer, @@ -25293,7 +25293,7 @@ void PEGTransformerFactory::InitializeVacuumLegacyOptionsTrampoline(PEGTransform } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVacuumLegacyOptionsTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { optional opt_full {}; @@ -25313,7 +25313,7 @@ PEGTransformerFactory::FinalizeVacuumLegacyOptionsTrampoline(PEGTransformer &tra opt_analyze = process.TakeResult(3); } auto result = TransformVacuumLegacyOptions(transformer, opt_full, opt_freeze, opt_verbose, opt_analyze); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeVacuumOptionTrampoline(PEGTransformer &transformer, @@ -25329,12 +25329,12 @@ void PEGTransformerFactory::InitializeVacuumOptionTrampoline(PEGTransformer &tra return; } if (!has_transform_process) { - throw InternalException("No transform process registered for rule '%s'", choice_result.name); + throw InternalException("No transform process registered for rule '%s'", choice_result.Name()); } process.PushChild({*child_rule, choice_result}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeVacuumOptionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { string result; if (process.child_results[0]) { @@ -25354,7 +25354,7 @@ PEGTransformerFactory::FinalizeVacuumOptionTrampoline(PEGTransformer &transforme result = transformer.Transform(choice_result); } } - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOptAnalyzeTrampoline(PEGTransformer &transformer, @@ -25364,11 +25364,11 @@ void PEGTransformerFactory::InitializeOptAnalyzeTrampoline(PEGTransformer &trans process.PushChild({transformer.GetRule("AnalyzeKeyword"), list_pr.GetChild(0)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOptAnalyzeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto analyze_keyword = process.TakeResult(0); auto result = TransformOptAnalyze(transformer, analyze_keyword); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOptFullTrampoline(PEGTransformer &transformer, @@ -25376,10 +25376,10 @@ void PEGTransformerFactory::InitializeOptFullTrampoline(PEGTransformer &transfor process.ReserveChildSlots(0); } -unique_ptr PEGTransformerFactory::FinalizeOptFullTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeOptFullTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformOptFull(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOptFreezeTrampoline(PEGTransformer &transformer, @@ -25387,10 +25387,10 @@ void PEGTransformerFactory::InitializeOptFreezeTrampoline(PEGTransformer &transf process.ReserveChildSlots(0); } -unique_ptr -PEGTransformerFactory::FinalizeOptFreezeTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeOptFreezeTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto result = TransformOptFreeze(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeOptVerboseTrampoline(PEGTransformer &transformer, @@ -25398,10 +25398,10 @@ void PEGTransformerFactory::InitializeOptVerboseTrampoline(PEGTransformer &trans process.ReserveChildSlots(0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeOptVerboseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto result = TransformOptVerbose(transformer); - return make_uniq>(result); + return transformer.MakeResult(result); } void PEGTransformerFactory::InitializeNameListTrampoline(PEGTransformer &transformer, @@ -25416,8 +25416,8 @@ void PEGTransformerFactory::InitializeNameListTrampoline(PEGTransformer &transfo } } -unique_ptr PEGTransformerFactory::FinalizeNameListTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeNameListTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto dynamic_list_items = ExtractParseResultsFromList(ExtractResultFromParens(list_pr.GetChild(0))); auto dynamic_child_count = dynamic_list_items.size(); @@ -25426,7 +25426,7 @@ unique_ptr PEGTransformerFactory::FinalizeNameListTrampoli col_id_or_string.push_back(process.TakeResult(i)); } auto result = TransformNameList(transformer, col_id_or_string); - return make_uniq>>(result); + return transformer.MakeResult>(result); } } // namespace duckdb diff --git a/src/duckdb/src/parser/peg/transformer/transform_pivot.cpp b/src/duckdb/src/parser/peg/transformer/transform_pivot.cpp index 756208987..0424b6a21 100644 --- a/src/duckdb/src/parser/peg/transformer/transform_pivot.cpp +++ b/src/duckdb/src/parser/peg/transformer/transform_pivot.cpp @@ -81,13 +81,13 @@ void PEGTransformerFactory::InitializePivotStatementTrampoline(PEGTransformer &t process.PushChild({list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizePivotStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); if (!process.child_results[4]) { bool has_parameters = transformer.ParamCount() > process.manual_state; - process.SetChildResult(4, make_uniq>(has_parameters)); + process.SetChildResult(4, transformer.MakeResult(has_parameters)); auto &pivot_columns = list_pr.Child(2); auto &pivot_aggregates = list_pr.Child(3); auto &pivot_group = list_pr.Child(4); @@ -136,7 +136,7 @@ PEGTransformerFactory::FinalizePivotStatementTrampoline(PEGTransformer &transfor } auto result = make_uniq(); result->node = std::move(select_node); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } auto columns = process.TakeResult>(1); for (idx_t c = 0; c < columns.size(); c++) { @@ -175,7 +175,7 @@ PEGTransformerFactory::FinalizePivotStatementTrampoline(PEGTransformer &transfor select_node->from_table = std::move(pivot_ref); auto result = make_uniq(); result->node = std::move(select_node); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } vector> @@ -222,13 +222,13 @@ void PEGTransformerFactory::InitializeUnpivotStatementTrampoline(PEGTransformer process.PushChild({list_pr.GetChild(1)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeUnpivotStatementTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); if (!process.child_results[3]) { bool has_parameters = transformer.ParamCount() > process.manual_state; - process.SetChildResult(3, make_uniq>(has_parameters)); + process.SetChildResult(3, transformer.MakeResult(has_parameters)); auto &unpivot_names_opt = list_pr.Child(4); if (unpivot_names_opt.HasResult()) { process.PushChild({unpivot_names_opt.GetResult()}, 2); @@ -301,7 +301,7 @@ PEGTransformerFactory::FinalizeUnpivotStatementTrampoline(PEGTransformer &transf select_node->select_list.push_back(make_uniq()); auto result = make_uniq(); result->node = std::move(select_node); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } UnpivotNameValues PEGTransformerFactory::TransformIntoNameValues(PEGTransformer &transformer, diff --git a/src/duckdb/src/parser/peg/transformer/transform_select.cpp b/src/duckdb/src/parser/peg/transformer/transform_select.cpp index bbdfc2d8d..b06a869b8 100644 --- a/src/duckdb/src/parser/peg/transformer/transform_select.cpp +++ b/src/duckdb/src/parser/peg/transformer/transform_select.cpp @@ -74,7 +74,7 @@ void PEGTransformerFactory::InitializeSelectStatementInternalTrampoline(PEGTrans PushSelectStatementInternalRemainder(process); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSelectStatementInternalTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { if (process.manual_state == 0) { @@ -119,7 +119,7 @@ PEGTransformerFactory::FinalizeSelectStatementInternalTrampoline(PEGTransformer } } } - return make_uniq>>(std::move(select_statement)); + return transformer.MakeResult>(std::move(select_statement)); } unique_ptr PEGTransformerFactory::TransformSelectSetOpChain( @@ -227,12 +227,15 @@ bool PEGTransformerFactory::TransformWithOrdinality(PEGTransformer &transformer) static void RegisterWindowClause(PEGTransformer &transformer, const Identifier &window_name, WindowExpression &window_function) { - auto it = transformer.window_clauses.find(window_name); - if (it != transformer.window_clauses.end()) { + if (transformer.window_clauses.empty()) { + throw InternalException("WINDOW clause registered outside of a SELECT"); + } + auto ¤t_windows = transformer.window_clauses.back(); + auto it = current_windows.find(window_name); + if (it != current_windows.end()) { throw ParserException("window %s is already defined", window_name); } - transformer.window_clauses[window_name] = - unique_ptr_cast(window_function.Copy()); + current_windows[window_name] = unique_ptr_cast(window_function.Copy()); } static void PushSimpleSelectRemainder(GeneratedTransformProcess &process) { @@ -264,6 +267,7 @@ void PEGTransformerFactory::InitializeSimpleSelectTrampoline(PEGTransformer &tra GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); process.ReserveChildSlots(7); + transformer.window_clauses.emplace_back(); auto &window_clause_opt = list_pr.Child(4); if (window_clause_opt.HasResult()) { process.manual_state = 0; @@ -274,7 +278,7 @@ void PEGTransformerFactory::InitializeSimpleSelectTrampoline(PEGTransformer &tra PushSimpleSelectRemainder(process); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeSimpleSelectTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { if (process.manual_state == 0) { process.TakeResult>>(4); @@ -307,8 +311,9 @@ PEGTransformerFactory::FinalizeSimpleSelectTrampoline(PEGTransformer &transforme } auto select_statement = make_uniq(); select_statement->node = std::move(select_node); - transformer.window_clauses.clear(); - return make_uniq>>(std::move(select_statement)); + D_ASSERT(!transformer.window_clauses.empty()); + transformer.window_clauses.pop_back(); + return transformer.MakeResult>(std::move(select_statement)); } FunctionArgument PEGTransformerFactory::TransformNamedFunctionArgument(PEGTransformer &transformer, @@ -394,13 +399,13 @@ void PEGTransformerFactory::InitializeTableRefTrampoline(PEGTransformer &transfo process.PushChild({list_pr.GetChild(0)}, 0); } -unique_ptr PEGTransformerFactory::FinalizeTableRefTrampoline(PEGTransformer &transformer, - GeneratedTransformProcess &process) { +arena_ptr PEGTransformerFactory::FinalizeTableRefTrampoline(PEGTransformer &transformer, + GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); auto inner_table_ref = process.TakeResult>(0); auto &join_or_pivot_opt = list_pr.Child(1); if (!join_or_pivot_opt.HasResult()) { - return make_uniq>>(std::move(inner_table_ref)); + return transformer.MakeResult>(std::move(inner_table_ref)); } auto &repeat_join_or_pivot = join_or_pivot_opt.GetResult().Cast(); auto repeat_children = repeat_join_or_pivot.GetChildren(); @@ -419,7 +424,7 @@ unique_ptr PEGTransformerFactory::FinalizeTableRefTrampoli EnumUtil::ToString(transform_join_or_pivot->type)); } } - return make_uniq>>(std::move(inner_table_ref)); + return transformer.MakeResult>(std::move(inner_table_ref)); } unique_ptr PEGTransformerFactory::TransformTableUnpivotClauseBody(PEGTransformer &transformer, @@ -1038,7 +1043,7 @@ void PEGTransformerFactory::InitializeWithClauseTrampoline(PEGTransformer &trans } } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWithClauseTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); bool is_recursive = list_pr.Child(1).HasResult(); @@ -1061,7 +1066,7 @@ PEGTransformerFactory::FinalizeWithClauseTrampoline(PEGTransformer &transformer, } result.map.insert(with_entry.first, std::move(with_entry.second)); } - return make_uniq>(std::move(result)); + return transformer.MakeResult(std::move(result)); } pair> @@ -1138,7 +1143,7 @@ void PEGTransformerFactory::InitializeWindowDefinitionTrampoline(PEGTransformer process.PushChild({list_pr.GetChild(2)}, 0); } -unique_ptr +arena_ptr PEGTransformerFactory::FinalizeWindowDefinitionTrampoline(PEGTransformer &transformer, GeneratedTransformProcess &process) { auto &list_pr = process.parse_result.Cast(); @@ -1147,7 +1152,7 @@ PEGTransformerFactory::FinalizeWindowDefinitionTrampoline(PEGTransformer &transf auto window_name = list_pr.Child(0).identifier; RegisterWindowClause(transformer, window_name, *window_function); unique_ptr result = std::move(window_function); - return make_uniq>>(std::move(result)); + return transformer.MakeResult>(std::move(result)); } unique_ptr PEGTransformerFactory::TransformSampleEntryFunction( diff --git a/src/duckdb/src/planner/binder/statement/bind_alter.cpp b/src/duckdb/src/planner/binder/statement/bind_alter.cpp index b2076514c..8f41f0495 100644 --- a/src/duckdb/src/planner/binder/statement/bind_alter.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_alter.cpp @@ -174,10 +174,7 @@ BoundStatement Binder::Bind(AlterStatement &stmt) { if (catalog.IsSystemCatalog()) { throw BinderException("Can not comment on System Catalog entries"); } - if (!entry->temporary) { - // We can only alter temporary tables and views in read-only mode. - properties.RegisterDBModify(catalog, context, DatabaseModificationType::ALTER_TABLE); - } + properties.RegisterDBModify(catalog, context, DatabaseModificationType::ALTER_TABLE); stmt.info->SetQualifiedName(entry->ParentSchema().GetQualifiedName(stmt.info->GetQualifiedName().Name())); if (!stmt.info->IsAddUniqueConstraint()) { diff --git a/src/duckdb/src/planner/binder/statement/bind_create.cpp b/src/duckdb/src/planner/binder/statement/bind_create.cpp index dc38ee24d..e46295169 100644 --- a/src/duckdb/src/planner/binder/statement/bind_create.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_create.cpp @@ -316,10 +316,8 @@ SchemaCatalogEntry &Binder::BindSchema(CreateInfo &info) { vector schema_path(path.begin() + 1, path.end() - 1); auto &schema_obj = *Catalog::GetSchema(context, path.front(), schema_path, OnEntryNotFound::THROW_EXCEPTION); D_ASSERT(schema_obj.type == CatalogType::SCHEMA_ENTRY); - if (!info.temporary) { - auto &properties = GetStatementProperties(); - properties.RegisterDBModify(schema_obj.catalog, context, DatabaseModificationType::CREATE_CATALOG_ENTRY); - } + GetStatementProperties().RegisterDBModify(schema_obj.catalog, context, + DatabaseModificationType::CREATE_CATALOG_ENTRY); return schema_obj; } diff --git a/src/duckdb/src/planner/binder/statement/bind_delete.cpp b/src/duckdb/src/planner/binder/statement/bind_delete.cpp index 88579cd75..01057d4fe 100644 --- a/src/duckdb/src/planner/binder/statement/bind_delete.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_delete.cpp @@ -37,11 +37,7 @@ BoundStatement Binder::BindNode(DeleteQueryNode &node) { return std::move(*expanded); } - if (!table.temporary) { - // delete from persistent table: not read only! - auto &properties = GetStatementProperties(); - properties.RegisterDBModify(table.catalog, context, DatabaseModificationType::DELETE_DATA); - } + GetStatementProperties().RegisterDBModify(table.catalog, context, DatabaseModificationType::DELETE_DATA); // plan any tables from the various using clauses if (!node.using_clauses.empty()) { diff --git a/src/duckdb/src/planner/binder/statement/bind_drop.cpp b/src/duckdb/src/planner/binder/statement/bind_drop.cpp index 83cd4e603..e9839c11b 100644 --- a/src/duckdb/src/planner/binder/statement/bind_drop.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_drop.cpp @@ -99,10 +99,7 @@ BoundStatement Binder::Bind(DropStatement &stmt) { } // keep the entry's full (possibly nested) schema path so execution navigates the same schema stmt.info->SetQualifiedName(entry->ParentSchema().GetQualifiedName(stmt.info->GetQualifiedName().Name())); - if (!entry->temporary) { - // we can only drop temporary schema entries in read-only mode - properties.RegisterDBModify(entry->ParentCatalog(), context, DatabaseModificationType::DROP_CATALOG_ENTRY); - } + properties.RegisterDBModify(entry->ParentCatalog(), context, DatabaseModificationType::DROP_CATALOG_ENTRY); break; } case CatalogType::SECRET_ENTRY: { diff --git a/src/duckdb/src/planner/binder/statement/bind_insert.cpp b/src/duckdb/src/planner/binder/statement/bind_insert.cpp index f5b54de11..830f0dc74 100644 --- a/src/duckdb/src/planner/binder/statement/bind_insert.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_insert.cpp @@ -620,14 +620,7 @@ BoundStatement Binder::BindNode(InsertQueryNode &node) { auto merge_into = GenerateMergeInto(node, table); return Bind(*merge_into); } - if (table.temporary) { - // Temporary inserts still need a catalog dependency so prepared statements are rebound if the table is dropped. - GetStatementProperties().RegisterDBRead(table.catalog, context); - } else { - // inserting into a non-temporary table: alters underlying database - DatabaseModificationType modification_type = DatabaseModificationType::INSERT_DATA; - GetStatementProperties().RegisterDBModify(table.catalog, context, modification_type); - } + GetStatementProperties().RegisterDBModify(table.catalog, context, DatabaseModificationType::INSERT_DATA); auto insert = make_uniq(table, GenerateTableIndex()); diff --git a/src/duckdb/src/planner/binder/statement/bind_merge_into.cpp b/src/duckdb/src/planner/binder/statement/bind_merge_into.cpp index 79013b320..08045d206 100644 --- a/src/duckdb/src/planner/binder/statement/bind_merge_into.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_merge_into.cpp @@ -231,30 +231,26 @@ BoundStatement Binder::BindNode(MergeQueryNode &node) { throw NotImplementedException("MERGE INTO is not supported on tables with triggers"); } - if (!table.temporary) { - // update of persistent table: not read only! - auto &properties = GetStatementProperties(); - // modification type depends on actions - DatabaseModificationType modification; - for (auto &action_condition : node.actions) { - for (auto &action : action_condition.second) { - switch (action->action_type) { - case MergeActionType::MERGE_UPDATE: - modification |= DatabaseModificationType::UPDATE_DATA; - break; - case MergeActionType::MERGE_DELETE: - modification |= DatabaseModificationType::DELETE_DATA; - break; - case MergeActionType::MERGE_INSERT: - modification |= DatabaseModificationType::INSERT_DATA; - break; - default: - break; - } + // modification type depends on actions + DatabaseModificationType modification; + for (auto &action_condition : node.actions) { + for (auto &action : action_condition.second) { + switch (action->action_type) { + case MergeActionType::MERGE_UPDATE: + modification |= DatabaseModificationType::UPDATE_DATA; + break; + case MergeActionType::MERGE_DELETE: + modification |= DatabaseModificationType::DELETE_DATA; + break; + case MergeActionType::MERGE_INSERT: + modification |= DatabaseModificationType::INSERT_DATA; + break; + default: + break; } } - properties.RegisterDBModify(table.catalog, context, modification); } + GetStatementProperties().RegisterDBModify(table.catalog, context, modification); // bind the source auto source_binder = Binder::CreateBinder(context, this); diff --git a/src/duckdb/src/planner/binder/statement/bind_update.cpp b/src/duckdb/src/planner/binder/statement/bind_update.cpp index 5f2e4ad75..b02a17a68 100644 --- a/src/duckdb/src/planner/binder/statement/bind_update.cpp +++ b/src/duckdb/src/planner/binder/statement/bind_update.cpp @@ -190,11 +190,7 @@ BoundStatement Binder::BindNode(UpdateQueryNode &node) { get = &root->Cast(); } - if (!table.temporary) { - // update of persistent table: not read only! - auto &properties = GetStatementProperties(); - properties.RegisterDBModify(table.catalog, context, DatabaseModificationType::UPDATE_DATA); - } + GetStatementProperties().RegisterDBModify(table.catalog, context, DatabaseModificationType::UPDATE_DATA); auto update = make_uniq(table); // Trigger expansion flags its generated base UPDATE for OLD capture via scoped binder state (keyed by node diff --git a/src/duckdb/src/planner/sql_export/sql_export_functions.cpp b/src/duckdb/src/planner/sql_export/sql_export_functions.cpp index 90cf8cec9..afcd594b6 100644 --- a/src/duckdb/src/planner/sql_export/sql_export_functions.cpp +++ b/src/duckdb/src/planner/sql_export/sql_export_functions.cpp @@ -234,9 +234,9 @@ BoundExpressionSQLExportState::ExportScalarFunction(const BoundFunctionExpressio // Restore result types when binding or optimization changed argument types. const bool can_restore_result_type = SQLExportHelpers::IsSQLRepresentableType(expression.GetReturnType()) && !expression.GetReturnType().IsAggregateState(); - const bool has_specialized_result_type = - (definition->HasBindCallback() || definition->GetReturnType().id() == LogicalTypeId::SQLNULL) && - definition->GetReturnType() != expression.GetReturnType(); + const bool has_specialized_result_type = (definition->HasBindCallback() || definition->HasResolveTypesCallback() || + definition->GetReturnType().id() == LogicalTypeId::SQLNULL) && + definition->GetReturnType() != expression.GetReturnType(); if (can_restore_result_type && has_specialized_result_type) { return RestoreResultType(expression.GetReturnType(), std::move(result), path); } diff --git a/src/duckdb/src/storage/serialization/serialize_nodes.cpp b/src/duckdb/src/storage/serialization/serialize_nodes.cpp index 694abbc2c..07759010f 100644 --- a/src/duckdb/src/storage/serialization/serialize_nodes.cpp +++ b/src/duckdb/src/storage/serialization/serialize_nodes.cpp @@ -465,6 +465,7 @@ void MultiFileOptions::Serialize(Serializer &serializer) const { serializer.WritePropertyWithDefault(109, "sampled_schema_is_union", sampled_schema_is_union, true); serializer.WritePropertyWithDefault>(110, "schema", schema); serializer.WritePropertyWithDefault(111, "file_row_number", file_row_number); + serializer.WriteProperty(112, "column_statistics", column_statistics); } MultiFileOptions MultiFileOptions::Deserialize(Deserializer &deserializer) { @@ -481,6 +482,7 @@ MultiFileOptions MultiFileOptions::Deserialize(Deserializer &deserializer) { deserializer.ReadPropertyWithExplicitDefault(109, "sampled_schema_is_union", result.sampled_schema_is_union, true); deserializer.ReadPropertyWithDefault>(110, "schema", result.schema); deserializer.ReadPropertyWithDefault(111, "file_row_number", result.file_row_number); + deserializer.ReadProperty(112, "column_statistics", result.column_statistics); return result; } diff --git a/src/duckdb/src/storage/single_file_block_manager.cpp b/src/duckdb/src/storage/single_file_block_manager.cpp index 7fa79e361..0f2b8ea9a 100644 --- a/src/duckdb/src/storage/single_file_block_manager.cpp +++ b/src/duckdb/src/storage/single_file_block_manager.cpp @@ -1338,6 +1338,7 @@ void SingleFileBlockManager::WriteHeader(QueryContext context, DatabaseHeader he header.iteration = ++iteration_count; set all_free_blocks = free_list; + all_free_blocks.insert(free_blocks_in_use.begin(), free_blocks_in_use.end()); auto checkpoint_freed_blocks = modified_blocks; for (auto &block : checkpoint_freed_blocks) { all_free_blocks.insert(block); diff --git a/src/duckdb/src/storage/statistics/string_stats.cpp b/src/duckdb/src/storage/statistics/string_stats.cpp index 1f2279265..358bb6304 100644 --- a/src/duckdb/src/storage/statistics/string_stats.cpp +++ b/src/duckdb/src/storage/statistics/string_stats.cpp @@ -626,8 +626,18 @@ void StringStats::MergeStats(BaseStatistics &stats, string_t &target, StringStat return; } bool new_is_more_extreme = is_min ? comparison < 0 : comparison > 0; + // for min: a prefix is always <= its extensions, so the shorter value is already a safe lower bound + // for max: a truncated prefix represents unknown larger extensions and must be kept as the upper bound + if (!is_min && memcmp(source.GetData(), target.GetData(), MinValue(source.GetSize(), target.GetSize())) == 0) { + if (comparison < 0) { + // source is a prefix of target: source wins if it is truncated + new_is_more_extreme = source_type == StringStatsType::TRUNCATED_STATS; + } else { + // target is a prefix of source: target wins if it is truncated + new_is_more_extreme = target_type != StringStatsType::TRUNCATED_STATS; + } + } if (!new_is_more_extreme) { - // old value is more extreme - bail return; } // assign the new value diff --git a/src/duckdb/src/storage/table/column_data.cpp b/src/duckdb/src/storage/table/column_data.cpp index e024fb79c..07c6a78d5 100644 --- a/src/duckdb/src/storage/table/column_data.cpp +++ b/src/duckdb/src/storage/table/column_data.cpp @@ -268,10 +268,11 @@ void ColumnData::SelectVector(ColumnScanState &state, Vector &result, idx_t targ throw InternalException("ColumnData::SelectVector should be able to fetch everything from one segment"); } if (state.scan_options && state.scan_options->force_fetch_row) { + auto start = state.GetPositionInSegment(); for (idx_t i = 0; i < sel_count; i++) { auto source_idx = sel.get_index(i); ColumnFetchState fetch_state; - current.FetchRow(fetch_state, UnsafeNumericCast(state.offset_in_column + source_idx), result, i); + current.FetchRow(fetch_state, UnsafeNumericCast(start + source_idx), result, i); } } else { current.Select(state, target_count, result, sel, sel_count); @@ -1038,7 +1039,10 @@ static PersistentColumnData GetPersistentColumnDataType(Deserializer &deserializ } case ExtraPersistentColumnDataType::GEOMETRY: { const auto &geometry_data = extra_data->Cast(); - PersistentColumnData result(Geometry::GetVectorizedType(geometry_data.storage_type)); + // WKB is stored as the column's own type, which may carry type parameters (e.g., a CRS) + PersistentColumnData result(geometry_data.storage_type == GeometryStorageType::WKB + ? deserializer.Get() + : Geometry::GetVectorizedType(geometry_data.storage_type)); result.extra_data = std::move(extra_data); return result; } @@ -1065,8 +1069,7 @@ PersistentColumnData PersistentColumnData::Deserialize(Deserializer &deserialize // TODO: This is ugly if (result.extra_data && result.extra_data->GetType() == ExtraPersistentColumnDataType::GEOMETRY) { - auto &geo_data = result.extra_data->Cast(); - auto actual_type = Geometry::GetVectorizedType(geo_data.storage_type); + const auto &actual_type = type; // We need to set the actual type in scope, as when we deserialize "data_pointers" we use it to detect // the type of the statistics. diff --git a/src/duckdb/src/storage/table/variant/variant_shredding.cpp b/src/duckdb/src/storage/table/variant/variant_shredding.cpp index 9a1b50d14..61b1094bb 100644 --- a/src/duckdb/src/storage/table/variant/variant_shredding.cpp +++ b/src/duckdb/src/storage/table/variant/variant_shredding.cpp @@ -829,6 +829,7 @@ void VariantColumnData::DebugShred(Vector &variant, idx_t count) { Vector materialized(LogicalType::VARIANT(), count); VectorOperations::Copy(variant, materialized, count, 0, 0); + FlatVector::SetSize(materialized, count); variant.Reference(materialized); //! Derive the shredding schema from the *first* value only - subsequent values that don't match it diff --git a/src/duckdb/src/transaction/meta_transaction.cpp b/src/duckdb/src/transaction/meta_transaction.cpp index cefa8e730..b3cf2b9e2 100644 --- a/src/duckdb/src/transaction/meta_transaction.cpp +++ b/src/duckdb/src/transaction/meta_transaction.cpp @@ -256,7 +256,8 @@ AttachedDatabase &MetaTransaction::UseDatabase(shared_ptr &dat } void MetaTransaction::ModifyDatabase(AttachedDatabase &db, DatabaseModificationType modification) { - if (IsReadOnly()) { + // Temporary objects are private to the connection, so a read-only transaction may still write them + if (IsReadOnly() && !db.IsTemporary()) { throw TransactionException("Cannot write to database \"%s\" - transaction is launched in read-only mode", db.GetName()); } diff --git a/src/duckdb/third_party/zstd/include/zstd/common/cpu.h b/src/duckdb/third_party/zstd/include/zstd/common/cpu.h index 892f9851d..94111d049 100644 --- a/src/duckdb/third_party/zstd/include/zstd/common/cpu.h +++ b/src/duckdb/third_party/zstd/include/zstd/common/cpu.h @@ -37,7 +37,7 @@ MEM_STATIC ZSTD_cpuid_t ZSTD_cpuid(void) { U32 f7b = 0; U32 f7c = 0; #if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_IX86)) -#if !defined(__clang__) +#if !defined(_M_X64) || !defined(__clang__) || __clang_major__ >= 16 int reg[4]; __cpuid((int*)reg, 0); { diff --git a/src/duckdb/ub_src_parser_peg.cpp b/src/duckdb/ub_src_parser_peg.cpp index 51a972dea..aee36f71b 100644 --- a/src/duckdb/ub_src_parser_peg.cpp +++ b/src/duckdb/ub_src_parser_peg.cpp @@ -12,6 +12,8 @@ #include "src/parser/peg/matcher_factory.cpp" +#include "src/parser/peg/matcher_first_set.cpp" + #include "src/parser/peg/matcher_process.cpp" #include "src/parser/peg/matcher_stack.cpp"