NdbScanFilter.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef NDB_SCAN_FILTER_HPP
  14. #define NDB_SCAN_FILTER_HPP
  15. #include <ndb_types.h>
  16. /**
  17.  * @class NdbScanFilter
  18.  * @brief A simple way to specify filters for scan operations
  19.  *
  20.  * @note  This filter interface is under development and may change in 
  21.  *        the future! 
  22.  * 
  23.  */
  24. class NdbScanFilter {
  25. public:
  26.   /**
  27.    * Constructor
  28.    * @param op  The NdbOperation that the filter belongs to (is applied to).
  29.    */
  30.   NdbScanFilter(class NdbOperation * op);
  31.   ~NdbScanFilter();
  32.   
  33.   /**
  34.    *  Group operators
  35.    */
  36.   enum Group {
  37.     AND  = 1,    ///< (x1 AND x2 AND x3)
  38.     OR   = 2,    ///< (x1 OR x2 OR X3)
  39.     NAND = 3,    ///< NOT (x1 AND x2 AND x3)
  40.     NOR  = 4     ///< NOT (x1 OR x2 OR x3)
  41.   };
  42.   
  43.   /** 
  44.    * @name Grouping
  45.    * @{
  46.    */
  47.   /**
  48.    *  Begin of compound.
  49.    *  畆eturn  0 if successful, -1 otherwize
  50.    */
  51.   int begin(Group group = AND);    
  52.   /**
  53.    *  End of compound.
  54.    *  畆eturn  0 if successful, -1 otherwize
  55.    */
  56.   int end();
  57.   /** @} *********************************************************************/
  58.   /**
  59.    *  <i>Explanation missing</i>
  60.    */
  61.   int istrue();
  62.   /**
  63.    *  <i>Explanation missing</i>
  64.    */
  65.   int isfalse();
  66.   
  67.   /** 
  68.    * @name Integer Comparators
  69.    * @{
  70.    */
  71.   /** Compare column value with integer for equal   
  72.    *  畆eturn  0 if successful, -1 otherwize
  73.    */
  74.   int eq(int ColId, Uint32 value);   
  75.   /** Compare column value with integer for not equal.
  76.    *  畆eturn  0 if successful, -1 otherwize 
  77.    */
  78.   int ne(int ColId, Uint32 value);   
  79.   /** Compare column value with integer for less than.
  80.    *  畆eturn  0 if successful, -1 otherwize 
  81.    */
  82.   int lt(int ColId, Uint32 value);   
  83.   /** Compare column value with integer for less than or equal. 
  84.    *  畆eturn  0 if successful, -1 otherwize
  85.    */
  86.   int le(int ColId, Uint32 value);   
  87.   /** Compare column value with integer for greater than. 
  88.    *  畆eturn  0 if successful, -1 otherwize
  89.    */
  90.   int gt(int ColId, Uint32 value);   
  91.   /** Compare column value with integer for greater than or equal.
  92.    *  畆eturn  0 if successful, -1 otherwize
  93.    */
  94.   int ge(int ColId, Uint32 value);   
  95.   /** Compare column value with integer for equal. 64-bit.  
  96.    *  畆eturn  0 if successful, -1 otherwize
  97.    */
  98.   int eq(int ColId, Uint64 value);   
  99.   /** Compare column value with integer for not equal. 64-bit.
  100.    *  畆eturn  0 if successful, -1 otherwize
  101.    */
  102.   int ne(int ColId, Uint64 value);   
  103.   /** Compare column value with integer for less than. 64-bit.
  104.    *  畆eturn  0 if successful, -1 otherwize
  105.    */
  106.   int lt(int ColId, Uint64 value);   
  107.   /** Compare column value with integer for less than or equal. 64-bit.
  108.    *  畆eturn  0 if successful, -1 otherwize
  109.    */
  110.   int le(int ColId, Uint64 value);   
  111.   /** Compare column value with integer for greater than. 64-bit.
  112.    *  畆eturn  0 if successful, -1 otherwize
  113.    */
  114.   int gt(int ColId, Uint64 value);   
  115.   /** Compare column value with integer for greater than or equal. 64-bit.
  116.    *  畆eturn  0 if successful, -1 otherwize
  117.    */
  118.   int ge(int ColId, Uint64 value);   
  119.   /** @} *********************************************************************/
  120.   /** Check if column value is NULL */
  121.   int isnull(int ColId);             
  122.   /** Check if column value is non-NULL */
  123.   int isnotnull(int ColId);          
  124.   /** 
  125.    * @name String Comparators
  126.    * @{
  127.    */
  128.   /**
  129.    * Compare string against a Char or Varchar column.
  130.    *
  131.    * By default Char comparison blank-pads both sides to common length.
  132.    * Varchar comparison does not blank-pad.
  133.    *
  134.    * The extra <i>nopad</i> argument can be used to 
  135.    * force non-padded comparison for a Char column.
  136.    *  畆eturn  0 if successful, -1 otherwize
  137.    */
  138.   int eq(int ColId, const char * val, Uint32 len, bool nopad=false); 
  139.   int ne(int ColId, const char * val, Uint32 len, bool nopad=false); 
  140.   int lt(int ColId, const char * val, Uint32 len, bool nopad=false); 
  141.   int le(int ColId, const char * val, Uint32 len, bool nopad=false); 
  142.   int gt(int ColId, const char * val, Uint32 len, bool nopad=false); 
  143.   int ge(int ColId, const char * val, Uint32 len, bool nopad=false); 
  144.   /**
  145.    *  Like comparison operator.
  146.    *  畆eturn  0 if successful, -1 otherwize
  147.    */
  148.   int like(int ColId, const char * val, Uint32 len, bool nopad=false);
  149.   /**
  150.    *  Notlike comparison operator.
  151.    *  畆eturn  0 if successful, -1 otherwize
  152.    */
  153.   int notlike(int ColId, const char * val, Uint32 len, bool nopad=false);
  154.   /** @} *********************************************************************/
  155. private:
  156.   friend class NdbScanFilterImpl;
  157.   class NdbScanFilterImpl & m_impl;
  158.   NdbScanFilter& operator=(const NdbScanFilter&); ///< Defined not implemented
  159. };
  160. #endif