1 /* -*- c-basic-offset: 2 -*- */ 2 /* 3 Copyright(C) 2016 Kouhei Sutou <kou@clear-code.com> 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with this library; if not, write to the Free Software 17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA 18 */ 19 20 #ifndef MRN_COUNT_SKIP_CHECKER_HPP_ 21 #define MRN_COUNT_SKIP_CHECKER_HPP_ 22 23 #include <mrn_mysql_compat.h> 24 25 #include <item_cmpfunc.h> 26 27 #include <groonga.h> 28 29 namespace mrn { 30 class CountSkipChecker { 31 public: 32 CountSkipChecker(grn_ctx *ctx, 33 TABLE *table, 34 SELECT_LEX *select_lex, 35 KEY *key_info, 36 key_part_map target_key_part_map, 37 bool is_storage_mode); 38 ~CountSkipChecker(); 39 40 bool check(); 41 42 private: 43 grn_ctx *ctx_; 44 TABLE *table_; 45 SELECT_LEX *select_lex_; 46 KEY *key_info_; 47 key_part_map target_key_part_map_; 48 bool is_storage_mode_; 49 50 bool is_skippable(Item *where); 51 bool is_skippable(Item_cond *cond_item); 52 bool is_skippable(Item_func *func_item); 53 bool is_skippable(Item_field *field_item); 54 }; 55 } 56 57 #endif /* MRN_COUNT_SKIP_CHECKER_HPP_ */ 58