@@ -5088,6 +5088,7 @@ fn parse_truncate() {
50885088 let table_names = vec ! [ TruncateTableTarget {
50895089 name: table_name. clone( ) ,
50905090 only: false ,
5091+ has_asterisk: false ,
50915092 } ] ;
50925093 assert_eq ! (
50935094 Statement :: Truncate ( Truncate {
@@ -5112,6 +5113,7 @@ fn parse_truncate_with_options() {
51125113 let table_names = vec ! [ TruncateTableTarget {
51135114 name: table_name. clone( ) ,
51145115 only: true ,
5116+ has_asterisk: false ,
51155117 } ] ;
51165118
51175119 assert_eq ! (
@@ -5141,10 +5143,12 @@ fn parse_truncate_with_table_list() {
51415143 TruncateTableTarget {
51425144 name: table_name_a. clone( ) ,
51435145 only: false ,
5146+ has_asterisk: false ,
51445147 } ,
51455148 TruncateTableTarget {
51465149 name: table_name_b. clone( ) ,
51475150 only: false ,
5151+ has_asterisk: false ,
51485152 } ,
51495153 ] ;
51505154
@@ -5162,6 +5166,64 @@ fn parse_truncate_with_table_list() {
51625166 ) ;
51635167}
51645168
5169+ #[ test]
5170+ fn parse_truncate_with_descendant ( ) {
5171+ let truncate = pg_and_generic ( ) . verified_stmt ( "TRUNCATE TABLE t *" ) ;
5172+
5173+ let table_names = vec ! [ TruncateTableTarget {
5174+ name: ObjectName :: from( vec![ Ident :: new( "t" ) ] ) ,
5175+ only: false ,
5176+ has_asterisk: true ,
5177+ } ] ;
5178+
5179+ assert_eq ! (
5180+ Statement :: Truncate ( Truncate {
5181+ table_names,
5182+ partitions: None ,
5183+ table: true ,
5184+ if_exists: false ,
5185+ identity: None ,
5186+ cascade: None ,
5187+ on_cluster: None ,
5188+ } ) ,
5189+ truncate
5190+ ) ;
5191+
5192+ let truncate = pg_and_generic ( )
5193+ . verified_stmt ( "TRUNCATE TABLE ONLY parent, child *, grandchild RESTART IDENTITY" ) ;
5194+
5195+ let table_names = vec ! [
5196+ TruncateTableTarget {
5197+ name: ObjectName :: from( vec![ Ident :: new( "parent" ) ] ) ,
5198+ only: true ,
5199+ has_asterisk: false ,
5200+ } ,
5201+ TruncateTableTarget {
5202+ name: ObjectName :: from( vec![ Ident :: new( "child" ) ] ) ,
5203+ only: false ,
5204+ has_asterisk: true ,
5205+ } ,
5206+ TruncateTableTarget {
5207+ name: ObjectName :: from( vec![ Ident :: new( "grandchild" ) ] ) ,
5208+ only: false ,
5209+ has_asterisk: false ,
5210+ } ,
5211+ ] ;
5212+
5213+ assert_eq ! (
5214+ Statement :: Truncate ( Truncate {
5215+ table_names,
5216+ partitions: None ,
5217+ table: true ,
5218+ if_exists: false ,
5219+ identity: Some ( TruncateIdentityOption :: Restart ) ,
5220+ cascade: None ,
5221+ on_cluster: None ,
5222+ } ) ,
5223+ truncate
5224+ ) ;
5225+ }
5226+
51655227#[ test]
51665228fn parse_select_regexp_as_column_name ( ) {
51675229 pg_and_generic ( ) . verified_only_select (
0 commit comments