anchor.diff:  column_def_opt_list -> '$empty'                                                                 : [].
   column_def_opt_list -> column_def_opt_list column_def_opt                                       : '$1' ++ ['$2'].
   
  -column_def_opt -> NOT NULLX                                                                     : 'not_nullx'.
  -column_def_opt -> NOT NULLX UNIQUE                                                              : 'not_nullx_unique'.
  -column_def_opt -> NOT NULLX PRIMARY KEY                                                         : 'not_nullx_primary_key'.
  +column_def_opt -> NOT NULLX                                                                     : 'not nullx'.
  +column_def_opt -> NOT NULLX UNIQUE                                                              : 'not nullx unique'.
  +column_def_opt -> NOT NULLX PRIMARY KEY                                                         : 'not nullx primary key'.
   column_def_opt -> DEFAULT function_ref                                                          : {'default', '$2'}.
   column_def_opt -> DEFAULT literal                                                               : {'default', '$2'}.
   column_def_opt -> DEFAULT NULLX                                                                 : {'default', 'nullx'}.
  
positive.code:     %% query expressions
  
  query_exp -> query_term                                                                         : '$1'.
  query_exp -> query_exp UNION query_term                                                         : {union, '$1', '$3'}.
  query_exp -> query_exp UNION ALL query_term                                                     : {union_all, '$1', '$4'}.
  query_exp -> query_exp INTERSECT query_term                                                     : {intersect, '$1', '$3'}.
  query_exp -> query_exp MINUS query_term                                                         : {minus, '$1', '$3'}.
  
  query_term -> query_spec                                                                        : '$1'.
  query_term -> '(' query_exp ')'                                                                 : '$2'.
  
negative.code: tbl_type -> ORDERED_SET                                                                         : [{'type', 'ordered_set'}].
  tbl_type -> BAG                                                                                 : [{'type', 'bag'}].
  
  alter_user_def -> ALTER USER user_list proxy_clause                                             : {'alter user', '$3', '$4'}.
  alter_user_def -> ALTER USER NAME spec_list                                                     : {'alter user', unwrap_bin('$3'), {'spec', '$4'}}.
  
  drop_user_def -> DROP USER NAME                                                                 : {'drop user', unwrap_bin('$3'), []}.
  drop_user_def -> DROP USER NAME CASCADE                                                         : {'drop user', unwrap_bin('$3'), ['cascade']}.
  
  user_list -> NAME                                                                               : [unwrap_bin('$1')].
  user_list -> NAME user_list                                                                     : [unwrap_bin('$1')] ++ '$2'.
  
  proxy_clause -> GRANT CONNECT THROUGH ENTERPRISE USERS                                          : {'grant connect', 'enterprise users'}.
  proxy_clause -> GRANT REVOKE THROUGH ENTERPRISE USERS                                           : {'grant revoke', 'enterprise users'}.
  proxy_clause -> GRANT REVOKE THROUGH NAME                                                       : {'grant revoke', unwrap_bin('$4')}.
  
  spec_list -> identified                                                                         : ['$1'].
  spec_list -> user_opt                                                                           : '$1'.
  spec_list -> user_role                                                                          : ['$1'].
  spec_list -> spec_list spec_list                                                                : ['$1'] ++ ['$2'].
  
  user_role -> DEFAULT ROLE ALL                                                                   : 'role all'.
  user_role -> DEFAULT ROLE ALL EXCEPT role_list                                                  : {'role except', '$5'}.
  user_role -> DEFAULT ROLE NONE                                                                  : 'role none'.
  user_role -> DEFAULT ROLE role_list                                                             : {'role', '$3'}.
  
  role_list -> NAME                                                                               : [unwrap_bin('$1')].
  role_list -> NAME role_list                                                                     : [unwrap_bin('$1')] ++ '$2'.
  
  identified -> IDENTIFIED BY NAME                                                                : {'identified by', unwrap_bin('$3')}.
  identified -> IDENTIFIED EXTERNALLY opt_as                                                      : {'identified extern', '$3'}.
  identified -> IDENTIFIED GLOBALLY opt_as                                                        : {'identified globally', '$3'}.
  
  opt_as -> '$empty'                                                                              : {}.
  opt_as -> AS NAME                                                                               : {'as', unwrap_bin('$2')}.
  