Plop,

Je viens de voir passer les tickets sur les incompatibilités sqlite et ces
^$^'(é"( de UPDATE et DELETE pas supportés de manière uniforme selon les
drivers.

Je propose une approche radicale : faire une requête uniforme à base de
select imbriqué, qui permettra de virer ces tests de drivers dans dcBlog,
et ce pour la prochaine version 2.6.X.

En clair, ce qui va changer :

Dans delComments :
DELETE FROM dc_comment tc
USING dc_post tp
WHERE tc.post_id = tp.post_id '.
AND tp.blog_id = 'default'
AND comment_id in (...)
AND user_id='...'

deviendra :
DELETE FROM dc_comment
WHERE comment_id in (..)
AND post_id in (SELECT tp.post_id from dc_post where tp.blog_id='default'
and tp.user_id='...');


Dans delJunkComments on aura un truc du genre :
DELETE FROM dc_comment
WHERE comment_status = -1
AND post_id in (
    SELECT tp.post_id
    FROM dc_post
    WHERE tp.blog_id='default'
    AND tp.user_id='...'
);


dans updComments:
UPDATE dc_comment tc
SET comment_status = '...'
FROM dc_post tp
WHERE blog_id = 'default'
AND comment_id in (...)
AND tc.post_id = tp.post_id
AND user_id = '...'

deviendra :
UPDATE dc_comment
SET comment_status = '...'
WHERE post_id in (
    SELECT tp.post_id
    FROM dc_post tp
    WHERE tp.blog_id = 'default'
    AND tp.user_id = '...'
)

Des objections ?

--
Bruno
-- 
Dev mailing list - [email protected] - http://ml.dotclear.org/listinfo/dev

Répondre à