@@ -16,16 +16,15 @@ use std::sync::Arc;
16
16
17
17
use common_exception:: ErrorCode ;
18
18
use common_exception:: Result ;
19
- use common_planners:: PlanNode ;
20
19
use common_planners:: PlanShowKind ;
21
20
use common_planners:: ShowDatabasesPlan ;
22
21
use common_streams:: SendableDataBlockStream ;
23
22
24
23
use crate :: interpreters:: Interpreter ;
25
- use crate :: interpreters:: SelectInterpreter ;
26
- use crate :: optimizers:: Optimizers ;
24
+ use crate :: interpreters:: SelectInterpreterV2 ;
27
25
use crate :: sessions:: QueryContext ;
28
- use crate :: sql:: PlanParser ;
26
+ use crate :: sql:: plans:: Plan ;
27
+ use crate :: sql:: Planner ;
29
28
30
29
pub struct ShowDatabasesInterpreter {
31
30
ctx : Arc < QueryContext > ,
@@ -62,11 +61,22 @@ impl Interpreter for ShowDatabasesInterpreter {
62
61
63
62
async fn execute ( & self ) -> Result < SendableDataBlockStream > {
64
63
let query = self . build_query ( ) ?;
65
- let plan = PlanParser :: parse ( self . ctx . clone ( ) , & query ) . await ? ;
66
- let optimized = Optimizers :: create ( self . ctx . clone ( ) ) . optimize ( & plan ) ?;
64
+ let mut planner = Planner :: new ( self . ctx . clone ( ) ) ;
65
+ let ( plan , _ , _ ) = planner . plan_sql ( & query ) . await ?;
67
66
68
- if let PlanNode :: Select ( plan) = optimized {
69
- let interpreter = SelectInterpreter :: try_create ( self . ctx . clone ( ) , plan) ?;
67
+ if let Plan :: Query {
68
+ s_expr,
69
+ metadata,
70
+ bind_context,
71
+ ..
72
+ } = plan
73
+ {
74
+ let interpreter = SelectInterpreterV2 :: try_create (
75
+ self . ctx . clone ( ) ,
76
+ * bind_context,
77
+ * s_expr,
78
+ metadata,
79
+ ) ?;
70
80
interpreter. execute ( ) . await
71
81
} else {
72
82
return Err ( ErrorCode :: LogicalError ( "Show databases build query error" ) ) ;
0 commit comments