Statistik bug bzw. cast as Bug für pg DB

Hallo ,

ich bin recht neu beim ausprobieren mit spip.
daher nur dieser Patch an die mailingliste in der Hoffnung jemand kann
damit was anfangen.

Wenn man spip svn mit postgres installiert funktioniert die statistik
sachen net.

Zu erst fehlen ein paar Funktionen die mysql spezifisch ist.
Als Workaround hab ich diese hier erzeugt:
(diese sind im Netz zu finden als workaround)

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';

Dann kommt das Problem das pg.php in orderby handling alle " as *" aus
der OrderBy Liste haut, was ja in ordnung ist.
Nur sollte man dies nciht bei casts tun.
Der nachfolgende workaround nutzt eine alternative cast syntax der das
überlebt.

Ist nur beispielhaft. Ich weiß aber net ob das auch mit mysql geht.

Index: ecrire/req/pg.php

--- ecrire/req/pg.php (Revision 12458)
+++ ecrire/req/pg.php (Arbeitskopie)
@@ -393,7 +393,7 @@
                            ' EXTRACT(epoch FROM NOW())', $res);

        $res = preg_replace('/UNIX_TIMESTAMP\s*[(]([^)]*)[)]/',
- ' EXTRACT(epoch FROM \1)', $res);
+ ' int4(EXTRACT(epoch FROM \1))', $res);

        $res =
preg_replace('/\bDAYOFMONTH\s*[(]([^()]*([(][^()]*[)][^()]*)*[^)]*)[)]/',

Wird in die Richtung überhaupt entwickelt ?

danke, ich sende das weiter an die französische Entwickler-Mailingliste (die sprechen übrigens auch Englisch).
klaus++

Gabor Janak schrieb:

Hallo ,

ich bin recht neu beim ausprobieren mit spip.
daher nur dieser Patch an die mailingliste in der Hoffnung jemand kann
damit was anfangen.

Wenn man spip svn mit postgres installiert funktioniert die statistik
sachen net.

Zu erst fehlen ein paar Funktionen die mysql spezifisch ist.
Als Workaround hab ich diese hier erzeugt:
(diese sind im Netz zu finden als workaround)

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';

Dann kommt das Problem das pg.php in orderby handling alle " as *" aus
der OrderBy Liste haut, was ja in ordnung ist.
Nur sollte man dies nciht bei casts tun.
Der nachfolgende workaround nutzt eine alternative cast syntax der das
überlebt.

Ist nur beispielhaft. Ich weiß aber net ob das auch mit mysql geht.

Index: ecrire/req/pg.php

--- ecrire/req/pg.php (Revision 12458)
+++ ecrire/req/pg.php (Arbeitskopie)
@@ -393,7 +393,7 @@
                            ' EXTRACT(epoch FROM NOW())', $res);

        $res = preg_replace('/UNIX_TIMESTAMP\s*[(]([^)]*)[)]/',
- ' EXTRACT(epoch FROM \1)', $res);
+ ' int4(EXTRACT(epoch FROM \1))', $res);

        $res =
preg_replace('/\bDAYOFMONTH\s*[(]([^()]*([(][^()]*[)][^()]*)*[^)]*)[)]/',

Wird in die Richtung überhaupt entwickelt ?
_______________________________________________
Spip-de@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-de

Internal Virus Database is out of date.
Checked by AVG - http://www.avg.com Version: 8.0.138 / Virus Database: 270.6.9/1634 - Release Date: 25.08.2008 20:48