@@ -565,17 +565,16 @@ def _load_numpy_accel(
565565 if not has_accel :
566566 raise RuntimeError ('could not load SingleStoreDB extension' )
567567
568- row_ids , cols = _singlestoredb_accel . load_rowdat_1_numpy ( colspec , data )
568+ import numpy as np
569569
570- cols = list ( cols )
570+ numpy_ids , numpy_cols = _singlestoredb_accel . load_rowdat_1_numpy ( colspec , data )
571571
572- for i , (( name , dtype , transformer ), col ) in enumerate (zip ( colspec , cols ) ):
572+ for i , (_ , dtype , transformer ) in enumerate (colspec ):
573573 if transformer is not None :
574- import numpy as np
575- vectorized_transformer = np .vectorize (transformer )
576- cols [i ] = (vectorized_transformer (col [0 ]), col [1 ])
574+ t = np .vectorize (transformer )
575+ numpy_cols [i ] = (t (numpy_cols [i ][0 ]), numpy_cols [i ][1 ])
577576
578- return row_ids , cols
577+ return numpy_ids , numpy_cols
579578
580579
581580def _dump_numpy_accel (
@@ -586,17 +585,14 @@ def _dump_numpy_accel(
586585 if not has_accel :
587586 raise RuntimeError ('could not load SingleStoreDB extension' )
588587
589- cols = list ( cols )
588+ import numpy as np
590589
591- for i , (_ , rtype , transformer ), ( data , mask ) in zip ( range ( len ( cols )), returns , cols ):
590+ for i , (_ , dtype , transformer ) in enumerate ( returns ):
592591 if transformer is not None :
593- import numpy as np
594- vectorized_transformer = np .vectorize (transformer )
595- cols [i ] = (vectorized_transformer (data ), mask )
592+ t = np .vectorize (transformer )
593+ cols [i ] = (t (cols [i ][0 ]), cols [i ][1 ])
596594
597- return _singlestoredb_accel .dump_rowdat_1_numpy (
598- [x [1 ] for x in returns ], row_ids , cols ,
599- )
595+ return _singlestoredb_accel .dump_rowdat_1_numpy (returns , row_ids , cols )
600596
601597
602598def _load_pandas_accel (
@@ -642,16 +638,7 @@ def _dump_pandas_accel(
642638 for data , mask in cols
643639 ]
644640
645- for i , (_ , rtype , transformer ), (data , mask )\
646- in zip (range (len (numpy_cols )), returns , numpy_cols ):
647- if transformer is not None :
648- import numpy as np
649- vectorized_transformer = np .vectorize (transformer , otypes = [object ])
650- numpy_cols [i ] = (vectorized_transformer (data ), mask )
651-
652- return _singlestoredb_accel .dump_rowdat_1_numpy (
653- [x [1 ] for x in returns ], numpy_ids , numpy_cols ,
654- )
641+ return _dump_numpy_accel (returns , numpy_ids , numpy_cols )
655642
656643
657644def _load_polars_accel (
@@ -700,16 +687,7 @@ def _dump_polars_accel(
700687 for data , mask in cols
701688 ]
702689
703- for i , (_ , rtype , transformer ), (data , mask )\
704- in zip (range (len (numpy_cols )), returns , numpy_cols ):
705- if transformer is not None :
706- import numpy as np
707- vectorized_transformer = np .vectorize (transformer , otypes = [object ])
708- numpy_cols [i ] = (vectorized_transformer (data ), mask )
709-
710- return _singlestoredb_accel .dump_rowdat_1_numpy (
711- [x [1 ] for x in returns ], numpy_ids , numpy_cols ,
712- )
690+ return _dump_numpy_accel (returns , numpy_ids , numpy_cols )
713691
714692
715693def _load_arrow_accel (
@@ -763,49 +741,24 @@ def _dump_arrow_accel(
763741 for (data , mask ), (_ , dtype , _ ) in zip (cols , returns )
764742 ]
765743
766- for i , (_ , rtype , transformer ), (data , mask ) in zip (
767- range (len (numpy_cols )), returns ,
768- numpy_cols ,
769- ):
770- if transformer is not None :
771- import numpy as np
772- vectorized_transformer = np .vectorize (transformer , otypes = [object ])
773- numpy_cols [i ] = (vectorized_transformer (data ), mask )
774-
775- return _singlestoredb_accel .dump_rowdat_1_numpy (
776- [x [1 ] for x in returns ], row_ids .to_numpy (), numpy_cols ,
777- )
744+ return _dump_numpy_accel (returns , row_ids .to_numpy (), numpy_cols )
778745
779746
780747def _dump_rowdat_1_accel (
781748 returns : List [Tuple [str , int , Optional [Transformer ]]],
782749 row_ids : List [int ],
783750 rows : List [List [Any ]],
784751) -> bytes :
785- rows = list (rows )
786-
787- for i , (name , dtype , transformer ), row in zip (range (len (returns )), returns , rows ):
788- if transformer is not None :
789- for j in range (len (row )):
790- rows [j ][i ] = transformer (row [i ])
791-
792- return _singlestoredb_accel .dump_rowdat_1 (
793- [x [1 ] for x in returns ], row_ids , rows ,
794- )
752+ # C function now handles transformers internally
753+ return _singlestoredb_accel .dump_rowdat_1 (returns , row_ids , rows )
795754
796755
797756def _load_rowdat_1_accel (
798757 colspec : List [Tuple [str , int , Optional [Transformer ]]],
799758 data : bytes ,
800759) -> Tuple [List [int ], List [Any ]]:
801- row_ids , rows = _singlestoredb_accel .load_rowdat_1 (colspec , data )
802-
803- for i , (name , dtype , transformer ), _ in zip (range (len (colspec )), colspec , rows ):
804- if transformer is not None :
805- for j in range (len (rows )):
806- rows [j ][i ] = transformer (rows [j ][i ])
807-
808- return row_ids , rows
760+ # C function now handles transformers internally
761+ return _singlestoredb_accel .load_rowdat_1 (colspec , data )
809762
810763
811764if not has_accel :
0 commit comments