@@ -2507,6 +2507,7 @@ fn parse_create_index() {
25072507 columns,
25082508 unique,
25092509 concurrently,
2510+ r#async,
25102511 if_not_exists,
25112512 nulls_distinct : None ,
25122513 include,
@@ -2520,6 +2521,7 @@ fn parse_create_index() {
25202521 assert_eq ! ( None , using) ;
25212522 assert ! ( !unique) ;
25222523 assert ! ( !concurrently) ;
2524+ assert ! ( !r#async) ;
25232525 assert ! ( if_not_exists) ;
25242526 assert_eq_vec ( & [ "col1" , "col2" ] , & columns) ;
25252527 assert ! ( include. is_empty( ) ) ;
@@ -2542,6 +2544,7 @@ fn parse_create_anonymous_index() {
25422544 columns,
25432545 unique,
25442546 concurrently,
2547+ r#async,
25452548 if_not_exists,
25462549 include,
25472550 nulls_distinct : None ,
@@ -2555,6 +2558,7 @@ fn parse_create_anonymous_index() {
25552558 assert_eq ! ( None , using) ;
25562559 assert ! ( !unique) ;
25572560 assert ! ( !concurrently) ;
2561+ assert ! ( !r#async) ;
25582562 assert ! ( !if_not_exists) ;
25592563 assert_eq_vec ( & [ "col1" , "col2" ] , & columns) ;
25602564 assert ! ( include. is_empty( ) ) ;
@@ -2660,6 +2664,7 @@ fn parse_create_indices_with_operator_classes() {
26602664 columns,
26612665 unique : false ,
26622666 concurrently : false ,
2667+ r#async : false ,
26632668 if_not_exists : false ,
26642669 include,
26652670 nulls_distinct : None ,
@@ -2688,6 +2693,7 @@ fn parse_create_indices_with_operator_classes() {
26882693 columns,
26892694 unique : false ,
26902695 concurrently : false ,
2696+ r#async : false ,
26912697 if_not_exists : false ,
26922698 include,
26932699 nulls_distinct : None ,
@@ -2771,6 +2777,7 @@ fn parse_create_bloom() {
27712777 columns,
27722778 unique : false ,
27732779 concurrently : false ,
2780+ r#async : false ,
27742781 if_not_exists : false ,
27752782 include,
27762783 nulls_distinct : None ,
@@ -2827,6 +2834,7 @@ fn parse_create_brin() {
28272834 columns,
28282835 unique : false ,
28292836 concurrently : false ,
2837+ r#async : false ,
28302838 if_not_exists : false ,
28312839 include,
28322840 nulls_distinct : None ,
@@ -2894,6 +2902,7 @@ fn parse_create_index_concurrently() {
28942902 columns,
28952903 unique,
28962904 concurrently,
2905+ r#async,
28972906 if_not_exists,
28982907 include,
28992908 nulls_distinct : None ,
@@ -2907,6 +2916,7 @@ fn parse_create_index_concurrently() {
29072916 assert_eq ! ( None , using) ;
29082917 assert ! ( !unique) ;
29092918 assert ! ( concurrently) ;
2919+ assert ! ( !r#async) ;
29102920 assert ! ( if_not_exists) ;
29112921 assert_eq_vec ( & [ "col1" , "col2" ] , & columns) ;
29122922 assert ! ( include. is_empty( ) ) ;
@@ -2918,6 +2928,58 @@ fn parse_create_index_concurrently() {
29182928 }
29192929}
29202930
2931+ #[ test]
2932+ fn parse_create_index_async ( ) {
2933+ let sql = "CREATE INDEX ASYNC my_index ON my_table(col1)" ;
2934+ match pg ( ) . verified_stmt ( sql) {
2935+ Statement :: CreateIndex ( CreateIndex {
2936+ name : Some ( ObjectName ( name) ) ,
2937+ table_name : ObjectName ( table_name) ,
2938+ using,
2939+ columns,
2940+ unique,
2941+ concurrently,
2942+ r#async,
2943+ if_not_exists,
2944+ include,
2945+ nulls_distinct : None ,
2946+ with,
2947+ predicate : None ,
2948+ index_options,
2949+ alter_options,
2950+ } ) => {
2951+ assert_eq_vec ( & [ "my_index" ] , & name) ;
2952+ assert_eq_vec ( & [ "my_table" ] , & table_name) ;
2953+ assert_eq ! ( None , using) ;
2954+ assert ! ( !unique) ;
2955+ assert ! ( !concurrently) ;
2956+ assert ! ( r#async) ;
2957+ assert ! ( !if_not_exists) ;
2958+ assert_eq_vec ( & [ "col1" ] , & columns) ;
2959+ assert ! ( include. is_empty( ) ) ;
2960+ assert ! ( with. is_empty( ) ) ;
2961+ assert ! ( index_options. is_empty( ) ) ;
2962+ assert ! ( alter_options. is_empty( ) ) ;
2963+ }
2964+ _ => unreachable ! ( ) ,
2965+ }
2966+
2967+ let sql = "CREATE UNIQUE INDEX ASYNC my_index ON my_table(col1)" ;
2968+ match pg ( ) . verified_stmt ( sql) {
2969+ Statement :: CreateIndex ( CreateIndex {
2970+ unique,
2971+ concurrently,
2972+ r#async,
2973+ ..
2974+ } ) => {
2975+ assert ! ( unique) ;
2976+ assert ! ( !concurrently) ;
2977+ assert ! ( r#async) ;
2978+ }
2979+ _ => unreachable ! ( ) ,
2980+ }
2981+ }
2982+
29212983#[ test]
29222984fn parse_create_index_with_predicate ( ) {
29232985 let sql = "CREATE INDEX IF NOT EXISTS my_index ON my_table(col1, col2) WHERE col3 IS NULL" ;
@@ -2929,6 +2991,7 @@ fn parse_create_index_with_predicate() {
29292991 columns,
29302992 unique,
29312993 concurrently,
2994+ r#async,
29322995 if_not_exists,
29332996 include,
29342997 nulls_distinct : None ,
@@ -2942,6 +3005,7 @@ fn parse_create_index_with_predicate() {
29423005 assert_eq ! ( None , using) ;
29433006 assert ! ( !unique) ;
29443007 assert ! ( !concurrently) ;
3008+ assert ! ( !r#async) ;
29453009 assert ! ( if_not_exists) ;
29463010 assert_eq_vec ( & [ "col1" , "col2" ] , & columns) ;
29473011 assert ! ( include. is_empty( ) ) ;
@@ -2964,6 +3028,7 @@ fn parse_create_index_with_include() {
29643028 columns,
29653029 unique,
29663030 concurrently,
3031+ r#async,
29673032 if_not_exists,
29683033 include,
29693034 nulls_distinct : None ,
@@ -2977,6 +3042,7 @@ fn parse_create_index_with_include() {
29773042 assert_eq ! ( None , using) ;
29783043 assert ! ( !unique) ;
29793044 assert ! ( !concurrently) ;
3045+ assert ! ( !r#async) ;
29803046 assert ! ( if_not_exists) ;
29813047 assert_eq_vec ( & [ "col1" , "col2" ] , & columns) ;
29823048 assert_eq_vec ( & [ "col3" , "col4" ] , & include) ;
@@ -2999,6 +3065,7 @@ fn parse_create_index_with_nulls_distinct() {
29993065 columns,
30003066 unique,
30013067 concurrently,
3068+ r#async,
30023069 if_not_exists,
30033070 include,
30043071 nulls_distinct : Some ( nulls_distinct) ,
@@ -3012,6 +3079,7 @@ fn parse_create_index_with_nulls_distinct() {
30123079 assert_eq ! ( None , using) ;
30133080 assert ! ( !unique) ;
30143081 assert ! ( !concurrently) ;
3082+ assert ! ( !r#async) ;
30153083 assert ! ( if_not_exists) ;
30163084 assert_eq_vec ( & [ "col1" , "col2" ] , & columns) ;
30173085 assert ! ( include. is_empty( ) ) ;
@@ -3032,6 +3100,7 @@ fn parse_create_index_with_nulls_distinct() {
30323100 columns,
30333101 unique,
30343102 concurrently,
3103+ r#async,
30353104 if_not_exists,
30363105 include,
30373106 nulls_distinct : Some ( nulls_distinct) ,
@@ -3045,6 +3114,7 @@ fn parse_create_index_with_nulls_distinct() {
30453114 assert_eq ! ( None , using) ;
30463115 assert ! ( !unique) ;
30473116 assert ! ( !concurrently) ;
3117+ assert ! ( !r#async) ;
30483118 assert ! ( if_not_exists) ;
30493119 assert_eq_vec ( & [ "col1" , "col2" ] , & columns) ;
30503120 assert ! ( include. is_empty( ) ) ;
0 commit comments