@@ -4656,22 +4656,72 @@ def unpivotcolumns_sql(self, expression: exp.UnpivotColumns) -> str:
4656
4656
4657
4657
return f"NAME { name } VALUE { values } "
4658
4658
4659
- def computestatistics_sql (self , expression : exp .ComputeStatistics ) -> str :
4659
+ def sample_sql (self , expression : exp .Sample ) -> str :
4660
+ kind = self .sql (expression , "kind" )
4661
+ sample = self .sql (expression , "sample" )
4662
+ return f"SAMPLE { sample } { kind } "
4663
+
4664
+ def statistics_sql (self , expression : exp .Statistics ) -> str :
4665
+ kind = self .sql (expression , "kind" )
4666
+ option = self .sql (expression , "option" )
4667
+ option = f" { option } " if option else ""
4660
4668
this = self .sql (expression , "this" )
4669
+ this = f" { this } " if this else ""
4661
4670
columns = self .expressions (expression )
4662
4671
columns = f" { columns } " if columns else ""
4663
- return f"COMPUTE STATISTICS { this } { columns } "
4672
+ return f"{ kind } { option } STATISTICS{ this } { columns } "
4673
+
4674
+ def histogram_sql (self , expression : exp .Histogram ) -> str :
4675
+ this = self .sql (expression , "this" )
4676
+ columns = self .expressions (expression )
4677
+ inner_expression = self .sql (expression , "expression" )
4678
+ inner_expression = f" { inner_expression } " if inner_expression else ""
4679
+ update_options = self .sql (expression , "update_options" )
4680
+ update_options = f" { update_options } UPDATE" if update_options else ""
4681
+ return f"{ this } HISTOGRAM ON { columns } { inner_expression } { update_options } "
4682
+
4683
+ def usingdata_sql (self , expression : exp .UsingData ) -> str :
4684
+ data = self .sql (expression , "this" )
4685
+ return f"USING DATA { data } "
4686
+
4687
+ def analyzecolumns_sql (self , expression : exp .AnalyzeColumns ) -> str :
4688
+ return self .sql (expression , "this" )
4689
+
4690
+ def analyzedelete_sql (self , expression : exp .AnalyzeDelete ) -> str :
4691
+ kind = self .sql (expression , "kind" )
4692
+ kind = f" { kind } " if kind else ""
4693
+ return f"DELETE{ kind } STATISTICS"
4694
+
4695
+ def analyzewith_sql (self , expression : exp .AnalyzeWith ) -> str :
4696
+ return self .expressions (expression , prefix = "WITH " , sep = " " )
4697
+
4698
+ def analyzelistchainedrows_sql (self , expression : exp .AnalyzeListChainedRows ) -> str :
4699
+ inner_expression = self .sql (expression , "expression" )
4700
+ return f"LIST CHAINED ROWS{ inner_expression } "
4701
+
4702
+ def analyzevalidate_sql (self , expression : exp .AnalyzeValidate ) -> str :
4703
+ kind = self .sql (expression , "kind" )
4704
+ this = self .sql (expression , "this" )
4705
+ this = f" { this } " if this else ""
4706
+ inner_expression = self .sql (expression , "expression" )
4707
+ return f"VALIDATE { kind } { this } { inner_expression } "
4664
4708
4665
4709
def analyze_sql (self , expression : exp .Analyze ) -> str :
4710
+ options = self .expressions (expression , key = "options" , sep = " " )
4711
+ options = f" { options } " if options else ""
4666
4712
kind = self .sql (expression , "kind" )
4713
+ kind = f" { kind } " if kind else ""
4667
4714
this = self .sql (expression , "this" )
4668
4715
this = f" { this } " if this else ""
4669
- if this and kind == "TABLES" :
4670
- this = f" FROM{ this } "
4716
+ mode = self .sql (expression , "mode" )
4717
+ mode = f" { mode } " if mode else ""
4718
+ properties = self .sql (expression , "properties" )
4719
+ properties = f" { properties } " if properties else ""
4671
4720
partition = self .sql (expression , "partition" )
4672
4721
partition = f" { partition } " if partition else ""
4673
- inner_expression = f" { self .sql (expression , 'expression' )} "
4674
- return f"ANALYZE { kind } { this } { partition } { inner_expression } "
4722
+ inner_expression = self .sql (expression , "expression" )
4723
+ inner_expression = f" { inner_expression } " if inner_expression else ""
4724
+ return f"ANALYZE{ options } { kind } { this } { partition } { mode } { inner_expression } { properties } "
4675
4725
4676
4726
def xmltable_sql (self , expression : exp .XMLTable ) -> str :
4677
4727
this = self .sql (expression , "this" )
0 commit comments