[Greater-commits] r246 - trunk/GREAT-ER-DB/impl/postgresql

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Jun 22 17:31:21 CEST 2011


Author: bricks
Date: 2011-06-22 17:31:19 +0200 (Wed, 22 Jun 2011)
New Revision: 246

Modified:
   trunk/GREAT-ER-DB/impl/postgresql/gdagreater_pg.pgc
Log:
Additional fixes for insert and delete user function

deactivate buggy code which uses uninitialized variables
user upper in select for already existing user. postgres stores username in lowercase
drop role user also in delete function


Modified: trunk/GREAT-ER-DB/impl/postgresql/gdagreater_pg.pgc
===================================================================
--- trunk/GREAT-ER-DB/impl/postgresql/gdagreater_pg.pgc	2011-06-22 14:43:13 UTC (rev 245)
+++ trunk/GREAT-ER-DB/impl/postgresql/gdagreater_pg.pgc	2011-06-22 15:31:19 UTC (rev 246)
@@ -24012,11 +24012,14 @@
   strcpy(h_con_name, db_con->con_name);
 
   EXEC SQL SET CONNECTION TO :h_con_name;
- 
+
+  /* uncommented due to usage of uninitalized memory
+   * the original intention of the code isn't clear
   errln = 10;
-  EXEC SQL SELECT :h_user.user_id INTO :h_user.user_id INDICATOR :h_ind_user_id;
+  EXEC SQL SELECT UPPER(:h_user.user_id) INTO :h_user.user_id INDICATOR :h_ind_user_id;
   
   if (h_ind_user_id == -1) strcpy (h_user.user_id, "");
+  */
   
   /* ---------------------------------------------------------------------
    * PRE-CHECK -> does user which is to be inserted exist as database user
@@ -24027,8 +24030,8 @@
 
   errln = 20;
   EXEC SQL SELECT COUNT(USENAME) INTO :h_count 
-             FROM PG_USER 
-            WHERE USENAME = :h_user.user_id;
+             FROM PG_USER
+            WHERE USENAME = LOWER(:h_user.user_id);
 
   if (h_count == 0)
   {
@@ -24346,6 +24349,7 @@
   long  h_phrase_grp_id;
   char  h_role_name[256];
   char  h_revoke_statement[300];
+  char  h_drop_statement[300];
   /* char  h_del_syn_statement[100];*/
   /* char  h_synonym[31];*/
   /* used for pre-check */
@@ -24615,8 +24619,14 @@
       }
     }
     endloop2:
-*/    
+*/
     
+    EXEC SQL WHENEVER NOT FOUND GOTO error;
+    errln = 320;
+    
+    sprintf (h_drop_statement, "DROP ROLE %s", h_user_id);
+    EXEC SQL EXECUTE IMMEDIATE :h_drop_statement;
+
     /* record successfully deleted */
     return(v_status);
 



More information about the Greater-commits mailing list