#include <ed_connection.h>
◆ Ed_connection() [1/2]
      
        
          | Ed_connection::Ed_connection  | 
          ( | 
          THD *  | 
          thd | ) | 
           | 
        
      
 
Construct a new "execute direct" connection. 
Create a new "execute direct" connection.
The connection can be used to execute SQL statements. If the connection failed to initialize, the error will be returned on the attempt to execute a statement.
- Precondition
 - thd must have no open tables while the connection is used. However, Ed_connection works okay in LOCK TABLES mode. Other properties of THD, such as the current warning information, errors, etc. do not matter and are preserved by Ed_connection. One thread may have many Ed_connections created for it. 
 
 
 
◆ ~Ed_connection()
  
  
      
        
          | Ed_connection::~Ed_connection  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
◆ Ed_connection() [2/2]
◆ add_result_set()
  
  
      
        
          | void Ed_connection::add_result_set  | 
          ( | 
          Ed_result_set *  | 
          ed_result_set | ) | 
           | 
         
       
   | 
  
private   | 
  
 
A helper method that is called only during execution. 
Although Ed_connection doesn't support multi-statements, a statement may generate many result sets. All subsequent result sets are appended to the end.
- Precondition
 - This is called only by Protocol_local. 
 
 
 
◆ execute_direct() [1/2]
      
        
          | bool Ed_connection::execute_direct  | 
          ( | 
          LEX_STRING  | 
          sql_text | ) | 
           | 
        
      
 
Execute one SQL statement. 
A simple wrapper that uses a helper class to execute SQL statements.
Until this method is executed, no other methods of Ed_connection can be used. Life cycle of Ed_connection is:
Initialized -> a statement has been executed -> look at result, move to next result -> look at result, move to next result -> ... moved beyond the last result == Initialized.
This method can be called repeatedly. Once it's invoked, results of the previous execution are lost.
A result of execute_direct() can be either:
- success, no result set rows. In this case get_field_count() returns 0. This happens after execution of INSERT, UPDATE, DELETE, DROP and similar statements. Some other methods, such as get_affected_rows() can be used to retrieve additional result information.
 
- success, there are some result set rows (maybe 0). E.g. happens after SELECT. In this case get_field_count() returns the number of columns in a result set and store_result() can be used to retrieve a result set..
 
- an error, methods to retrieve error information can be used.
 
- Returns
 - execution status 
 
- Return values
 - 
  
    | false | success, use get_field_count() to determine what to do next.  | 
    | true | error, use get_last_error() to see the error number.  | 
  
   
 
 
◆ execute_direct() [2/2]
Same as the previous, but takes an instance of Server_runnable instead of SQL statement text. 
Execute a fragment of server functionality without an effect on thd, and store results in memory.
- Returns
 - execution status
 
- Return values
 - 
  
    | false | success, use get_field_count() if your code fragment is supposed to return a result set  | 
    | true | failure | 
  
   
Conventions:
- the code fragment must finish with OK, EOF or ERROR.
 
- the code fragment doesn't have to close thread tables, free memory, commit statement transaction or do any other cleanup that is normally done in the end of dispatch_command().
 
- Parameters
 - 
  
    | server_runnable | A code fragment to execute.  | 
  
   
 
 
◆ free_old_result()
  
  
      
        
          | void Ed_connection::free_old_result  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
private   | 
  
 
Free all result sets of the previous statement, if any, and reset warnings and errors. 
Called before execution of the next query. 
 
 
◆ get_last_errno()
  
  
      
        
          | unsigned int Ed_connection::get_last_errno  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
inline   | 
  
 
 
◆ get_last_error()
  
  
      
        
          | const char * Ed_connection::get_last_error  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
inline   | 
  
 
The following three members are only valid if execute_direct() or move_to_next_result() returned an error. 
They never fail, but if they are called when there is no result, or no error, the result is not defined. 
 
 
◆ get_result_sets()
◆ operator=()
◆ Protocol_local
◆ m_current_rset
◆ m_diagnostics_area
◆ m_rsets
◆ m_thd
  
  
      
        
          | THD* Ed_connection::m_thd | 
         
       
   | 
  
private   | 
  
 
Execute direct interface does not support multi-statements, only multi-results. 
So we never have a situation when we have a mix of result sets and OK or error packets. We either have a single result set, a single error, or a single OK, or we have a series of result sets, followed by an OK or error. 
 
 
The documentation for this class was generated from the following files: