[drupal-devel] [task] Removed plpgsql dependency for PostgreSQL users by updating (pg)SQL function definitions
Issue status update for http://drupal.org/node/26091 Project: Drupal Version: cvs Component: postgresql database Category: tasks Priority: normal Assigned to: Anonymous Reported by: Smirnov Updated by: Smirnov Status: patch Attachment: http://drupal.org/files/issues/database.pgsql_4.patch (1.85 KB) In /database/database.pgsql/ many of the functions such as *greatest(integer, integer)* were defined with /plpgsql/. This patch simply changes the definitions a bit to use regular SQL (SELECT) -- so users won't have to load /plpgsql/ with /createlang/ anymore. In addition, I have updated the *IF(expr1,expr2,expr3)* function to reflect MySQL's definition of it [1]. Before *expr1* always had to be passed as a /boolean/, and now it is /anyelement/. Also now *expr1* is true if it's both NOT NULL and 0. Anyways, this means that if Drupal modules are passing integers when using the sql *IF()* function, the query will now work. NOTE: The IF() function is not ANSI SQL, perhaps in a later patch we can replace all usage of it with CASE? [1] http://dev.mysql.com/doc/mysql/en/control-flow-functions.html Smirnov
Issue status update for http://drupal.org/node/26091 Project: Drupal Version: cvs Component: postgresql database Category: tasks Priority: normal Assigned to: Anonymous Reported by: Smirnov Updated by: Smirnov Status: patch Attachment: http://drupal.org/files/issues/INSTALL.txt.patch (removes plpgsql) (594 bytes) If this issue to add installation instructions for PG [1] gets approved and committed then please use this patch to update /INSTALL.txt/ so that it no longer mentions plpgsql. [1] http://drupal.org/node/25792 Smirnov Previous comments: ------------------------------------------------------------------------ June 30, 2005 - 07:32 : Smirnov Attachment: http://drupal.org/files/issues/database.pgsql_4.patch (1.85 KB) In /database/database.pgsql/ many of the functions such as *greatest(integer, integer)* were defined with /plpgsql/. This patch simply changes the definitions a bit to use regular SQL (SELECT) -- so users won't have to load /plpgsql/ with /createlang/ anymore. In addition, I have updated the *IF(expr1,expr2,expr3)* function to reflect MySQL's definition of it [2]. Before *expr1* always had to be passed as a /boolean/, and now it is /anyelement/. Also now *expr1* is true if it's both NOT NULL and 0. Anyways, this means that if Drupal modules are passing integers when using the sql *IF()* function, the query will now work. NOTE: The IF() function is not ANSI SQL, perhaps in a later patch we can replace all usage of it with CASE? [2] http://dev.mysql.com/doc/mysql/en/control-flow-functions.html
Issue status update for http://drupal.org/node/26091 Post a follow up: http://drupal.org/project/comments/add/26091 Project: Drupal Version: cvs Component: postgresql database Category: tasks Priority: normal Assigned to: Anonymous Reported by: Smirnov Updated by: Dries Status: patch Waiting for a review from Adrian. I don't have a PostgreSQL setup. Dries Previous comments: ------------------------------------------------------------------------ June 30, 2005 - 18:32 : Smirnov Attachment: http://drupal.org/files/issues/database.pgsql_4.patch (1.85 KB) In /database/database.pgsql/ many of the functions such as *greatest(integer, integer)* were defined with /plpgsql/. This patch simply changes the definitions a bit to use regular SQL (SELECT) -- so users won't have to load /plpgsql/ with /createlang/ anymore. In addition, I have updated the *IF(expr1,expr2,expr3)* function to reflect MySQL's definition of it [1]. Before *expr1* always had to be passed as a /boolean/, and now it is /anyelement/. Also now *expr1* is true if it's both NOT NULL and 0. Anyways, this means that if Drupal modules are passing integers when using the sql *IF()* function, the query will now work. NOTE: The IF() function is not ANSI SQL, perhaps in a later patch we can replace all usage of it with CASE? [1] http://dev.mysql.com/doc/mysql/en/control-flow-functions.html ------------------------------------------------------------------------ June 30, 2005 - 18:33 : Smirnov Attachment: http://drupal.org/files/issues/INSTALL.txt.patch (removes plpgsql) (594 bytes) If this issue to add installation instructions for PG [2] gets approved and committed then please use this patch to update /INSTALL.txt/ so that it no longer mentions plpgsql. [2] http://drupal.org/node/25792
Issue status update for http://drupal.org/node/26091 Post a follow up: http://drupal.org/project/comments/add/26091 Project: Drupal Version: cvs Component: postgresql database Category: tasks Priority: normal Assigned to: Anonymous Reported by: Smirnov Updated by: Cvbge Status: patch (code needs review) About function 'greatest': according to mysql documentation: " Before MySQL 5.0.13, GREATEST() returns NULL only if all arguments are NULL. As of 5.0.13, it returns NULL if any argument is NULL. " Which one should PostgreSQL support? Now it supports < 5.0.13 Also, mysql's greates() can compare any type. Postgresql's version can only compare integer types. I don't know if it is possibile to write function/functions that can compare any type the way mysql does it. Cvbge Previous comments: ------------------------------------------------------------------------ Thu, 30 Jun 2005 16:32:34 +0000 : Smirnov Attachment: http://drupal.org/files/issues/database.pgsql_4.patch (1.85 KB) In /database/database.pgsql/ many of the functions such as *greatest(integer, integer)* were defined with /plpgsql/. This patch simply changes the definitions a bit to use regular SQL (SELECT) -- so users won't have to load /plpgsql/ with /createlang/ anymore. In addition, I have updated the *IF(expr1,expr2,expr3)* function to reflect MySQL's definition of it [1]. Before *expr1* always had to be passed as a /boolean/, and now it is /anyelement/. Also now *expr1* is true if it's both NOT NULL and 0. Anyways, this means that if Drupal modules are passing integers when using the sql *IF()* function, the query will now work. NOTE: The IF() function is not ANSI SQL, perhaps in a later patch we can replace all usage of it with CASE? [1] http://dev.mysql.com/doc/mysql/en/control-flow-functions.html ------------------------------------------------------------------------ Thu, 30 Jun 2005 16:33:47 +0000 : Smirnov Attachment: http://drupal.org/files/issues/INSTALL.txt.patch (removes plpgsql) (594 bytes) If this issue to add installation instructions for PG [2] gets approved and committed then please use this patch to update /INSTALL.txt/ so that it no longer mentions plpgsql. [2] http://drupal.org/node/25792 ------------------------------------------------------------------------ Sun, 03 Jul 2005 15:43:28 +0000 : Dries Waiting for a review from Adrian. I don't have a PostgreSQL setup.
participants (3)
-
Cvbge -
Dries -
Smirnov