| 
					
				 | 
			
			
				@@ -132,14 +132,14 @@ function tripal_core_chado_insert($table, $values, $options = array()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!array_key_exists('skip_validation',$options)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $options['skip_validation'] = FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $insert_values = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Determine plan of action 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if ($options['statement_name']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // we have a prepared statment (or want to create one) so set $prepared = TRUE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $prepared = TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // we need to get a persistent connection.  If one exists this function 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // will not recreate it, but if not it will create one and store it in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // a Drupal variable for reuse later. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -177,7 +177,7 @@ function tripal_core_chado_insert($table, $values, $options = array()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // select the value from the foreign key relationship for this value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $results = tripal_core_chado_get_foreign_key($table_desc, $field, $value, $foreign_options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (sizeof($results) > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         watchdog('tripal_core', 'tripal_core_chado_insert: Too many records match the criteria supplied for !foreign_key foreign key constraint (!criteria)', array('!foreign_key' => $field, '!criteria' => print_r($value, TRUE)), WATCHDOG_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -286,11 +286,10 @@ function tripal_core_chado_insert($table, $values, $options = array()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if ($prepared) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // if this is the first time we've run this query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // then we need to do the prepare, otherwise just execute 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ($options['is_prepared'] != TRUE and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       !tripal_core_is_sql_prepared($options['statement_name'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ($options['is_prepared'] != TRUE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // prepare the statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $psql = "PREPARE " . $options['statement_name'] . " (" . implode(', ', $idatatypes) . ") AS INSERT INTO {$table} (" . implode(", ", $ifields) . ") VALUES (" . implode(", ", $iplaceholders) . ")"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $status = chado_query($psql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $status = tripal_core_chado_prepare($options['statement_name'], $psql, $idatatypes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (!$status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         watchdog('tripal_core', "tripal_core_chado_insert: not able to prepare '%name' statement for: %sql", array('%name' => $options['statement_name'], '%sql' => $sql), 'WATCHDOG ERROR'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -299,7 +298,7 @@ function tripal_core_chado_insert($table, $values, $options = array()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $sql = "EXECUTE " . $options['statement_name'] . "(" . implode(", ", $itypes) . ")"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $result = chado_query($sql, $ivalues); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $result = tripal_core_chado_execute_prepared($options['statement_name'], $sql, $ivalues); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // if it's not a prepared statement then insert normally 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -411,12 +410,12 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $update_values = array();   // contains the values to be updated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $update_matches = array();  // contains the values for the where clause 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Determine plan of action 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if ($options['statement_name']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // we have a prepared statment (or want to create one) so set $prepared = TRUE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $prepared = TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // we need to get a persistent connection.  If one exists this function 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // will not recreate it, but if not it will create one and store it in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // a Drupal variable for reuse later. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -492,7 +491,7 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $ivalues = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $i = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   foreach ($update_values as $field => $value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (strcasecmp($table_desc['fields'][$field]['type'], 'serial')==0 OR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         strcasecmp($table_desc['fields'][$field]['type'], 'int')==0 OR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         strcasecmp($table_desc['fields'][$field]['type'], 'integer')==0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -509,15 +508,15 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $idatatypes[] = 'int'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     elseif (strcasecmp($table_desc['fields'][$field]['type'], 'boolean')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $sql .= " $field = %s, ";    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $pvalues[] = '%s';    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $sql .= " $field = %s, "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $pvalues[] = '%s'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (strcmp($value, '__NULL__')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = $value; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -525,19 +524,19 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $idatatypes[] = 'bool'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     elseif (strcasecmp($table_desc['fields'][$field]['type'], 'float')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $sql .= " $field = %s, ";  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $pvalues[] = '%s';      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $sql .= " $field = %s, "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $pvalues[] = '%s'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (strcmp($value, '__NULL__')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $idatatypes[] = 'numeric'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else {       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (strcmp($value, '__NULL__') == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $sql .= " $field = %s, "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = 'NULL'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -557,11 +556,11 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $sql = drupal_substr($sql, 0, -2);  // get rid of the trailing comma & space 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $psql = drupal_substr($psql, 0, -2);  // get rid of the trailing comma & space 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $sql .= " WHERE "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $psql .= " WHERE "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   foreach ($update_matches as $field => $value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (strcasecmp($table_desc['fields'][$field]['type'], 'serial')==0 OR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         strcasecmp($table_desc['fields'][$field]['type'], 'int')==0 OR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         strcasecmp($table_desc['fields'][$field]['type'], 'integer')==0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -570,22 +569,22 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $pvalues[] = '%s'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $sql .= " $field = %d AND "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $uargs[] = $value;  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $pvalues[] = '%s';        
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $uargs[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $pvalues[] = '%s'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $idatatypes[] = 'int';      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $idatatypes[] = 'int'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     elseif (strcasecmp($table_desc['fields'][$field]['type'], 'boolean')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $sql .= " $field = %s AND ";      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $pvalues[] = '%s';  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $sql .= " $field = %s AND "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $pvalues[] = '%s'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (strcmp($value, '__NULL__')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = $value; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -594,18 +593,18 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     elseif (strcasecmp($table_desc['fields'][$field]['type'], 'float')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $sql .= " $field = %s AND "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $pvalues[] = '%s';       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $pvalues[] = '%s'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (strcmp($value, '__NULL__')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = 'NULL'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $idatatypes[] = 'numeric'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else {       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (strcmp($value, '__NULL__')==0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $sql .= " $field = %s AND "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $ivalues[] = 'NULL'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -618,14 +617,14 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $uargs[] = $value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $pvalues[] = "'%s'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $idatatypes[] = 'text';       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $idatatypes[] = 'text'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $psql .= "$field = \$" . $i . " AND ";     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $psql .= "$field = \$" . $i . " AND "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $sql = drupal_substr($sql, 0, -4);  // get rid of the trailing 'AND' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $psql = drupal_substr($psql, 0, -4);  // get rid of the trailing 'AND' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // finish constructing the prepared SQL statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $psql =  "PREPARE " . $options['statement_name'] . " (" . implode(', ', $idatatypes) . ") AS " . $psql; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -650,7 +649,7 @@ function tripal_core_chado_update($table, $match, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $resource = db_query($sql, $uargs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     tripal_db_set_active($previous_db);  // now use drupal database 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if ($resource) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -899,7 +898,7 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!array_key_exists('statement_name',$options)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $options['statement_name'] = FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // if this is a prepared statement check to see if it has already been prepared 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if ($options['statement_name']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $prepared = TRUE; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -907,7 +906,7 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // will not recreate it, but if not it will create one and store it in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // a Drupal variable for reuse later. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $connection = tripal_db_persistent_chado(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      //print "NO STATEMENT (select): $table\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      //debug_print_backtrace(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1000,6 +999,7 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $psql = $sql;  // prepared SQL statement; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $i = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $pvalues = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $itypes = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     foreach ($where as $field => $value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // if we have multiple values returned then we need an 'IN' statement 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1031,6 +1031,7 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $args[] = $value[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           // set the variables needed for the prepared statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $idatatypes[] = 'int'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $itypes[] = '%d'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $pvalues[] = $value[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         elseif (strcasecmp($table_desc['fields'][$field]['type'], 'boolean')==0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1039,6 +1040,7 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $args[] = $value[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           // set the variables needed for the prepared statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $idatatypes[] = 'bool'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $itypes[] = '%d'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $pvalues[] = $value[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         elseif (strcasecmp($table_desc['fields'][$field]['type'], 'float')==0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1047,6 +1049,7 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $args[] = $value[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           // set the variables needed for the prepared statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $idatatypes[] = 'numeric'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $itypes[] = '%f'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $pvalues[] = $value[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // else the type is a text 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1063,7 +1066,8 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           // set the variables needed for the prepared statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $idatatypes[] = 'text'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          $pvalues[] = "'" . $value[0] . "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $itypes[] = "'%s'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          $pvalues[] = $value[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $i++; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1098,19 +1102,18 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if ($prepared) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // if this is the first time we've run this query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // then we need to do the prepare, otherwise just execute 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ($options['is_prepared'] != TRUE and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        !tripal_core_is_sql_prepared($options['statement_name'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $status = chado_query($psql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ($options['is_prepared'] != TRUE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $status = tripal_core_chado_prepare($options['statement_name'], $psql, $idatatypes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (!$status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        watchdog('tripal_core', "tripal_core_chado_select: not able to prepare '%name' statement for: %sql", array('%name' => $options['statement_name'], '%sql' => $sql), 'WATCHDOG ERROR'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $sql = "EXECUTE " . $options['statement_name'] . "(" . implode(", ", $pvalues) . ")"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $sql = "EXECUTE " . $options['statement_name'] . "(" . implode(", ", $itypes) . ")"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // WARNING: This call creates a memory leak:  if you remove the $ivalues it doesn't 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // do this. Got to find out what's causing this. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $resource = chado_query($sql, $ivalues); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $resource = tripal_core_chado_execute_prepared($options['statement_name'], $sql, $pvalues); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $previous_db = tripal_db_set_active('chado');  // use chado database 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $resource = db_query($sql, $args); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1178,7 +1181,7 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @ingroup tripal_chado_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function tripal_core_chado_get_foreign_key($table_desc, $field, $values, $options = NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // set defaults for options. If we don't set defaults then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // we get memory leaks when we try to access the elements 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!is_array($options)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1190,7 +1193,7 @@ function tripal_core_chado_get_foreign_key($table_desc, $field, $values, $option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!array_key_exists('regex_columns', $options)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $options['regex_columns'] = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // get the list of foreign keys for this table description and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // iterate through those until we find the one we're looking for 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1966,12 +1969,12 @@ function tripal_core_insert_property($basetable, $record_id, $property, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // now add 1 to the rank 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $rank++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     watchdog('tripal_core', "Cannot find property '!prop_name'.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         array('!prop_name' => $property), WATCHDOG_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // get the foreign key for this property table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $table_desc = tripal_core_get_chado_table_schema($basetable . 'prop'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2296,7 +2299,7 @@ function tripal_core_is_sql_prepared($statement_name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if(in_array($statement_name,$_SESSION[$connection])){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      //print "Is Prepared and in Session var: $statement_name\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      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'"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2311,6 +2314,110 @@ function tripal_core_is_sql_prepared($statement_name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //print "Is Not prepared: $statement_name\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Prepare a chado query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $statement_name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The name of the prepared statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $psql 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The SQL statement to be executed via chado_query. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   Should be of the form PREPARE <statement name> AS <SQL Statement to be prepared> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $args 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   An array of arguements required to execute the prepared statement. The keys of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   the array should correspond to the $\d in the prepare statement and the value should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   be the type of value needed (ie: text, int, etc.) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_core_chado_prepare($statement_name, $psql, $args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $connection = variable_get('tripal_perisistent_chado', NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Check to see if this statement was already prepared 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (tripal_core_is_sql_prepared($statement_name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //if it was check that the arguments are the same 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $prepared_args = $_SESSION['prepared_args'][$connection][$statement_name]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $prepared_sql = $_SESSION['prepared_sql'][$connection][$statement_name]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ($prepared_args == $args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // This statement is already prepared 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    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! You want to prepare %sql with %values and the existing statement is %esql with %existing", array('%name' => $statement_name, '%sql' => $psql, '%values' => print_r($args,TRUE), '%esql' => $prepared_sql, '%existing' => print_r($prepared_args,TRUE)), WATCHDOG_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $status = chado_query($psql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!$status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    watchdog('tripal_core', "chado_prepare: not able to prepare '%name' statement for: %sql", array('%name' => $statement_name, '%sql' => $psql), WATCHDOG_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    watchdog('tripal_core', "tripal_core_chado_select: prepared '%name' statement as %sql", array('%name' => $statement_name, '%sql' => $psql), WATCHDOG_NOTICE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION[$connection][] = $statement_name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['prepared_args'][$connection][$statement_name] = $args; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['prepared_sql'][$connection][$statement_name] = $psql; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Execute a prepared statement with the supplied values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $statement_name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The name of the prepared statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $sql 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The SQL to execute using chado query. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   Should be of the form EXECUTE <statement_name> (<arg1>,<arg2>...<argn>) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   An array of values in the execute sql statement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_core_chado_execute_prepared($statement_name, $sql, $values) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $connection = variable_get('tripal_perisistent_chado', NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Before Executing, Ensure that all the values are supplied 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $required_values = $_SESSION['prepared_args'][$connection][$statement_name]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (sizeof($required_values) == sizeof($values)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $error = FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    foreach ($values as $k => $v) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (isset($required_values[$k])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        switch ($required_values[$k]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          case 'text': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $check = is_string($v); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!$check) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              watchdog('tripal_core', "chado_execute_prepared:wrong argument type supplied for '%name' statement. Expected %required but recieved %value", array('%name' => $statement_name, '%required' => $required_values[$k], '%value' => print_r($v,TRUE)), WATCHDOG_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          case 'int': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $check = is_numeric($v); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!$check) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              watchdog('tripal_core', "chado_execute_prepared:wrong argument type supplied for '%name' statement. Expected %required but recieved %value", array('%name' => $statement_name, '%required' => $required_values[$k], '%value' => print_r($v,TRUE)), WATCHDOG_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            watchdog('tripal_core', "chado_execute_prepared:unsupported argument type supplied for '%name' statement %type", array('%name' => $statement_name, '%type' => $required_values[$k]), WATCHDOG_WARNING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        watchdog('tripal_core', "chado_execute_prepared:wrong number of arguments supplied for '%name' statement. Expected %required but recieved %values", array('%name' => $statement_name, '%required' => print_r($required_values,TRUE), '%values' => print_r($values,TRUE)), WATCHDOG_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Since all values are supplied, execute 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $resource = chado_query($sql, $values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    watchdog('tripal_core', "chado_execute_prepared: wrong number of arguments supplied for '%name' statement. Expected %required but recieved %values", array('%name' => $statement_name, '%required' => print_r($required_values,TRUE), '%values' => print_r($values,TRUE)), WATCHDOG_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Instantiate or Return a persistent chado connection 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2338,7 +2445,7 @@ function tripal_db_persistent_chado() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $connection = db_connect($db_url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       variable_set('tripal_perisistent_chado', serialize($connection)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return $connection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return FALSE; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2356,7 +2463,7 @@ function tripal_db_release_persistent_chado() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function tripal_db_start_transaction() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $connection = tripal_db_persistent_chado(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  chado_query("BEGIN");   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  chado_query("BEGIN"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 |