You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2021/08/02 16:55:41 UTC

[GitHub] [airflow] cansjt edited a comment on issue #17374: The new weberser does not seem to care about AIRFLOW__CORE__SQL_ALCHEMY_SCHEMA

cansjt edited a comment on issue #17374:
URL: https://github.com/apache/airflow/issues/17374#issuecomment-891177075


   FYI here is the SQL script I used to move things around:
   ```sql
   TRUNCATE TABLE airflow.ab_permission ;
   TRUNCATE TABLE airflow.ab_view_menu ;
   TRUNCATE TABLE airflow.ab_user_role ;
   TRUNCATE TABLE airflow.ab_role ;
   TRUNCATE TABLE airflow.ab_user ;
   TRUNCATE TABLE airflow.ab_register_user ;
   TRUNCATE TABLE airflow.ab_permission_view_role ;
   TRUNCATE TABLE airflow.ab_permission_view ;
   INSERT INTO airflow.ab_permission (name) SELECT name FROM public.ab_permission ;
   INSERT INTO airflow.ab_view_menu (name) SELECT name FROM public.ab_view_menu ;
   INSERT INTO airflow.ab_role (name) SELECT name FROM public.ab_role ;
   INSERT INTO airflow.ab_user (first_name,
                                last_name,
                                username,
                                password,
                                active,
                                email,
                                last_login,
                                login_count,
                                fail_login_count,
                                created_on,
                                changed_on,
                                created_by_fk,
                                changed_by_fk)
       SELECT
           first_name,
           last_name,
           username,
           password,
           active,
           email,
           last_login,
           login_count,
           fail_login_count,
           created_on,
           changed_on,
           created_by_fk,
           changed_by_fk
       FROM public.ab_user ;
   INSERT INTO airflow.ab_register_user (first_name,
                                         last_name,
                                         username,
                                         password,
                                         email,
                                         registration_date,
                                         registration_hash)
       SELECT
           first_name,
           last_name,
           username,
           password,
           email,
           registration_date,
           registration_hash
       FROM public.ab_register_user ;
   INSERT INTO airflow.ab_user_role (user_id, role_id)
       SELECT
           au.id AS user_id,
           ar.id AS role_id
       FROM
           public.ab_user_role  AS pur
           JOIN public.ab_user  AS pu  ON pur.user_id = pu.id
           JOIN public.ab_role  AS pr  ON pur.role_id = pr.id
           JOIN airflow.ab_user AS au  ON pu.username = au.username
           JOIN airflow.ab_role AS ar  ON pr.name     = ar.name
       ;
   INSERT INTO airflow.ab_permission_view (permission_id, view_menu_id)
       SELECT
           ap.id  AS permission_id,
           avm.id AS view_menu_id
       FROM
           public.ab_permission_view  AS ppv
           JOIN public.ab_permission  AS pp  ON ppv.permission_id = pp.id
           JOIN public.ab_view_menu   AS pvm ON ppv.view_menu_id  = pvm.id
           JOIN airflow.ab_view_menu  AS avm ON pvm.name          = avm.name
           JOIN airflow.ab_permission AS ap  ON ap.name           = pp.name
       ;
   INSERT INTO airflow.ab_permission_view_role (permission_view_id, role_id)
       SELECT
           pv_map.schema_permission_view_id AS permission_view_id,
           ar.id  AS role_id
       FROM
           public.ab_permission_view_role AS ppvr
           JOIN (SELECT
                     ppv.id AS public_permission_view_id,
                     apv.id AS schema_permission_view_id
                 FROM
                     public.ab_permission_view  AS ppv
                     JOIN public.ab_permission  AS pp  ON ppv.permission_id = pp.id
                     JOIN public.ab_view_menu   AS pvm ON ppv.view_menu_id  = pvm.id
                     JOIN airflow.ab_view_menu  AS avm ON pvm.name          = avm.name
                     JOIN airflow.ab_permission AS ap  ON ap.name           = pp.name
                     JOIN airflow.ab_permission_view AS apv
                         ON apv.view_menu_id = avm.id AND apv.permission_id = ap.id
            ) AS pv_map ON ppvr.permission_view_id = pv_map.public_permission_view_id
           JOIN public.ab_role                 AS pr   ON ppvr.role_id            = pr.id
           JOIN airflow.ab_role                AS ar   ON pr.name                 = ar.name
       ;
   ```
   Ensures, in the most portable way I could think of, that there will be no issues with ID (or sequences or whatever).
   Controlled things went okay with these ones. They should not return any row, if everything went fine:
   ```sql
   SELECT
       ar.name,
       avm.name,
       ap.name
   FROM
       airflow.ab_permission_view_role AS apvr
       JOIN airflow.ab_permission_view AS apv ON apv.id = apvr.permission_view_id
       JOIN airflow.ab_view_menu AS avm ON avm.id = apv.view_menu_id
       JOIN airflow.ab_role AS ar ON ar.id = apvr.role_id
       JOIN airflow.ab_permission AS ap ON ap.id = apv.permission_id
   EXCEPT
       SELECT
           pr.name,
           pvm.name,
           pp.name
       FROM
           public.ab_permission_view_role AS ppvr
           JOIN public.ab_permission_view AS ppv ON ppv.id = ppvr.permission_view_id
           JOIN public.ab_view_menu AS pvm ON pvm.id = ppv.view_menu_id
           JOIN public.ab_role AS pr ON pr.id = ppvr.role_id
           JOIN public.ab_permission AS pp ON pp.id = ppv.permission_id
   ;
   SELECT
       au.username,
       ar.name
   FROM
       airflow.ab_user_role AS aur
       JOIN airflow.ab_user AS au ON aur.user_id = au.id
       JOIN airflow.ab_role AS ar ON ar.id = aur.role_id
   EXCEPT
       SELECT
           pu.username,
           pr.name
       FROM
           public.ab_user_role AS pur
           JOIN public.ab_user AS pu ON pur.user_id = pu.id
           JOIN public.ab_role AS pr ON pr.id = pur.role_id
   ;
   ```
   And to clean up:
   ```sql
   DROP TABLE public.ab_permission ;
   DROP TABLE public.ab_view_menu ;
   DROP TABLE public.ab_user_role ;
   DROP TABLE public.ab_role ;
   DROP TABLE public.ab_user ;
   DROP TABLE public.ab_register_user ;
   DROP TABLE public.ab_permission_view_role ;
   DROP TABLE public.ab_permission_view ;
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org