@@ -20,6 +20,7 @@ use std::sync::Arc;
2020use chrono:: DateTime ;
2121use chrono:: Utc ;
2222use databend_common_ast:: ast:: Expr ;
23+ use databend_common_ast:: ast:: quote:: QuotedIdent ;
2324use databend_common_ast:: parser:: Dialect ;
2425use databend_common_ast:: parser:: parse_comma_separated_exprs;
2526use databend_common_ast:: parser:: tokenize_sql;
@@ -61,6 +62,22 @@ use crate::statistics::BasicColumnStatistics;
6162use crate :: table_args:: TableArgs ;
6263use crate :: table_context:: TableContext ;
6364
65+ pub fn quoted_table_reference (
66+ database_name : & str ,
67+ table_name : & str ,
68+ branch_name : Option < & str > ,
69+ quote : char ,
70+ ) -> String {
71+ let database = QuotedIdent ( database_name, quote) ;
72+ let table = QuotedIdent ( table_name, quote) ;
73+ if let Some ( branch_name) = branch_name {
74+ let branch = QuotedIdent ( branch_name, quote) ;
75+ format ! ( "{database}.{table}/{branch}" )
76+ } else {
77+ format ! ( "{database}.{table}" )
78+ }
79+ }
80+
6481#[ async_trait:: async_trait]
6582pub trait Table : Sync + Send {
6683 fn name ( & self ) -> & str {
@@ -366,9 +383,10 @@ pub trait Table: Sync + Send {
366383 ctx : Arc < dyn TableContext > ,
367384 database_name : & str ,
368385 table_name : & str ,
386+ branch_name : Option < & str > ,
369387 with_options : & str ,
370388 ) -> Result < String > {
371- let ( _, _, _, _) = ( ctx, database_name, table_name, with_options) ;
389+ let ( _, _, _, _, _ ) = ( ctx, database_name, table_name, branch_name , with_options) ;
372390
373391 Err ( ErrorCode :: Unimplemented ( format ! (
374392 "Change tracking operation is not supported for the table '{}', which uses the '{}' engine." ,
0 commit comments