Thank you everyone for looking into this.

Looks like the problem is that  SQLAlchemy is generating query with 'order
by' part inside nested subquery, which is not supported by mariadb.

https://mariadb.com/kb/en/why-is-order-by-in-a-from-subquery-ignored/


SqlAlchemy generated query for getting moderators of selected mailing list:
SELECT
    anon_1.anon_2_member_id AS anon_1_anon_2_member_id,
    anon_1.anon_2_member__member_id AS anon_1_anon_2_member__member_id,
    anon_1.anon_2_member_role AS anon_1_anon_2_member_role,
    anon_1.anon_2_member_list_id AS anon_1_anon_2_member_list_id,
    anon_1.anon_2_member_moderation_action AS
anon_1_anon_2_member_moderation_action,
    anon_1.anon_2_member_address_id AS anon_1_anon_2_member_address_id,
    anon_1.anon_2_member_preferences_id AS
anon_1_anon_2_member_preferences_id,
    anon_1.anon_2_member_user_id AS anon_1_anon_2_member_user_id
FROM
    (
        SELECT
            anon_2.member_id AS anon_2_member_id,
            anon_2.member__member_id AS anon_2_member__member_id,
            anon_2.member_role AS anon_2_member_role,
            anon_2.member_list_id AS anon_2_member_list_id,
            anon_2.member_moderation_action AS
anon_2_member_moderation_action,
            anon_2.member_address_id AS anon_2_member_address_id,
            anon_2.member_preferences_id AS anon_2_member_preferences_id,
            anon_2.member_user_id AS anon_2_member_user_id,
            anon_2.address_email AS anon_2_address_email
        FROM
            (
                SELECT
                    `member`.id AS member_id,
                    `member`._member_id AS member__member_id,
                    `member`.`role` AS member_role,
                    `member`.list_id AS member_list_id,
                    `member`.moderation_action AS member_moderation_action,
                    `member`.address_id AS member_address_id,
                    `member`.preferences_id AS member_preferences_id,
                    `member`.user_id AS member_user_id,
                    address.email AS address_email
                FROM
                    `member`
                    INNER JOIN address ON address.id = `member`.address_id
                WHERE
                    `member`.list_id = 'snowflake.example.com'
                    AND `member`.`role` = 3
                UNION
                SELECT
                    `member`.id AS member_id,
                    `member`._member_id AS member__member_id,
                    `member`.`role` AS member_role,
                    `member`.list_id AS member_list_id,
                    `member`.moderation_action AS member_moderation_action,
                    `member`.address_id AS member_address_id,
                    `member`.preferences_id AS member_preferences_id,
                    `member`.user_id AS member_user_id,
                    address.email AS address_email
                FROM
                    `member`
                    INNER JOIN user ON user.id = `member`.user_id
                    INNER JOIN address ON user._preferred_address_id =
address.id
                WHERE
                    address.id = user._preferred_address_id
                    AND `member`.list_id = 'snowflake.example.com'
                    AND `member`.`role` = 3
            ) AS anon_2
        ORDER BY
            anon_2.member_list_id,
            anon_2.address_email,
            anon_2.member_role
    ) AS anon_1

On Wed, 1 Apr 2020 at 19:20, Abhilash Raj <maxk...@asynchronous.in> wrote:

> On Wed, Apr 1, 2020, at 10:10 AM, Stephen J. Turnbull wrote:
> > Brian Carpenter writes:
> >  > On 4/1/20 9:22 AM, Stephen J. Turnbull wrote:
> >
> >  > > Do you have the same version of the same DBMS backend in both?
> >  > > Same version of SQLAlchemy?
> >  >
> >  > Alphabetically in regards to email address.
> >
> > OK.  Thanks for confirming.
> >
> > What REST endpoint are you using?  http://SERVER:PORT/3.1/members?
> > Or http://SERVER:PORT/3.1/lists/LIST-POST/roster/member?
> > (SERVER, PORT, and LIST-POST are specific to your installation.
> > SERVER:PORT is likely localhost:9001, and LIST-POST is the posting
> > address of the list being queried.)
> >
> >  > We are using MySQL on the development server instead of Postgresql.
> We
> >  > tried different versions of SQLAlchemy as well. Same results.
> >
> > Do you mean you have MySQL on one server, and PostgreSQL on another,
> > and only one is misbehaving?  If so, which one?
> >
> > At this point, I can't see anything wrong with the Mailman code.
> > Maybe somebody else will.
>
> The relevant code is here[1], I think, I haven't dug deeper. The order
> defined in the group is basically:
>
>    order = (Member.list_id, Address.email, Member.role)
>
>
> [1]:
> https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/model/subscriptions.py#L79
>
> Th
> > _______________________________________________
> > Mailman-Developers mailing list -- mailman-developers@python.org
> > To unsubscribe send an email to mailman-developers-le...@python.org
> > https://mail.python.org/mailman3/lists/mailman-developers.python.org/
> > Mailman FAQ: https://wiki.list.org/x/AgA3
> >
> > Security Policy: https://wiki.list.org/x/QIA9
> >
>
> --
>   thanks,
>   Abhilash Raj (maxking)
> _______________________________________________
> Mailman-Developers mailing list -- mailman-developers@python.org
> To unsubscribe send an email to mailman-developers-le...@python.org
> https://mail.python.org/mailman3/lists/mailman-developers.python.org/
> Mailman FAQ: https://wiki.list.org/x/AgA3
>
> Security Policy: https://wiki.list.org/x/QIA9
>
_______________________________________________
Mailman-Developers mailing list -- mailman-developers@python.org
To unsubscribe send an email to mailman-developers-le...@python.org
https://mail.python.org/mailman3/lists/mailman-developers.python.org/
Mailman FAQ: https://wiki.list.org/x/AgA3

Security Policy: https://wiki.list.org/x/QIA9

Reply via email to