@@ -444,11 +444,14 @@ def literal(value: Any) -> Expr:
444444
445445 ``value`` must be a valid PyArrow scalar value or easily castable to one.
446446 """
447- if isinstance (value , str ):
448- value = pa .scalar (value , type = pa .string_view ())
449- if not isinstance (value , pa .Scalar ):
450- value = pa .scalar (value )
451- return Expr (expr_internal .RawExpr .literal (value ))
447+ if value is None :
448+ array = pa .array ([None ])
449+ elif isinstance (value , str ):
450+ array = pa .array ([value ], type = pa .string_view ())
451+ else :
452+ array = pa .array ([value ])
453+
454+ return Expr (expr_internal .RawExpr .literal (array ))
452455
453456 @staticmethod
454457 def literal_with_metadata (value : Any , metadata : dict [str , str ]) -> Expr :
@@ -458,11 +461,14 @@ def literal_with_metadata(value: Any, metadata: dict[str, str]) -> Expr:
458461 value: A valid PyArrow scalar value or easily castable to one.
459462 metadata: Metadata to attach to the expression.
460463 """
461- if isinstance (value , str ):
462- value = pa .scalar (value , type = pa .string_view ())
463- value = value if isinstance (value , pa .Scalar ) else pa .scalar (value )
464+ if value is None :
465+ array = pa .array ([None ])
466+ elif isinstance (value , str ):
467+ array = pa .array ([value ], type = pa .string_view ())
468+ else :
469+ array = pa .array ([value ])
464470
465- return Expr (expr_internal .RawExpr .literal_with_metadata (value , metadata ))
471+ return Expr (expr_internal .RawExpr .literal_with_metadata (array , metadata ))
466472
467473 @staticmethod
468474 def string_literal (value : str ) -> Expr :
@@ -476,8 +482,8 @@ def string_literal(value: str) -> Expr:
476482 https://github.com/apache/datafusion/blob/86740bfd3d9831d6b7c1d0e1bf4a21d91598a0ac/datafusion/functions/src/core/arrow_cast.rs#L179
477483 """
478484 if isinstance (value , str ):
479- value = pa .scalar ( value , type = pa .string ())
480- return Expr (expr_internal .RawExpr .literal (value ))
485+ array = pa .array ([ value ] , type = pa .string ())
486+ return Expr (expr_internal .RawExpr .literal (array ))
481487 return Expr .literal (value )
482488
483489 @staticmethod
0 commit comments