milesgranger commented on code in PR #14106: URL: https://github.com/apache/arrow/pull/14106#discussion_r977610530
########## cpp/src/arrow/compute/kernels/scalar_cast_extension.cc: ########## @@ -42,14 +42,17 @@ Status CastToExtension(KernelContext* ctx, const ExecSpan& batch, ExecResult* ou std::shared_ptr<CastFunction> GetCastToExtension(std::string name) { auto func = std::make_shared<CastFunction>(std::move(name), Type::EXTENSION); - for (auto types : {IntTypes(), FloatingPointTypes(), StringTypes(), BinaryTypes()}) { + for (auto types : {PrimitiveTypes(), IntervalTypes(), TemporalTypes()}) { for (auto in_ty : types) { DCHECK_OK( func->AddKernel(in_ty->id(), {in_ty}, kOutputTargetType, CastToExtension)); } } - DCHECK_OK(func->AddKernel(Type::DICTIONARY, {InputType(Type::DICTIONARY)}, - kOutputTargetType, CastToExtension)); + for (auto in_ty : {Type::DICTIONARY, Type::LIST, Type::LARGE_LIST, + Type::FIXED_SIZE_LIST, Type::EXTENSION}) { Review Comment: In the (albeit, contrived) test case of `TinyintType` -> `SmallintType` it is acceptable, and in your example not at all. Not sure where the potential errors in casting goes against principle of least surprise. :thinking: Would adding an option `allow_casting_between_extensions` be enough for users to opt-in to their chosen risk? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org