@@ -7,7 +7,6 @@ use std::{collections::HashMap, future::Future, pin::Pin, sync::Arc, time::Syste
77
88use crate :: {
99 compile:: {
10- engine:: { df:: planner:: CubeQueryPlanner , udf:: * , VariablesProvider } ,
1110 error:: { CompilationError , CompilationResult } ,
1211 parser:: parse_sql_to_statement,
1312 DatabaseVariable , DatabaseVariablesToUpdate ,
@@ -23,16 +22,11 @@ use crate::{
2322 transport:: { MetaContext , SpanId } ,
2423} ;
2524use datafusion:: {
26- execution:: context:: {
27- default_session_builder, SessionConfig as DFSessionConfig ,
28- SessionContext as DFSessionContext ,
29- } ,
3025 logical_plan:: {
3126 plan:: { Analyze , Explain , ToStringifiedPlan } ,
3227 LogicalPlan , PlanType , ToDFSchema ,
3328 } ,
3429 scalar:: ScalarValue ,
35- variable:: VarType ,
3630} ;
3731use itertools:: Itertools ;
3832use sqlparser:: ast:: { escape_single_quote_string, ObjectName } ;
@@ -671,153 +665,6 @@ impl QueryRouter {
671665 Ok ( QueryPlan :: MetaOk ( flags, CommandCompletion :: DropTable ) )
672666 }
673667
674- pub fn create_execution_ctx ( & self ) -> DFSessionContext {
675- let query_planner = Arc :: new ( CubeQueryPlanner :: new (
676- self . session_manager . server . transport . clone ( ) ,
677- self . state . get_load_request_meta ( ) ,
678- self . session_manager . server . config_obj . clone ( ) ,
679- ) ) ;
680- let mut ctx = DFSessionContext :: with_state (
681- default_session_builder (
682- DFSessionConfig :: new ( )
683- . create_default_catalog_and_schema ( false )
684- . with_information_schema ( false )
685- . with_default_catalog_and_schema ( "db" , "public" ) ,
686- )
687- . with_query_planner ( query_planner) ,
688- ) ;
689-
690- if self . state . protocol == DatabaseProtocol :: MySQL {
691- let system_variable_provider =
692- VariablesProvider :: new ( self . state . clone ( ) , self . session_manager . server . clone ( ) ) ;
693- let user_defined_variable_provider =
694- VariablesProvider :: new ( self . state . clone ( ) , self . session_manager . server . clone ( ) ) ;
695-
696- ctx. register_variable ( VarType :: System , Arc :: new ( system_variable_provider) ) ;
697- ctx. register_variable (
698- VarType :: UserDefined ,
699- Arc :: new ( user_defined_variable_provider) ,
700- ) ;
701- }
702-
703- // udf
704- if self . state . protocol == DatabaseProtocol :: MySQL {
705- ctx. register_udf ( create_version_udf ( "8.0.25" . to_string ( ) ) ) ;
706- ctx. register_udf ( create_db_udf ( "database" . to_string ( ) , self . state . clone ( ) ) ) ;
707- ctx. register_udf ( create_db_udf ( "schema" . to_string ( ) , self . state . clone ( ) ) ) ;
708- ctx. register_udf ( create_current_user_udf (
709- self . state . clone ( ) ,
710- "current_user" ,
711- true ,
712- ) ) ;
713- ctx. register_udf ( create_user_udf ( self . state . clone ( ) ) ) ;
714- } else if self . state . protocol == DatabaseProtocol :: PostgreSQL {
715- ctx. register_udf ( create_version_udf (
716- "PostgreSQL 14.1 on x86_64-cubesql" . to_string ( ) ,
717- ) ) ;
718- ctx. register_udf ( create_db_udf (
719- "current_database" . to_string ( ) ,
720- self . state . clone ( ) ,
721- ) ) ;
722- ctx. register_udf ( create_db_udf (
723- "current_schema" . to_string ( ) ,
724- self . state . clone ( ) ,
725- ) ) ;
726- ctx. register_udf ( create_current_user_udf (
727- self . state . clone ( ) ,
728- "current_user" ,
729- false ,
730- ) ) ;
731- ctx. register_udf ( create_current_user_udf ( self . state . clone ( ) , "user" , false ) ) ;
732- ctx. register_udf ( create_session_user_udf ( self . state . clone ( ) ) ) ;
733- }
734-
735- ctx. register_udf ( create_connection_id_udf ( self . state . clone ( ) ) ) ;
736- ctx. register_udf ( create_pg_backend_pid_udf ( self . state . clone ( ) ) ) ;
737- ctx. register_udf ( create_instr_udf ( ) ) ;
738- ctx. register_udf ( create_ucase_udf ( ) ) ;
739- ctx. register_udf ( create_isnull_udf ( ) ) ;
740- ctx. register_udf ( create_if_udf ( ) ) ;
741- ctx. register_udf ( create_least_udf ( ) ) ;
742- ctx. register_udf ( create_greatest_udf ( ) ) ;
743- ctx. register_udf ( create_convert_tz_udf ( ) ) ;
744- ctx. register_udf ( create_timediff_udf ( ) ) ;
745- ctx. register_udf ( create_time_format_udf ( ) ) ;
746- ctx. register_udf ( create_locate_udf ( ) ) ;
747- ctx. register_udf ( create_date_udf ( ) ) ;
748- ctx. register_udf ( create_makedate_udf ( ) ) ;
749- ctx. register_udf ( create_year_udf ( ) ) ;
750- ctx. register_udf ( create_quarter_udf ( ) ) ;
751- ctx. register_udf ( create_hour_udf ( ) ) ;
752- ctx. register_udf ( create_minute_udf ( ) ) ;
753- ctx. register_udf ( create_second_udf ( ) ) ;
754- ctx. register_udf ( create_dayofweek_udf ( ) ) ;
755- ctx. register_udf ( create_dayofmonth_udf ( ) ) ;
756- ctx. register_udf ( create_dayofyear_udf ( ) ) ;
757- ctx. register_udf ( create_date_sub_udf ( ) ) ;
758- ctx. register_udf ( create_date_add_udf ( ) ) ;
759- ctx. register_udf ( create_str_to_date_udf ( ) ) ;
760- ctx. register_udf ( create_current_timestamp_udf ( "current_timestamp" ) ) ;
761- ctx. register_udf ( create_current_timestamp_udf ( "localtimestamp" ) ) ;
762- ctx. register_udf ( create_current_schema_udf ( ) ) ;
763- ctx. register_udf ( create_current_schemas_udf ( ) ) ;
764- ctx. register_udf ( create_format_type_udf ( ) ) ;
765- ctx. register_udf ( create_pg_datetime_precision_udf ( ) ) ;
766- ctx. register_udf ( create_pg_numeric_precision_udf ( ) ) ;
767- ctx. register_udf ( create_pg_numeric_scale_udf ( ) ) ;
768- ctx. register_udf ( create_pg_get_userbyid_udf ( self . state . clone ( ) ) ) ;
769- ctx. register_udf ( create_pg_get_expr_udf ( ) ) ;
770- ctx. register_udf ( create_pg_table_is_visible_udf ( ) ) ;
771- ctx. register_udf ( create_pg_type_is_visible_udf ( ) ) ;
772- ctx. register_udf ( create_pg_get_constraintdef_udf ( ) ) ;
773- ctx. register_udf ( create_pg_truetypid_udf ( ) ) ;
774- ctx. register_udf ( create_pg_truetypmod_udf ( ) ) ;
775- ctx. register_udf ( create_to_char_udf ( ) ) ;
776- ctx. register_udf ( create_array_lower_udf ( ) ) ;
777- ctx. register_udf ( create_array_upper_udf ( ) ) ;
778- ctx. register_udf ( create_pg_my_temp_schema ( ) ) ;
779- ctx. register_udf ( create_pg_is_other_temp_schema ( ) ) ;
780- ctx. register_udf ( create_has_schema_privilege_udf ( self . state . clone ( ) ) ) ;
781- ctx. register_udf ( create_has_table_privilege_udf ( self . state . clone ( ) ) ) ;
782- ctx. register_udf ( create_has_any_column_privilege_udf ( self . state . clone ( ) ) ) ;
783- ctx. register_udf ( create_pg_total_relation_size_udf ( ) ) ;
784- ctx. register_udf ( create_cube_regclass_cast_udf ( ) ) ;
785- ctx. register_udf ( create_pg_get_serial_sequence_udf ( ) ) ;
786- ctx. register_udf ( create_json_build_object_udf ( ) ) ;
787- ctx. register_udf ( create_regexp_substr_udf ( ) ) ;
788- ctx. register_udf ( create_ends_with_udf ( ) ) ;
789- ctx. register_udf ( create_position_udf ( ) ) ;
790- ctx. register_udf ( create_date_to_timestamp_udf ( ) ) ;
791- ctx. register_udf ( create_to_date_udf ( ) ) ;
792- ctx. register_udf ( create_sha1_udf ( ) ) ;
793- ctx. register_udf ( create_current_setting_udf ( ) ) ;
794- ctx. register_udf ( create_quote_ident_udf ( ) ) ;
795- ctx. register_udf ( create_pg_encoding_to_char_udf ( ) ) ;
796- ctx. register_udf ( create_array_to_string_udf ( ) ) ;
797- ctx. register_udf ( create_charindex_udf ( ) ) ;
798- ctx. register_udf ( create_to_regtype_udf ( ) ) ;
799- ctx. register_udf ( create_pg_get_indexdef_udf ( ) ) ;
800- ctx. register_udf ( create_inet_server_addr_udf ( ) ) ;
801-
802- // udaf
803- ctx. register_udaf ( create_measure_udaf ( ) ) ;
804-
805- // udtf
806- ctx. register_udtf ( create_generate_series_udtf ( ) ) ;
807- ctx. register_udtf ( create_unnest_udtf ( ) ) ;
808- ctx. register_udtf ( create_generate_subscripts_udtf ( ) ) ;
809- ctx. register_udtf ( create_pg_expandarray_udtf ( ) ) ;
810-
811- // redshift
812- ctx. register_udf ( create_datediff_udf ( ) ) ;
813- ctx. register_udf ( create_dateadd_udf ( ) ) ;
814-
815- // fn stubs
816- ctx = register_fun_stubs ( ctx) ;
817-
818- ctx
819- }
820-
821668 async fn reauthenticate_if_needed ( & self ) -> CompilationResult < ( ) > {
822669 if self . state . is_auth_context_expired ( ) {
823670 let authenticate_response = self
0 commit comments