zamotivator

Untitled

Oct 30th, 2014
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.73 KB | None | 0 0
  1. // This will check if a QUERY_EVENT holds an "ALTER TABLE ..." string.
  2. static bool checkAlterQuery(const std::string& str)
  3. {
  4.     //RegularExpression regexp("^\\s*ALTER\\s+TABLE)", RegularExpression::RE_CASELESS);
  5.  
  6.     enum {
  7.         SP0, _A0, _L0, _T0, _E0, _R, SP1, _T1, _A1, _B, _L1, _E1
  8.     } state = SP0;
  9.  
  10.  
  11.     for (std::string::const_iterator i = str.begin(); i != str.end(); ++i) {
  12.  
  13.         if (state == SP0 && (*i == ' ' || *i == '\t' || *i == '\r' || *i == '\n')) {
  14.  
  15.         } else if (state == SP0 && (*i == 'a' || *i == 'A')) {
  16.             state = _A0;
  17.  
  18.         } else if (state == _A0 && (*i == 'l' || *i == 'L')) {
  19.             state = _L0;
  20.  
  21.         } else if (state == _L0 && (*i == 't' || *i == 'T')) {
  22.             state = _T0;
  23.  
  24.         } else if (state == _T0 && (*i == 'e' || *i == 'E')) {
  25.             state = _E0;
  26.  
  27.         } else if (state == _E0 && (*i == 'r' || *i == 'R')) {
  28.             state = _R;
  29.  
  30.         } else if (state == _R && (*i == ' ' || *i == '\t' || *i == '\r' || *i == '\n')) {
  31.             state = SP1;
  32.  
  33.         } else if (state == SP1 && (*i == ' ' || *i == '\t' || *i == '\r' || *i == '\n')) {
  34.  
  35.         } else if (state == SP1 && (*i == 't' || *i == 'T')) {
  36.             state = _T1;
  37.  
  38.         } else if (state == _T1 && (*i == 'a' || *i == 'A')) {
  39.             state = _A1;
  40.  
  41.         } else if (state == _A1 && (*i == 'b' || *i == 'B')) {
  42.             state = _B;
  43.  
  44.         } else if (state == _B && (*i == 'l' || *i == 'L')) {
  45.             state = _L1;
  46.  
  47.         } else if (state == _L1 && (*i == 'e' || *i == 'E')) {
  48.             state = _E1;
  49.  
  50.         } else if (state == _E1) {
  51.             return true;
  52.  
  53.         } else {
  54.             return false;
  55.         }
  56.     }
  57.  
  58.     return false;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment