88from ..abcs import Compilable
99from ..schema import Schema
1010
11- from .compiler import Compiler , cv_params
11+ from .compiler import Compiler , cv_params , Root
1212from .base import SKIP , CompileError , DbPath , args_as_tuple
1313
1414
@@ -47,7 +47,7 @@ def cast_to(self, to):
4747
4848
4949@dataclass
50- class Code (ExprNode ):
50+ class Code (ExprNode , Root ):
5151 code : str
5252
5353 def compile (self , c : Compiler ) -> str :
@@ -434,7 +434,7 @@ def compile(self, c: Compiler) -> str:
434434
435435
436436@dataclass
437- class Join (ExprNode , ITable ):
437+ class Join (ExprNode , ITable , Root ):
438438 source_tables : Sequence [ITable ]
439439 op : str = None
440440 on_exprs : Sequence [Expr ] = None
@@ -499,7 +499,7 @@ def compile(self, parent_c: Compiler) -> str:
499499
500500
501501@dataclass
502- class GroupBy (ExprNode , ITable ):
502+ class GroupBy (ExprNode , ITable , Root ):
503503 table : ITable
504504 keys : Sequence [Expr ] = None # IKey?
505505 values : Sequence [Expr ] = None
@@ -540,7 +540,7 @@ def compile(self, c: Compiler) -> str:
540540
541541
542542@dataclass
543- class TableOp (ExprNode , ITable ):
543+ class TableOp (ExprNode , ITable , Root ):
544544 op : str
545545 table1 : ITable
546546 table2 : ITable
@@ -571,7 +571,7 @@ def compile(self, parent_c: Compiler) -> str:
571571
572572
573573@dataclass
574- class Select (ExprNode , ITable ):
574+ class Select (ExprNode , ITable , Root ):
575575 table : Expr = None
576576 columns : Sequence [Expr ] = None
577577 where_exprs : Sequence [Expr ] = None
@@ -771,7 +771,7 @@ def compile_for_insert(self, c: Compiler):
771771
772772
773773@dataclass
774- class Explain (ExprNode ):
774+ class Explain (ExprNode , Root ):
775775 select : Select
776776
777777 type = str
@@ -780,10 +780,16 @@ def compile(self, c: Compiler) -> str:
780780 return c .dialect .explain_as_text (c .compile (self .select ))
781781
782782
783+ class CurrentTimestamp (ExprNode ):
784+ type = datetime
785+
786+ def compile (self , c : Compiler ) -> str :
787+ return c .dialect .current_timestamp ()
788+
783789# DDL
784790
785791
786- class Statement (Compilable ):
792+ class Statement (Compilable , Root ):
787793 type = None
788794
789795
0 commit comments