Date: Monday, January 30, 2006 @ 12:16:05
  Author: zsolt
    Path: /cvsroot/carob/libmysequoia/include

Modified: CarobStmt.hpp (1.6 -> 1.7)

Introduced comments to each function and variable


---------------+
 CarobStmt.hpp |  153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 153 insertions(+)


Index: libmysequoia/include/CarobStmt.hpp
diff -u libmysequoia/include/CarobStmt.hpp:1.6 
libmysequoia/include/CarobStmt.hpp:1.7
--- libmysequoia/include/CarobStmt.hpp:1.6      Tue Jan 17 09:38:38 2006
+++ libmysequoia/include/CarobStmt.hpp  Mon Jan 30 12:16:05 2006
@@ -34,45 +34,198 @@
 class CarobStmt : public CarobCommon
 {
 public:
+  /**
+   * Initialize and constructs the class. Allocate a MYSQL_STMT and initialize 
a Carob::ParameterStatement.
+   * @param mysql object (must be initialized with mysql_init)
+   */
   CarobStmt(MYSQL *mysql);
+  /**
+   * Free the allocated statement and resources used by it. Also delete Carob 
statement
+   */
        ~CarobStmt();
   
+  /**
+   * Executes the prepared statement. The parameter should be already bind to 
the statement, and
+   * prepare had to be called before.
+   * @return 1 if an error occured 
+   *         0 no error
+   */
   int execute();
+
+  /**
+   * Returns the next row in the result set. It can be called only while the 
result set exists; 
+   * that is, after a call to execute() that creates a result set or after 
store_result(), 
+   * to buffer the entire result set.
+   * fetch() returns row data using the buffers bound by bind_result(). It 
returns the data in those
+   * buffers for all the columns in the current row set and the lengths are 
returned to the length pointer. 
+   * Data conversion can occure if the fetched data is different to the buffer 
type.
+   * @return 1 if an error occured
+   *         0 no error
+   *         MYSQL_NO_DATA if there are no more data to fetch
+   *         MYSQL_DATA_TRUNCATED if a truncation occured while fetching
+   */
   int fetch();
+  
+  /**
+   * Fetch one column from the current result set row. This should be used 
only with character type results.
+   * @param bind provides the buffer where data should be placed. It should be 
set up the same way as for bind_result().
+   * @param column indicates which column to fetch. The first column is 
numbered 0.
+   * @param offset is the offset within the data value at which to begin 
retrieving data. 
+   *        This can be used for fetching the data value in pieces. The 
beginning of the value is offset 0.
+   * @return 1 if an error occured 
+   *         0 no error
+   */
   int fetch_column (MYSQL_BIND * bind, unsigned int column, unsigned long 
offset);
+  
+  /**
+   * Prepare the query to be executed. Fetch the metadata of the query. Sets 
the param count and result column.
+   * It destroy any previously prepared query within the same statement.
+   * @param query sql query needed to be prepared
+   * @param length length of the query
+   * @return 1 if an error occured
+   *         0 no error
+   */
   int prepare(const char *query, unsigned long length);
+  
+  /**
+   * Is used to bind data for the parameter markers in the SQL statement that 
was passed to prepare().
+   * It uses MYSQL_BIND structures to supply the data.
+   * @param bind is the address of an array of MYSQL_BIND structures. The 
library expects the array 
+   *              to contain an element for each ‘?’ parameter marker that 
is present in the query.
+   * @return 1 if an error occured 
+   *         0 no error
+   */
   bool bind_param(const MYSQL_BIND *bind);
+
+  /** 
+   * It should allow an application to send parameter data to the server in 
pieces (or "chunks"). 
+   * But this implementation is only of an emulation of this feature, because 
the data is collected 
+   * in an internal buffer, concatenated and only at the execute() state is 
sent.
+   * If sequoia will support this "chunk" feeding, then this algorithm will 
change.
+   * @param parameter_number indicates which parameter to associate the data 
with. Parameters are 
+   *                          numbered beginning with 0. 
+   * @param data is a pointer to a buffer containing data to be sent
+   * @param length indicates the number of bytes in the buffer.
+   * @return 1 if an error occured 
+   *         0 no error
+   */
   bool send_long_data (unsigned int parameter_number, const char *data, 
unsigned long length);
+
+  /**
+   * Is used to associate (bind) columns in the result set to data buffers and 
length buffers. 
+   * When fetch() is called to fetch data, the data is placed into the 
specified buffers defined by
+   * the bound columns. Each column must be bound prior of calling fetch().
+   * @param bind is the address of an array of MYSQL_BIND structures. The 
library expects the array 
+   *              to contain an element for column in the result set.
+   * @return 1 if an error occured 
+   *         0 no error
+   */
   bool bind_result(const MYSQL_BIND *bind);
+
+  /**
+   * Reset the prepared statement to state after prepare.
+   * This is mainly used to reset data sent with send_long_data().
+   * @return 1 if an error occured 
+   *         0 no error
+   */
   bool reset();
   
+  /**
+   * Set the number of rows to fetch from sequoia. The number of rows will be 
present only at the next fetch(),
+   * and when the previous fetch buffer is exausted.
+   */
   void set_fetch_size(unsigned size) { if (c_stmt) c_stmt->setFetchSize(size); 
}
   
+  /**
+   * If a statement passed to prepare() is one that produces a result set, 
result_metadata() returns 
+   * the result set metadata in the form of a pointer to a MYSQL_RES structure 
that can be used to process 
+   * the meta information such as total number of fields and individual field 
information.
+   * @return pointer to a MYSQL_RES in case of success
+   *         0 in case of failure
+   */
   MYSQL_RES *result_metadata();
 
+  /**
+   * Buffers the entire resultset from the server in the client buffers. The 
result on the server is released.
+   * @return 1 if an error occured 
+   *         0 no error
+   */
   int store_result();
+
+  /**
+   * Releases memory associated with the result set produced by execution of 
the prepared statement.
+   * @return 1 if an error occured 
+   *         0 no error
+   */
   static bool free_result(MYSQL_STMT *stmt);
 
+  /**
+   * Return the pointer to the internal allocated MYSQL_STMT.
+   */
   MYSQL_STMT *getMYSQL_STMT() {return m_stmt;}
 
 private:
+  //Internal MYSQL_STMT associated with the statement
   MYSQL_STMT *m_stmt;
+  //Associated carob parameter statement
   CarobNS::ParameterStatement *c_stmt;
+  //Pointer to the CarobMYSQL from which this statement was created
   CarobMYSQL *cmysql;
+  //In case the result was not stored with store_result(), contain a pointer 
to the result set resulted by executing
+  //the statement with execute()
   CarobNS::DriverResultSet *liveResultSet;
 
+  /**
+   * Private constructor
+   */
+  CarobStmt() {}
+
+  /**
+   * Release memory, and structure. Also destroy carob parameter statement
+   */
   void clear();
 
+  /**
+   * Link the error, is_null, length fields to the internal ones, if one of 
them is null.
+   * @param bind pointer to a MYSQL_BIND structure
+   */
   void link_bind(MYSQL_BIND *bind);
 
+  /**
+   * Fetch one field either from internal buffer or from liveResultSet and 
store the converted result
+   * in the bind buffer. If truncation occures set the error in MYSQL_BIND
+   * @param fPtr pointer to a MYSQL_FIELD it is used to check the field type
+   * @param bPtr pointer to a MYSQL_BIND. it is used to store the result, and 
if the result type is not equal with
+   *             field type then a conversion is occured.
+   * @param colNo contains the column number starting from 0
+   */
   void fetch_field(MYSQL_FIELD *fPtr, MYSQL_BIND *bPtr, unsigned colNo);
 
+  /**
+   * Fetch from carob and allocate memory for the result of one field.
+   * @param fPtr pointer to a MYSQL_FIELD
+   * @param colNo contains the column number starting from 1
+   * @return the pointer to the allocated result. The result will be in it's 
original binary form. In case of 
+   *             characters the result will point to a string *
+   */
   void *alloc_fetch_field(MYSQL_FIELD *fPtr, unsigned colNo);
   
+  /**
+   * Release the memory allocated by alloc_fetch_field().
+   * @param fPtr pointer to a MYSQL_FIELD, needed to determine the field type
+   * @param buffer points to the data to be deleted.
+   */
   static void delete_fetch_field(MYSQL_FIELD *fPtr, void *buffer);
   
+  /**
+   * Free the internal cached buffer created when store_result() was called.
+   * @param stmt points to the statement which internal cached buffer should 
be released
+   */
   static void free_catched_result(MYSQL_STMT *stmt);
 
+  /**
+   * Free the long data created with send_long_data().
+   */
   static void free_long_data(MYSQL_STMT *m_stmt);
   
   /**

_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits

Reply via email to