Browse Source

Fixed Issue #1921174: used db_query instead of chado_query

Lacey Sanderson 12 years ago
parent
commit
c80656fca4
1 changed files with 36 additions and 28 deletions
  1. 36 28
      tripal_core/api/tripal_core.api.inc

+ 36 - 28
tripal_core/api/tripal_core.api.inc

@@ -352,7 +352,7 @@ function tripal_core_chado_insert($table, $values, $options = array()) {
   // if we have a result then add primary keys to return array
   if ($options['return_record'] == TRUE and $result) {
     if (array_key_exists('primary key', $table_desc) and is_array($table_desc['primary key'])) {
-      foreach ($table_desc['primary key'] as $field) {        
+      foreach ($table_desc['primary key'] as $field) {
         $sql = '';
         $psql = "PREPARE currval_" . $table . "_" . $field . " AS SELECT CURRVAL('" . $table . "_" . $field . "_seq')";
         $is_prepared = tripal_core_chado_prepare("currval_" . $table . "_" . $field, $psql, array());
@@ -360,21 +360,21 @@ function tripal_core_chado_insert($table, $values, $options = array()) {
         if ($is_prepared) {
            $value = db_result(chado_query("EXECUTE currval_". $table . "_" . $field));
            if (!$value) {
-            watchdog('tripal_core', "tripal_core_chado_insert: not able to retrieve primary key after insert: %sql", 
+            watchdog('tripal_core', "tripal_core_chado_insert: not able to retrieve primary key after insert: %sql",
               array('%sql' => $psql), WATCHDOG_ERROR);
-            return FALSE;  
-          }         
+            return FALSE;
+          }
         }
         else {
           $sql = "SELECT CURRVAL('" . $table . "_" . $field . "_seq')";
           $value =  db_result(chado_query($sql));
           if (!$value) {
-            watchdog('tripal_core', "tripal_core_chado_insert: not able to retrieve primary key after insert: %sql", 
+            watchdog('tripal_core', "tripal_core_chado_insert: not able to retrieve primary key after insert: %sql",
               array('%sql' => $sql), WATCHDOG_ERROR);
-            return FALSE;  
+            return FALSE;
           }
         }
-        $values[$field] = $value;        
+        $values[$field] = $value;
       }
     }
     return $values;
@@ -420,7 +420,7 @@ function tripal_core_chado_insert($table, $values, $options = array()) {
  *     record that was updated.  The returned record will have the fields provided
  *     but the primary key (if available for the table) will be added to the record.
  * @return
- *  On success this function returns TRUE. On failure, it returns FALSE.  
+ *  On success this function returns TRUE. On failure, it returns FALSE.
  *
  * Example usage:
  * @code
@@ -500,12 +500,12 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) {
     //print "NO STATEMENT (update): $table\n";
     //debug_print_backtrace();
   }
-  
+
   // get the table description
   $table_desc = tripal_core_get_chado_table_schema($table);
-  
-  // if the user wants us to return the record then we need to get the 
-  // unique primary key if one exists.  That way we can add it to the 
+
+  // if the user wants us to return the record then we need to get the
+  // unique primary key if one exists.  That way we can add it to the
   // values that get returned at the end of the function
   $pkeys = array();
   if ($options['return_record'] == TRUE) {
@@ -740,7 +740,7 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) {
     if ($options['is_prepared'] != TRUE and !tripal_core_is_sql_prepared($options['statement_name'])) {
       $status = chado_query($psql);
       if (!$status) {
-        watchdog('tripal_core', "tripal_core_chado_update: not able to prepare '%name' statement for: %sql", 
+        watchdog('tripal_core', "tripal_core_chado_update: not able to prepare '%name' statement for: %sql",
           array('%name' => $options['statement_name'], '%sql' => $sql), WATCHDOG_ERROR);
         return FALSE;
       }
@@ -757,7 +757,7 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) {
     // only if we have a single result do we want to add the primary keys to the values
     // array.  If the update matched many records we can't add the pkeys
 
-    if (count($pkeys) == 1) {      
+    if (count($pkeys) == 1) {
       foreach ($pkeys as $index => $pkey) {
         foreach ($pkey as $field => $fvalue) {
           $values[$field] = $fvalue;
@@ -2251,10 +2251,10 @@ function chado_query($sql) {
     // like Drupal tables are and then find those and prefix those with chado.
     $sql = preg_replace('/\n/', '', $sql);  // remove carriage returns
     // in the statement below we want to add 'chado.' to the beginning of each table
-    // we use the FROM keyword to look for tables, but FROM is also used in the 
-    // 'substring' function of postgres. But since table names can't start with 
+    // we use the FROM keyword to look for tables, but FROM is also used in the
+    // 'substring' function of postgres. But since table names can't start with
     // a number we exclude words numeric values. We also exclude tables that
-    // already have a schema prefix. 
+    // already have a schema prefix.
     $sql = preg_replace('/FROM\s+([^0123456789\(][^\.]*?)(\s|$)/i', 'FROM chado.\1 ', $sql);
     $sql = preg_replace('/INNER\s+JOIN\s+([^\.]*?)\s/i', 'INNER JOIN chado.\1 ', $sql);
   }
@@ -2824,17 +2824,17 @@ function tripal_db_set_default_search_path() {
 function tripal_core_is_sql_prepared($statement_name) {
   global $prepared_statements;
 
-  // check to see if the statement is prepared already  
+  // check to see if the statement is prepared already
   if (in_array($statement_name, $prepared_statements)) {
     return TRUE;
   }
- 
+
   // @coder-ignore: acting on postgres tables rather then drupal schema therefore, table prefixing does not apply
   $sql = "SELECT name FROM pg_prepared_statements WHERE name = '%s'";
   // do not use 'chado_query' here or it causes memory-leaks
   $result = db_fetch_object(db_query($sql, $statement_name));
 
-  if ($result) {    
+  if ($result) {
     return TRUE;
   }
   return FALSE;
@@ -2856,7 +2856,7 @@ function tripal_core_is_sql_prepared($statement_name) {
 function tripal_core_chado_prepare($statement_name, $psql, $args) {
   global $persistent_chado;
   global $prepared_statements;
-  
+
   if (!$persistent_chado) {
     watchdog('tripal_core', "chado_prepare: not able to prepare '%name' statement as no persistent connection is available", array('%name' => $statement_name, '%sql' => $psql), WATCHDOG_ERROR);
     return FALSE;
@@ -2873,7 +2873,7 @@ function tripal_core_chado_prepare($statement_name, $psql, $args) {
     }
     else {
       // Although a statement with this name is already prepared it is not the same!
-      watchdog('tripal_core', "chado_prepare: '%name' statement already prepared with different arguments! ". 
+      watchdog('tripal_core', "chado_prepare: '%name' statement already prepared with different arguments! ".
         "You want to prepare \n%sql\n with \n%values\n and the existing statement is \n%esql\n with \n%existing",
         array('%name' => $statement_name, '%sql' => $psql, '%values' => print_r($args, TRUE), '%esql' => $prepared_sql,
           '%existing' => print_r($prepared_args, TRUE)), WATCHDOG_ERROR);
@@ -2906,7 +2906,7 @@ function tripal_core_chado_prepare($statement_name, $psql, $args) {
  *   An array of values in the execute sql statement
  */
 function tripal_core_chado_execute_prepared($statement_name, $sql, $values) {
-  global $prepared_statements;   
+  global $prepared_statements;
 
   if (!tripal_core_is_sql_prepared($statement_name)) {
     watchdog('tripal_core', "tripal_core_chado_execute_prepared: Cannot execute an unprepared statement: '%name'", array('%name' => $statement_name), WATCHDOG_ERROR);
@@ -2978,7 +2978,7 @@ function tripal_core_chado_execute_prepared($statement_name, $sql, $values) {
   else {
     watchdog('tripal_core', "chado_execute_prepared: wrong number of arguments supplied for '%name' statement. ' .
       'Expected %required but recieved %values. Statement: %statement.",
-      array('%name' => $statement_name, '%required' => print_r($required_values, TRUE), 
+      array('%name' => $statement_name, '%required' => print_r($required_values, TRUE),
         '%values' => print_r($values, TRUE), '%statement' => $prepared_statements[$statement_name]['prepared_sql']), WATCHDOG_ERROR);
     return FALSE;
   }
@@ -2991,8 +2991,8 @@ function tripal_core_chado_execute_prepared($statement_name, $sql, $values) {
  * Otherwise, it clears prepared statement names that match the regex provided
  */
 function tripal_core_chado_clear_prepared ($statement_name_regex = NULL) {
-  global $prepared_statements;   
-  
+  global $prepared_statements;
+
   if ($statement_name_regex) {
     $resource = chado_query("SELECT * FROM pg_catalog.pg_prepared_statements WHERE name~'%s'",$statement_name_regex);
     while ($r = db_fetch_object($resource)) {
@@ -3009,7 +3009,7 @@ function tripal_core_chado_clear_prepared ($statement_name_regex = NULL) {
 
 /**
  * Instantiate or Return a persistent chado connection.  This should not be confused with
- * PHP persistent connections. Here we use the drupal db_connect function to 
+ * PHP persistent connections. Here we use the drupal db_connect function to
  *
  * NOTE: cannot use $active_db since a new connection is created each time
  * db_set_active() is called
@@ -3476,6 +3476,8 @@ function tripal_core_clean_orphaned_nodes($table, $job_id) {
 
   // iterate through all of the chado_$table entries and remove those
   // that don't have a node or don't have a $table record in chado.libary
+  print "Verifying all chado_$table Entries\n";
+  $deleted = 0;
   foreach ($cnodes as $nid) {
 
     // update the job status every 1% analyses
@@ -3486,6 +3488,7 @@ function tripal_core_clean_orphaned_nodes($table, $job_id) {
     // see if the node exits, if not remove the entry from the chado_$table table
     $node = db_fetch_object(db_query($nsql, $nid->nid));
     if (!$node) {
+      $deleted++;
       db_query("DELETE FROM {chado_%s} WHERE nid = %d", $table, $nid->nid);
       $message = "chado_$table missing node.... DELETING: $nid->nid";
       watchdog('tripal_core', $message, array(), WATCHDOG_WARNING);
@@ -3495,15 +3498,18 @@ function tripal_core_clean_orphaned_nodes($table, $job_id) {
     $table_id = $table . "_id";
     $record = db_fetch_object(chado_query($lsql, $table, $table, $nid->$table_id));
     if (!$record) {
-      chado_query("DELETE FROM {chado_%s} WHERE %s_id = '%d'", $table, $table, $nid->$table_id);
+      $deleted++;
+      db_query("DELETE FROM {chado_%s} WHERE %s_id = '%d'", $table, $table, $nid->$table_id);
       $message = "chado_$table missing $table.... DELETING entry.";
       watchdog('tripal_core', $message, array(), WATCHDOG_WARNING);
     }
     $i++;
   }
+  print "\t$deleted chado_$table entries missing either a node or chado entry.\n";
 
   // iterate through all of the nodes and delete those that don't
   // have a corresponding entry in chado_$table
+  $deleted = 0;
   foreach ($nodes as $node) {
 
     // update the job status every 1% libraries
@@ -3516,6 +3522,7 @@ function tripal_core_clean_orphaned_nodes($table, $job_id) {
     $link = db_fetch_object(db_query($csql, $table, $node->nid));
     if (!$link) {
       if (node_access('delete', $node)) {
+        $deleted++;
         $message = "Node missing in chado_$table table.... DELETING node $node->nid";
         watchdog("tripal_core", $message, array(), WATCHDOG_WARNING);
         node_delete($node->nid);
@@ -3527,6 +3534,7 @@ function tripal_core_clean_orphaned_nodes($table, $job_id) {
     }
     $i++;
   }
+  print "\t$deleted nodes did not have corresponding chado_$table entries.\n";
 
   return '';
 }