Odstránenie chybových hlásení z fóra na Drupal.SK
Na Drupal.SK sa po konverzii z Drupalu 4.6 na 4.7 a následne na Drupal 5.1 objavila jedna chyba, ktorú som si sprvu nevšimol (keďže nové príspevky nesledujem priamo z odkazu na fórum ale cez položku menu Posledné príspevky). Až neskôr na ňu upozornili niektorí používatelia. Povedal som si že ok, je to chyba niekde v PostgreSQL ale nemám priamo do databázy prístup tak asi nič neporiešim.
Dnes som si povedal že skúsim nahodiť phpPgAdmina (ktorý predtým nechcel na Drupal.SK bežať) a skúsim sa na to pozrieť. Super beŽalo to a tak som začal pátrať. Podľa chybovej hlášky ktorá ukazovala chybu na SQL otázke:
SELECT
ncs.last_comment_timestamp,
IF (ncs.last_comment_uid != 0, u2.name, ncs.last_comment_name) AS last_comment_name,
ncs.last_comment_uid
FROM node n
INNER JOIN users u1 ON n.uid = u1.uid
INNER JOIN term_node tn ON n.nid = tn.nid
INNER JOIN node_comment_statistics ncs ON n.nid = ncs.nid
INNER JOIN users u2 ON ncs.last_comment_uid=u2.uid
WHERE
n.status = 1 AND
n.type='forum' AND
tn.tid = 5
ORDER BY ncs.last_comment_timestamp DESC
LIMIT 1 OFFSET 0;
porovnaním s funkčnou inštaláciou Drupalu som zistil, že chyba je v definícii PL/PGSQL funkcie:
CREATE OR REPLACE FUNCTION if(boolean, anyelement, anyelement)
RETURNS anyelement AS
'SELECT CASE WHEN $1 THEN $2 ELSE $3 END;'
LANGUAGE 'sql' VOLATILE;
ktorú bolo treba nahradiť touto funkciou:
CREATE OR REPLACE FUNCTION if(boolean, text, text)
RETURNS text AS
'SELECT CASE WHEN $1 THEN $2 ELSE $3 END;'
LANGUAGE 'sql' VOLATILE;
S touto chybou sa pravdepodobne stretnete len pri nejakom rozsiahlejšom upgrade Drupalu, z novou inštaláciou by ste mali byť pred podobným chovaním bezpečný. A tak mi zostáva len pozdraviť,
Happy Drupaling!

Poslat nový komentář