Home / Community / Blog / Błędy w zapytaniach SQL ezPublish 4.0.3

Błędy w zapytaniach SQL ezPublish 4.0.3

Pojawiał się błąd:

BŁĄD:  błąd składni w lub blisko "DESC"
LINE 14: ... FROM_UNIXTIME( ezcontentobject_attribute.data_int
) ) DESC

Żeby to poprawić to najpierw trzeba dodać funkcje które udają (emulują) MySQL'a (źródło):

CREATE OR REPLACE FUNCTION MONTH(TIMESTAMP without TIME ZONE)
RETURNS INTEGER AS $$ 
      SELECT EXTRACT(MONTH FROM $1)::INTEGER; 
$$ LANGUAGE SQL IMMUTABLE;

CREATE OR REPLACE FUNCTION MONTH(TIMESTAMP WITH TIME ZONE)
RETURNS INTEGER
AS $$
      SELECT EXTRACT(MONTH FROM $1)::INTEGER;
$$ LANGUAGE SQL STABLE;
CREATE OR REPLACE FUNCTION MONTH(DATE) RETURNS INTEGER
AS $$
      SELECT EXTRACT(MONTH FROM $1)::INTEGER;
$$ LANGUAGE SQL IMMUTABLE;

dodatkowo jeszcze:

CREATE OR REPLACE FUNCTION YEAR(TIMESTAMP without TIME ZONE)
RETURNS INTEGER AS $$ 
      SELECT EXTRACT(YEAR FROM $1)::INTEGER; 
$$ LANGUAGE SQL IMMUTABLE;

oraz konwersji czasu (źródło):

CREATE OR REPLACE FUNCTION from_unixtime(integer)
RETURNS timestamp AS '
 SELECT
 $1::abstime::timestamp without time zone AS result
 ' LANGUAGE 'SQL';

CREATE OR REPLACE FUNCTION unix_timestamp() RETURNS integer AS '
 SELECT
 ROUND(EXTRACT( EPOCH FROM abstime(now()) ))::int4 AS result;
 ' LANGUAGE 'SQL';

CREATE OR REPLACE FUNCTION unix_timestamp(timestamp with time zone)
RETURNS integer AS '
 SELECT
 ROUND(EXTRACT( EPOCH FROM ABSTIME($1) ))::int4 AS result;
 ' LANGUAGE 'SQL';

i na podstawie powyższych:

CREATE OR REPLACE FUNCTION unix_timestamp(text)
 RETURNS integer AS '
 SELECT
 ROUND(EXTRACT( EPOCH FROM ABSTIME($1) ))::int4 AS result;
 ' LANGUAGE 'SQL';

i na koniec:

CREATE OR REPLACE FUNCTION "concat"(int, text, int, text, int)
 RETURNS text AS '
 SELECT $1 || $2 || $3 || $4 || $5;
 ' LANGUAGE 'sql';

specjalnie dla zapytania w pliku extension/ezwebin/autoloads/ezarchive.php które też trzeba poprawić. W zapytaniu SQL w linii 54 jest błąd: GROUP BY nie służy do sortowania a poza tym skoro pola są zdefiniowane i nazwane to wystarczy użyć tej nazwy. Ja zmieniłem końcówkę na taką:

GROUP BY year, month
ORDER BY year DESC, month DESC

niestety na tym nie koniec. Pojawiają się kolejne błędy, ale o tym w następnym odcinku ...

Comments

Log in or create a user account to comment.

Just my blog...

Mon Tue Wed Thu Fri Sat Sun
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31