@@ -639,7 +639,7 @@ fn test_create_trigger() {
639639 assert ! ( !or_replace) ;
640640 assert ! ( !is_constraint) ;
641641 assert_eq ! ( name. to_string( ) , "trg_inherit_asset_models" ) ;
642- assert_eq ! ( period, TriggerPeriod :: After ) ;
642+ assert_eq ! ( period, Some ( TriggerPeriod :: After ) ) ;
643643 assert ! ( period_before_table) ;
644644 assert_eq ! ( events, vec![ TriggerEvent :: Insert ] ) ;
645645 assert_eq ! ( table_name. to_string( ) , "assets" ) ;
@@ -685,7 +685,7 @@ fn test_create_trigger() {
685685 assert ! ( !or_replace) ;
686686 assert ! ( !is_constraint) ;
687687 assert_eq ! ( name. to_string( ) , "log_new_user" ) ;
688- assert_eq ! ( period, TriggerPeriod :: After ) ;
688+ assert_eq ! ( period, Some ( TriggerPeriod :: After ) ) ;
689689 assert ! ( period_before_table) ;
690690 assert_eq ! ( events, vec![ TriggerEvent :: Insert ] ) ;
691691 assert_eq ! ( table_name. to_string( ) , "users" ) ;
@@ -725,7 +725,7 @@ fn test_create_trigger() {
725725 assert ! ( !or_replace) ;
726726 assert ! ( !is_constraint) ;
727727 assert_eq ! ( name. to_string( ) , "cleanup_orders" ) ;
728- assert_eq ! ( period, TriggerPeriod :: After ) ;
728+ assert_eq ! ( period, Some ( TriggerPeriod :: After ) ) ;
729729 assert ! ( period_before_table) ;
730730 assert_eq ! ( events, vec![ TriggerEvent :: Delete ] ) ;
731731 assert_eq ! ( table_name. to_string( ) , "customers" ) ;
@@ -765,7 +765,7 @@ fn test_create_trigger() {
765765 assert ! ( !or_replace) ;
766766 assert ! ( !is_constraint) ;
767767 assert_eq ! ( name. to_string( ) , "trg_before_update" ) ;
768- assert_eq ! ( period, TriggerPeriod :: Before ) ;
768+ assert_eq ! ( period, Some ( TriggerPeriod :: Before ) ) ;
769769 assert ! ( period_before_table) ;
770770 assert_eq ! ( events, vec![ TriggerEvent :: Update ( Vec :: new( ) ) ] ) ;
771771 assert_eq ! ( table_name. to_string( ) , "products" ) ;
@@ -809,7 +809,7 @@ fn test_create_trigger() {
809809 assert ! ( !or_replace) ;
810810 assert ! ( !is_constraint) ;
811811 assert_eq ! ( name. to_string( ) , "trg_instead_of_insert" ) ;
812- assert_eq ! ( period, TriggerPeriod :: InsteadOf ) ;
812+ assert_eq ! ( period, Some ( TriggerPeriod :: InsteadOf ) ) ;
813813 assert ! ( period_before_table) ;
814814 assert_eq ! ( events, vec![ TriggerEvent :: Insert ] ) ;
815815 assert_eq ! ( table_name. to_string( ) , "my_view" ) ;
@@ -850,7 +850,7 @@ fn test_create_trigger() {
850850 assert ! ( !or_replace) ;
851851 assert ! ( !is_constraint) ;
852852 assert_eq ! ( name. to_string( ) , "temp_trigger" ) ;
853- assert_eq ! ( period, TriggerPeriod :: After ) ;
853+ assert_eq ! ( period, Some ( TriggerPeriod :: After ) ) ;
854854 assert ! ( period_before_table) ;
855855 assert_eq ! ( events, vec![ TriggerEvent :: Insert ] ) ;
856856 assert_eq ! ( table_name. to_string( ) , "temp_table" ) ;
@@ -863,6 +863,50 @@ fn test_create_trigger() {
863863 }
864864 _ => unreachable ! ( "Expected CREATE TRIGGER statement" ) ,
865865 }
866+
867+ // We test a trigger defined without a period (BEFORE/AFTER/INSTEAD OF)
868+ let statement7 = "CREATE TRIGGER trg_inherit_asset_models INSERT ON assets FOR EACH ROW BEGIN INSERT INTO users (name) SELECT pam.name FROM users AS pam; END" ;
869+ match sqlite ( ) . verified_stmt ( statement7) {
870+ Statement :: CreateTrigger ( CreateTrigger {
871+ or_alter,
872+ temporary,
873+ or_replace,
874+ is_constraint,
875+ name,
876+ period,
877+ period_before_table,
878+ events,
879+ table_name,
880+ referenced_table_name,
881+ referencing,
882+ trigger_object,
883+ condition,
884+ exec_body : _,
885+ statements_as,
886+ statements : _,
887+ characteristics,
888+ } ) => {
889+ assert ! ( !or_alter) ;
890+ assert ! ( !temporary) ;
891+ assert ! ( !or_replace) ;
892+ assert ! ( !is_constraint) ;
893+ assert_eq ! ( name. to_string( ) , "trg_inherit_asset_models" ) ;
894+ assert_eq ! ( period, None ) ;
895+ assert ! ( period_before_table) ;
896+ assert_eq ! ( events, vec![ TriggerEvent :: Insert ] ) ;
897+ assert_eq ! ( table_name. to_string( ) , "assets" ) ;
898+ assert ! ( referenced_table_name. is_none( ) ) ;
899+ assert ! ( referencing. is_empty( ) ) ;
900+ assert_eq ! (
901+ trigger_object,
902+ Some ( TriggerObjectKind :: ForEach ( TriggerObject :: Row ) )
903+ ) ;
904+ assert ! ( condition. is_none( ) ) ;
905+ assert ! ( !statements_as) ;
906+ assert ! ( characteristics. is_none( ) ) ;
907+ }
908+ _ => unreachable ! ( "Expected CREATE TRIGGER statement" ) ,
909+ }
866910}
867911
868912#[ test]
0 commit comments