You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@geode.apache.org by GitBox <gi...@apache.org> on 2022/02/10 15:10:15 UTC

[GitHub] [geode] jdeppe-pivotal opened a new pull request #7354: GEODE-10032: Add Category to RadishCommandType

jdeppe-pivotal opened a new pull request #7354:
URL: https://github.com/apache/geode/pull/7354


   - This adds a single category (or type) to each command in order to
     identify the type of data structure it applies too. This is initially
     being done in order to allow Geode statistics to be finer grained in
     how the Radish-specific stats are grouped.
   - The category is derived from Redis' ACL Categories. In Redis these
     categories also include the command's flags (and possibly additional
     values). This implementation only specifies the category as it relates
     to the command's data type.  For example, in Redis the `GET` command
     has categories `@read`, `@fast` and `@string`. In Geode, the category
     would only be `@string`. This may well change in the future if ACLs
     are implemented.
   
   <!-- Thank you for submitting a contribution to Apache Geode. -->
   
   <!-- In order to streamline the review of the contribution we ask you
   to ensure the following steps have been taken: 
   -->
   
   ### For all changes:
   - [ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?
   
   - [ ] Has your PR been rebased against the latest commit within the target branch (typically `develop`)?
   
   - [ ] Is your initial contribution a single, squashed commit?
   
   - [ ] Does `gradlew build` run cleanly?
   
   - [ ] Have you written or updated unit tests to verify your changes?
   
   - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)?
   
   <!-- Note:
   Please ensure that once the PR is submitted, check Concourse for build issues and
   submit an update to your PR as soon as possible. If you need help, please send an
   email to dev@geode.apache.org.
   -->
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] DonalEvans commented on a change in pull request #7354: GEODE-10032: Add Category to RadishCommandType

Posted by GitBox <gi...@apache.org>.
DonalEvans commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804015591



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -164,214 +166,293 @@
    ***************************************/
 
   /*************** Connection ****************/
-  AUTH(new AuthExecutor(), SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
+  AUTH(new AuthExecutor(), Category.CONNECTION, SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
       .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
-  CLIENT(new ClientExecutor(), SUPPORTED,
-      new Parameter().min(2).firstKey(0).flags(ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
-  ECHO(new EchoExecutor(), SUPPORTED, new Parameter().exact(2).firstKey(0).flags(FAST)),
-  PING(new PingExecutor(), SUPPORTED, new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
-  QUIT(new QuitExecutor(), SUPPORTED, new Parameter().firstKey(0)),
+  CLIENT(new ClientExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
+  ECHO(new EchoExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(FAST)),
+  PING(new PingExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
+  QUIT(new QuitExecutor(), Category.ADMIN, SUPPORTED, new Parameter().firstKey(0)),
 
   /*************** Keys ******************/
 
-  DEL(new DelExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
-  DUMP(new DumpExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  EXISTS(new ExistsExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  EXPIRE(new ExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  EXPIREAT(new ExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  KEYS(new KeysExecutor(), SUPPORTED,
+  DEL(new DelExecutor(), Category.KEYSPACE, SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
+  DUMP(new DumpExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  EXISTS(new ExistsExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  EXPIRE(new ExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  EXPIREAT(new ExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  KEYS(new KeysExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(2).firstKey(0).flags(READONLY, SORT_FOR_SCRIPT)),
-  PERSIST(new PersistExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, FAST)),
-  PEXPIRE(new PExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PEXPIREAT(new PExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PTTL(new PTTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  RENAME(new RenameExecutor(), SUPPORTED, new Parameter().exact(3).lastKey(2).flags(WRITE)),
-  RENAMENX(new RenameNXExecutor(), SUPPORTED,
+  PERSIST(new PersistExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, FAST)),
+  PEXPIRE(new PExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PEXPIREAT(new PExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PTTL(new PTTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  RENAME(new RenameExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).lastKey(2).flags(WRITE)),
+  RENAMENX(new RenameNXExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(3).lastKey(2).flags(WRITE, FAST)),
-  RESTORE(new RestoreExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM)),
-  TTL(new TTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  TYPE(new TypeExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  RESTORE(new RestoreExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM)),
+  TTL(new TTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  TYPE(new TypeExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Strings *****************/
 
-  APPEND(new AppendExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  DECR(new DecrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  DECRBY(new DecrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  GET(new GetExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  GETSET(new GetSetExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCRBY(new IncrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCR(new IncrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  GETRANGE(new GetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY)),
-  INCRBYFLOAT(new IncrByFloatExecutor(), SUPPORTED,
+  APPEND(new AppendExecutor(), Category.STRING, SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  DECR(new DecrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  DECRBY(new DecrByExecutor(), Category.STRING, SUPPORTED,
       new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  MGET(new MGetExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  MSET(new MSetExecutor(), SUPPORTED,
+  GET(new GetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  GETSET(new GetSetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCRBY(new IncrByExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCR(new IncrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  GETRANGE(new GetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY)),
+  INCRBYFLOAT(new IncrByFloatExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  MGET(new MGetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  MSET(new MSetExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  MSETNX(new MSetNXExecutor(), SUPPORTED,
+  MSETNX(new MSetNXExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  PSETEX(new PSetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SET(new SetExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM)),
-  SETEX(new SetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SETNX(new SetNXExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  SETRANGE(new SetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  STRLEN(new StrlenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  PSETEX(new PSetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SET(new SetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM)),
+  SETEX(new SetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SETNX(new SetNXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  SETRANGE(new SetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  STRLEN(new StrlenExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Hashes *****************/
 
-  HDEL(new HDelExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  HGET(new HGetExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HGETALL(new HGetAllExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  HINCRBYFLOAT(new HIncrByFloatExecutor(), SUPPORTED,
+  HDEL(new HDelExecutor(), Category.HASH, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  HGET(new HGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HGETALL(new HGetAllExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  HINCRBYFLOAT(new HIncrByFloatExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HLEN(new HLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  HMGET(new HMGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, FAST)),
+  HMSET(new HMSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSET(new HSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSETNX(new HSetNXExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HSTRLEN(new HStrLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HINCRBY(new HIncrByExecutor(), Category.HASH, SUPPORTED,
       new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HLEN(new HLenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  HMGET(new HMGetExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, FAST)),
-  HMSET(new HMSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSET(new HSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSETNX(new HSetNXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HSTRLEN(new HStrLenExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HINCRBY(new HIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HVALS(new HValsExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  HSCAN(new HScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  HVALS(new HValsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HSCAN(new HScanExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  HEXISTS(new HExistsExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HKEYS(new HKeysExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HEXISTS(new HExistsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HKEYS(new HKeysExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
 
   /************* Sets *****************/
 
-  SADD(new SAddExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
-  SCARD(new SCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  SDIFF(new SDiffExecutor(), SUPPORTED,
+  SADD(new SAddExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
+  SCARD(new SCardExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  SDIFF(new SDiffExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SDIFFSTORE(new SDiffStoreExecutor(), SUPPORTED,
+  SDIFFSTORE(new SDiffStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SINTER(new SInterExecutor(), SUPPORTED,
+  SINTER(new SInterExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SINTERSTORE(new SInterStoreExecutor(), SUPPORTED,
+  SINTERSTORE(new SInterStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SISMEMBER(new SIsMemberExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  SMEMBERS(new SMembersExecutor(), SUPPORTED,
+  SISMEMBER(new SIsMemberExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  SMEMBERS(new SMembersExecutor(), Category.SET, SUPPORTED,
       new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  SMOVE(new SMoveExecutor(), SUPPORTED, new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
-  SPOP(new SPopExecutor(), SUPPORTED,
+  SMOVE(new SMoveExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
+  SPOP(new SPopExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, RANDOM, FAST)),
-  SRANDMEMBER(new SRandMemberExecutor(), SUPPORTED,
+  SRANDMEMBER(new SRandMemberExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(READONLY, RANDOM)),
-  SREM(new SRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  SSCAN(new SScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  SREM(new SRemExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  SSCAN(new SScanExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  SUNION(new SUnionExecutor(), SUPPORTED,
+  SUNION(new SUnionExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SUNIONSTORE(new SUnionStoreExecutor(), SUPPORTED,
+  SUNIONSTORE(new SUnionStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
 
   /************ Sorted Sets **************/
 
-  ZADD(new ZAddExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
-  ZCARD(new ZCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  ZCOUNT(new ZCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZINCRBY(new ZIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  ZINTERSTORE(new ZInterStoreExecutor(), SUPPORTED,
+  ZADD(new ZAddExecutor(), Category.SORTEDSET, SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
+  ZCARD(new ZCardExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  ZCOUNT(new ZCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZINCRBY(new ZIncrByExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  ZINTERSTORE(new ZInterStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
-  ZLEXCOUNT(new ZLexCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZPOPMAX(new ZPopMaxExecutor(), SUPPORTED,
+  ZLEXCOUNT(new ZLexCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZPOPMAX(new ZPopMaxExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZPOPMIN(new ZPopMinExecutor(), SUPPORTED,
+  ZPOPMIN(new ZPopMinExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZRANGE(new ZRangeExecutor(), SUPPORTED,
+  ZRANGE(new ZRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZRANGEBYLEX(new ZRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANK(new ZRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZREM(new ZRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), SUPPORTED,
+  ZRANGEBYLEX(new ZRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANK(new ZRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZREM(new ZRemExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, FAST)),
+  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().exact(4).flags(WRITE)),
-  ZREVRANGE(new ZRevRangeExecutor(), SUPPORTED,
+  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREVRANGE(new ZRevRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), SUPPORTED,
+  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(READONLY)),
-  ZREVRANK(new ZRevRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZSCAN(new ZScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  ZREVRANK(new ZRevRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZSCAN(new ZScanExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  ZSCORE(new ZScoreExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZUNIONSTORE(new ZUnionStoreExecutor(), SUPPORTED,
+  ZSCORE(new ZScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZUNIONSTORE(new ZUnionStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
 
   /************* Server *****************/
-  COMMAND(new COMMANDCommandExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,
+  COMMAND(new CommandCommandExecutor(), Category.CONNECTION, SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,

Review comment:
       With the addition of these categories, does it make sense to group categories together in this file? We currently have a section for `CONNECTION` but not for `ADMIN` or `KEYSPACE`, and there is no `SERVER` category, so having everything agree on what it is/where it goes would probably make the file a little neater. This isn't that important though.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal merged pull request #7354: GEODE-10032: Add Category to RedisCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal merged pull request #7354:
URL: https://github.com/apache/geode/pull/7354


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RedisCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r805040129



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -163,215 +165,295 @@
    *** Supported Commands ***
    ***************************************/
 
+  /***************** Admin *******************/
+  CLUSTER(new ClusterExecutor(), Category.ADMIN, SUPPORTED,
+      new Parameter().min(2).custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
+          .flags(Flag.ADMIN, RANDOM, STALE)),
+  QUIT(new QuitExecutor(), Category.ADMIN, SUPPORTED, new Parameter().firstKey(0)),
+  SLOWLOG(new SlowlogExecutor(), Category.ADMIN, SUPPORTED, new Parameter().min(2)
+      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
+      .flags(Flag.ADMIN, RANDOM, LOADING, STALE)),
+
   /*************** Connection ****************/
-  AUTH(new AuthExecutor(), SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
-      .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
-  CLIENT(new ClientExecutor(), SUPPORTED,
-      new Parameter().min(2).firstKey(0).flags(ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
-  ECHO(new EchoExecutor(), SUPPORTED, new Parameter().exact(2).firstKey(0).flags(FAST)),
-  PING(new PingExecutor(), SUPPORTED, new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
-  QUIT(new QuitExecutor(), SUPPORTED, new Parameter().firstKey(0)),
-
-  /*************** Keys ******************/
-
-  DEL(new DelExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
-  DUMP(new DumpExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  EXISTS(new ExistsExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  EXPIRE(new ExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  EXPIREAT(new ExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  KEYS(new KeysExecutor(), SUPPORTED,
+  AUTH(new AuthExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
+          .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
+  CLIENT(new ClientExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
+  ECHO(new EchoExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(FAST)),
+  PING(new PingExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
+  COMMAND(new CommandCommandExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(RANDOM, LOADING, STALE)),
+
+  /*************** Keyspace ******************/
+
+  DEL(new DelExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(WRITE)),
+  DUMP(new DumpExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  EXISTS(new ExistsExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  EXPIRE(new ExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  EXPIREAT(new ExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  KEYS(new KeysExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(2).firstKey(0).flags(READONLY, SORT_FOR_SCRIPT)),
-  PERSIST(new PersistExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, FAST)),
-  PEXPIRE(new PExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PEXPIREAT(new PExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PTTL(new PTTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  RENAME(new RenameExecutor(), SUPPORTED, new Parameter().exact(3).lastKey(2).flags(WRITE)),
-  RENAMENX(new RenameNXExecutor(), SUPPORTED,
+  PERSIST(new PersistExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, FAST)),
+  PEXPIRE(new PExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PEXPIREAT(new PExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PTTL(new PTTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  RENAME(new RenameExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).lastKey(2).flags(WRITE)),
+  RENAMENX(new RenameNXExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(3).lastKey(2).flags(WRITE, FAST)),
-  RESTORE(new RestoreExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM)),
-  TTL(new TTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  TYPE(new TypeExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  RESTORE(new RestoreExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM)),
+  TTL(new TTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  TYPE(new TypeExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Strings *****************/
 
-  APPEND(new AppendExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  DECR(new DecrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  DECRBY(new DecrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  GET(new GetExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  GETSET(new GetSetExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCRBY(new IncrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCR(new IncrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  GETRANGE(new GetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY)),
-  INCRBYFLOAT(new IncrByFloatExecutor(), SUPPORTED,
+  APPEND(new AppendExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  DECR(new DecrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  DECRBY(new DecrByExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  GET(new GetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  GETSET(new GetSetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCRBY(new IncrByExecutor(), Category.STRING, SUPPORTED,
       new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  MGET(new MGetExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  MSET(new MSetExecutor(), SUPPORTED,
+  INCR(new IncrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  GETRANGE(new GetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY)),
+  INCRBYFLOAT(new IncrByFloatExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  MGET(new MGetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  MSET(new MSetExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  MSETNX(new MSetNXExecutor(), SUPPORTED,
+  MSETNX(new MSetNXExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  PSETEX(new PSetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SET(new SetExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM)),
-  SETEX(new SetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SETNX(new SetNXExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  SETRANGE(new SetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  STRLEN(new StrlenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  PSETEX(new PSetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SET(new SetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM)),
+  SETEX(new SetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SETNX(new SetNXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  SETRANGE(new SetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  STRLEN(new StrlenExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Hashes *****************/
 
-  HDEL(new HDelExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  HGET(new HGetExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HGETALL(new HGetAllExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  HINCRBYFLOAT(new HIncrByFloatExecutor(), SUPPORTED,
+  HDEL(new HDelExecutor(), Category.HASH, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  HGET(new HGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HGETALL(new HGetAllExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  HINCRBYFLOAT(new HIncrByFloatExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HLEN(new HLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  HMGET(new HMGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, FAST)),
+  HMSET(new HMSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSET(new HSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSETNX(new HSetNXExecutor(), Category.HASH, SUPPORTED,
       new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HLEN(new HLenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  HMGET(new HMGetExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, FAST)),
-  HMSET(new HMSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSET(new HSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSETNX(new HSetNXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HSTRLEN(new HStrLenExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HINCRBY(new HIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HVALS(new HValsExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  HSCAN(new HScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  HSTRLEN(new HStrLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HINCRBY(new HIncrByExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HVALS(new HValsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HSCAN(new HScanExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  HEXISTS(new HExistsExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HKEYS(new HKeysExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HEXISTS(new HExistsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HKEYS(new HKeysExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
 
   /************* Sets *****************/
 
-  SADD(new SAddExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
-  SCARD(new SCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  SDIFF(new SDiffExecutor(), SUPPORTED,
+  SADD(new SAddExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
+  SCARD(new SCardExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  SDIFF(new SDiffExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SDIFFSTORE(new SDiffStoreExecutor(), SUPPORTED,
+  SDIFFSTORE(new SDiffStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SINTER(new SInterExecutor(), SUPPORTED,
+  SINTER(new SInterExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SINTERSTORE(new SInterStoreExecutor(), SUPPORTED,
+  SINTERSTORE(new SInterStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SISMEMBER(new SIsMemberExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  SMEMBERS(new SMembersExecutor(), SUPPORTED,
+  SISMEMBER(new SIsMemberExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  SMEMBERS(new SMembersExecutor(), Category.SET, SUPPORTED,
       new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  SMOVE(new SMoveExecutor(), SUPPORTED, new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
-  SPOP(new SPopExecutor(), SUPPORTED,
+  SMOVE(new SMoveExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
+  SPOP(new SPopExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, RANDOM, FAST)),
-  SRANDMEMBER(new SRandMemberExecutor(), SUPPORTED,
+  SRANDMEMBER(new SRandMemberExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(READONLY, RANDOM)),
-  SREM(new SRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  SSCAN(new SScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  SREM(new SRemExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  SSCAN(new SScanExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  SUNION(new SUnionExecutor(), SUPPORTED,
+  SUNION(new SUnionExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SUNIONSTORE(new SUnionStoreExecutor(), SUPPORTED,
+  SUNIONSTORE(new SUnionStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
 
   /************ Sorted Sets **************/
 
-  ZADD(new ZAddExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
-  ZCARD(new ZCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  ZCOUNT(new ZCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZINCRBY(new ZIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  ZINTERSTORE(new ZInterStoreExecutor(), SUPPORTED,
+  ZADD(new ZAddExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
+  ZCARD(new ZCardExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  ZCOUNT(new ZCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZINCRBY(new ZIncrByExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  ZINTERSTORE(new ZInterStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
-  ZLEXCOUNT(new ZLexCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZPOPMAX(new ZPopMaxExecutor(), SUPPORTED,
+  ZLEXCOUNT(new ZLexCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZPOPMAX(new ZPopMaxExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZPOPMIN(new ZPopMinExecutor(), SUPPORTED,
+  ZPOPMIN(new ZPopMinExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZRANGE(new ZRangeExecutor(), SUPPORTED,
+  ZRANGE(new ZRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZRANGEBYLEX(new ZRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANK(new ZRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZREM(new ZRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), SUPPORTED,
+  ZRANGEBYLEX(new ZRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANK(new ZRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZREM(new ZRemExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, FAST)),
+  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().exact(4).flags(WRITE)),
-  ZREVRANGE(new ZRevRangeExecutor(), SUPPORTED,
+  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREVRANGE(new ZRevRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), SUPPORTED,
+  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(READONLY)),
-  ZREVRANK(new ZRevRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZSCAN(new ZScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  ZREVRANK(new ZRevRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZSCAN(new ZScanExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  ZSCORE(new ZScoreExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZUNIONSTORE(new ZUnionStoreExecutor(), SUPPORTED,
+  ZSCORE(new ZScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZUNIONSTORE(new ZUnionStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
 
-  /************* Server *****************/
-  COMMAND(new COMMANDCommandExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,
-      LOADING, STALE)),
-  SLOWLOG(new SlowlogExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, LOADING, STALE)),
-  INFO(new InfoExecutor(), SUPPORTED, new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
-      .flags(RANDOM, LOADING, STALE)),
-  LOLWUT(new LolWutExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
-
-
   /********** Publish Subscribe **********/
-  SUBSCRIBE(new SubscribeExecutor(), SUPPORTED, new Parameter().min(2).firstKey(0).flags(
-      Flag.PUBSUB,
-      NOSCRIPT,
-      LOADING, STALE)),
-  PUBLISH(new PublishExecutor(), SUPPORTED,
+
+  SUBSCRIBE(new SubscribeExecutor(), Category.PUBSUB, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
+  PUBLISH(new PublishExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().exact(3).firstKey(0).flags(Flag.PUBSUB, LOADING, STALE, FAST, MAY_REPLICATE)),
-  PSUBSCRIBE(new PsubscribeExecutor(), SUPPORTED,
+  PSUBSCRIBE(new PsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUNSUBSCRIBE(new PunsubscribeExecutor(), SUPPORTED,
+  PUNSUBSCRIBE(new PunsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  UNSUBSCRIBE(new UnsubscribeExecutor(), SUPPORTED,
+  UNSUBSCRIBE(new UnsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUBSUB(new PubSubExecutor(), SUPPORTED,
+  PUBSUB(new PubSubExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, RANDOM, LOADING, STALE)),
 
-  /************* Cluster *****************/
-  CLUSTER(new ClusterExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, STALE)),
+  /************* Uncategorized *****************/
+
+  INFO(new InfoExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
+          .flags(RANDOM, LOADING, STALE)),
+  LOLWUT(new LolWutExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
+
 
   /***************************************
    ******** Unsupported Commands *********
    ***************************************/
 
-  /*************** Connection *************/
-
-  SELECT(new SelectExecutor(), UNSUPPORTED, new Parameter().exact(2).firstKey(0).flags(LOADING,
-      STALE,
-      FAST)),
+  /*************** Keyspace ******************/
 
-  /*************** Keys ******************/
-
-  SCAN(new ScanExecutor(), UNSUPPORTED, new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(
-      READONLY,
-      RANDOM)),
-  UNLINK(new DelExecutor(), UNSUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE, FAST)),
-
-  /************** Strings ****************/
-
-  BITCOUNT(new BitCountExecutor(), UNSUPPORTED, new Parameter().min(2).flags(READONLY)),
-  BITOP(new BitOpExecutor(), UNSUPPORTED,
+  DBSIZE(new DBSizeExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(1).firstKey(0).flags(READONLY, FAST)),
+  FLUSHALL(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  FLUSHDB(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  SCAN(new ScanExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(READONLY, RANDOM)),
+  SELECT(new SelectExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(LOADING, STALE, FAST)),

Review comment:
       Or were you referring to just where in the file this entry appears?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] dschneider-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RadishCommandType

Posted by GitBox <gi...@apache.org>.
dschneider-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804028975



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/server/CommandCommandExecutor.java
##########
@@ -77,6 +77,10 @@ private RedisResponse executeNoSubcommand(ExecutionHandlerContext context) {
       oneCommand.add(type.lastKey());
       oneCommand.add(type.step());
 
+      List<String> categories = new ArrayList<>();
+      categories.add("@" + type.category().name().toLowerCase());

Review comment:
       could you use Collections.singletonList here?

##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/server/CommandCommandExecutor.java
##########
@@ -39,7 +39,7 @@
  * COMMAND refers to the redis command being implemented.

Review comment:
       this javadoc needs updating since "COMMAND" is no longer part of the class name

##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -394,22 +475,28 @@
   private final Parameter parameterRequirements;
   private final Parameter deferredParameterRequirements;
   private final RedisCommandSupportLevel supportLevel;
+  private final Category category;
 
-  RedisCommandType(CommandExecutor commandExecutor, RedisCommandSupportLevel supportLevel) {
-    this(commandExecutor, supportLevel, new Parameter().custom(c -> {
+  RedisCommandType(CommandExecutor commandExecutor, Category category,
+      RedisCommandSupportLevel supportLevel) {
+    this(commandExecutor, category, supportLevel, new Parameter().custom(c -> {

Review comment:
       do we need to call "custom" to add a noop Consumer lamda? It seems like `new Parameter()` is all we need.

##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -394,22 +475,28 @@
   private final Parameter parameterRequirements;
   private final Parameter deferredParameterRequirements;
   private final RedisCommandSupportLevel supportLevel;
+  private final Category category;
 
-  RedisCommandType(CommandExecutor commandExecutor, RedisCommandSupportLevel supportLevel) {
-    this(commandExecutor, supportLevel, new Parameter().custom(c -> {
+  RedisCommandType(CommandExecutor commandExecutor, Category category,
+      RedisCommandSupportLevel supportLevel) {
+    this(commandExecutor, category, supportLevel, new Parameter().custom(c -> {
     }));
   }
 
-  RedisCommandType(CommandExecutor commandExecutor, RedisCommandSupportLevel supportLevel,
+  RedisCommandType(CommandExecutor commandExecutor, Category category,
+      RedisCommandSupportLevel supportLevel,
       Parameter parameterRequirements) {
-    this(commandExecutor, supportLevel, parameterRequirements, new Parameter().custom(c -> {
-    }));
+    this(commandExecutor, category, supportLevel, parameterRequirements,
+        new Parameter().custom(c -> {

Review comment:
       Once again `new Parameter()`




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RadishCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804132636



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -394,22 +475,28 @@
   private final Parameter parameterRequirements;
   private final Parameter deferredParameterRequirements;
   private final RedisCommandSupportLevel supportLevel;
+  private final Category category;
 
-  RedisCommandType(CommandExecutor commandExecutor, RedisCommandSupportLevel supportLevel) {
-    this(commandExecutor, supportLevel, new Parameter().custom(c -> {
+  RedisCommandType(CommandExecutor commandExecutor, Category category,
+      RedisCommandSupportLevel supportLevel) {
+    this(commandExecutor, category, supportLevel, new Parameter().custom(c -> {

Review comment:
       Yes, you're right. Fixed.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] dschneider-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RadishCommandType

Posted by GitBox <gi...@apache.org>.
dschneider-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804026572



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -477,4 +568,10 @@ public RedisResponse executeCommand(Command command,
 
     return commandExecutor.executeCommand(command, executionHandlerContext);
   }
+
+  public static List<RedisCommandType> getCommandsForCategory(Category type) {
+    return Arrays.stream(RedisCommandType.values())
+        .filter(c -> c.category == type && c.category != Category.IGNORED)

Review comment:
       why do you need "&& c.category != IGNORED"? If it is "== type" then it would not be IGNORED since "type" would never be IGNORED. 




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RadishCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804131984



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -477,4 +568,10 @@ public RedisResponse executeCommand(Command command,
 
     return commandExecutor.executeCommand(command, executionHandlerContext);
   }
+
+  public static List<RedisCommandType> getCommandsForCategory(Category type) {
+    return Arrays.stream(RedisCommandType.values())
+        .filter(c -> c.category == type && c.category != Category.IGNORED)

Review comment:
       I had some other use-case in mind. I've replaced `IGNORED` with `UNCATEGORIZED` and removed this check.

##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/server/CommandCommandExecutor.java
##########
@@ -39,7 +39,7 @@
  * COMMAND refers to the redis command being implemented.

Review comment:
       Updated.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] nonbinaryprogrammer commented on a change in pull request #7354: GEODE-10032: Add Category to RedisCommandType

Posted by GitBox <gi...@apache.org>.
nonbinaryprogrammer commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804936941



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -163,215 +165,295 @@
    *** Supported Commands ***
    ***************************************/
 
+  /***************** Admin *******************/
+  CLUSTER(new ClusterExecutor(), Category.ADMIN, SUPPORTED,
+      new Parameter().min(2).custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
+          .flags(Flag.ADMIN, RANDOM, STALE)),
+  QUIT(new QuitExecutor(), Category.ADMIN, SUPPORTED, new Parameter().firstKey(0)),
+  SLOWLOG(new SlowlogExecutor(), Category.ADMIN, SUPPORTED, new Parameter().min(2)
+      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
+      .flags(Flag.ADMIN, RANDOM, LOADING, STALE)),
+
   /*************** Connection ****************/
-  AUTH(new AuthExecutor(), SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
-      .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
-  CLIENT(new ClientExecutor(), SUPPORTED,
-      new Parameter().min(2).firstKey(0).flags(ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
-  ECHO(new EchoExecutor(), SUPPORTED, new Parameter().exact(2).firstKey(0).flags(FAST)),
-  PING(new PingExecutor(), SUPPORTED, new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
-  QUIT(new QuitExecutor(), SUPPORTED, new Parameter().firstKey(0)),
-
-  /*************** Keys ******************/
-
-  DEL(new DelExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
-  DUMP(new DumpExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  EXISTS(new ExistsExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  EXPIRE(new ExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  EXPIREAT(new ExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  KEYS(new KeysExecutor(), SUPPORTED,
+  AUTH(new AuthExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
+          .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
+  CLIENT(new ClientExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
+  ECHO(new EchoExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(FAST)),
+  PING(new PingExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
+  COMMAND(new CommandCommandExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(RANDOM, LOADING, STALE)),
+
+  /*************** Keyspace ******************/
+
+  DEL(new DelExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(WRITE)),
+  DUMP(new DumpExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  EXISTS(new ExistsExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  EXPIRE(new ExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  EXPIREAT(new ExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  KEYS(new KeysExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(2).firstKey(0).flags(READONLY, SORT_FOR_SCRIPT)),
-  PERSIST(new PersistExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, FAST)),
-  PEXPIRE(new PExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PEXPIREAT(new PExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PTTL(new PTTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  RENAME(new RenameExecutor(), SUPPORTED, new Parameter().exact(3).lastKey(2).flags(WRITE)),
-  RENAMENX(new RenameNXExecutor(), SUPPORTED,
+  PERSIST(new PersistExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, FAST)),
+  PEXPIRE(new PExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PEXPIREAT(new PExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PTTL(new PTTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  RENAME(new RenameExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).lastKey(2).flags(WRITE)),
+  RENAMENX(new RenameNXExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(3).lastKey(2).flags(WRITE, FAST)),
-  RESTORE(new RestoreExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM)),
-  TTL(new TTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  TYPE(new TypeExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  RESTORE(new RestoreExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM)),
+  TTL(new TTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  TYPE(new TypeExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Strings *****************/
 
-  APPEND(new AppendExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  DECR(new DecrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  DECRBY(new DecrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  GET(new GetExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  GETSET(new GetSetExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCRBY(new IncrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCR(new IncrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  GETRANGE(new GetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY)),
-  INCRBYFLOAT(new IncrByFloatExecutor(), SUPPORTED,
+  APPEND(new AppendExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  DECR(new DecrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  DECRBY(new DecrByExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  GET(new GetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  GETSET(new GetSetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCRBY(new IncrByExecutor(), Category.STRING, SUPPORTED,
       new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  MGET(new MGetExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  MSET(new MSetExecutor(), SUPPORTED,
+  INCR(new IncrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  GETRANGE(new GetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY)),
+  INCRBYFLOAT(new IncrByFloatExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  MGET(new MGetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  MSET(new MSetExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  MSETNX(new MSetNXExecutor(), SUPPORTED,
+  MSETNX(new MSetNXExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  PSETEX(new PSetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SET(new SetExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM)),
-  SETEX(new SetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SETNX(new SetNXExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  SETRANGE(new SetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  STRLEN(new StrlenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  PSETEX(new PSetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SET(new SetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM)),
+  SETEX(new SetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SETNX(new SetNXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  SETRANGE(new SetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  STRLEN(new StrlenExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Hashes *****************/
 
-  HDEL(new HDelExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  HGET(new HGetExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HGETALL(new HGetAllExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  HINCRBYFLOAT(new HIncrByFloatExecutor(), SUPPORTED,
+  HDEL(new HDelExecutor(), Category.HASH, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  HGET(new HGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HGETALL(new HGetAllExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  HINCRBYFLOAT(new HIncrByFloatExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HLEN(new HLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  HMGET(new HMGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, FAST)),
+  HMSET(new HMSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSET(new HSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSETNX(new HSetNXExecutor(), Category.HASH, SUPPORTED,
       new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HLEN(new HLenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  HMGET(new HMGetExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, FAST)),
-  HMSET(new HMSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSET(new HSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSETNX(new HSetNXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HSTRLEN(new HStrLenExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HINCRBY(new HIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HVALS(new HValsExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  HSCAN(new HScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  HSTRLEN(new HStrLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HINCRBY(new HIncrByExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HVALS(new HValsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HSCAN(new HScanExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  HEXISTS(new HExistsExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HKEYS(new HKeysExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HEXISTS(new HExistsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HKEYS(new HKeysExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
 
   /************* Sets *****************/
 
-  SADD(new SAddExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
-  SCARD(new SCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  SDIFF(new SDiffExecutor(), SUPPORTED,
+  SADD(new SAddExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
+  SCARD(new SCardExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  SDIFF(new SDiffExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SDIFFSTORE(new SDiffStoreExecutor(), SUPPORTED,
+  SDIFFSTORE(new SDiffStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SINTER(new SInterExecutor(), SUPPORTED,
+  SINTER(new SInterExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SINTERSTORE(new SInterStoreExecutor(), SUPPORTED,
+  SINTERSTORE(new SInterStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SISMEMBER(new SIsMemberExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  SMEMBERS(new SMembersExecutor(), SUPPORTED,
+  SISMEMBER(new SIsMemberExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  SMEMBERS(new SMembersExecutor(), Category.SET, SUPPORTED,
       new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  SMOVE(new SMoveExecutor(), SUPPORTED, new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
-  SPOP(new SPopExecutor(), SUPPORTED,
+  SMOVE(new SMoveExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
+  SPOP(new SPopExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, RANDOM, FAST)),
-  SRANDMEMBER(new SRandMemberExecutor(), SUPPORTED,
+  SRANDMEMBER(new SRandMemberExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(READONLY, RANDOM)),
-  SREM(new SRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  SSCAN(new SScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  SREM(new SRemExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  SSCAN(new SScanExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  SUNION(new SUnionExecutor(), SUPPORTED,
+  SUNION(new SUnionExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SUNIONSTORE(new SUnionStoreExecutor(), SUPPORTED,
+  SUNIONSTORE(new SUnionStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
 
   /************ Sorted Sets **************/
 
-  ZADD(new ZAddExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
-  ZCARD(new ZCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  ZCOUNT(new ZCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZINCRBY(new ZIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  ZINTERSTORE(new ZInterStoreExecutor(), SUPPORTED,
+  ZADD(new ZAddExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
+  ZCARD(new ZCardExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  ZCOUNT(new ZCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZINCRBY(new ZIncrByExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  ZINTERSTORE(new ZInterStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
-  ZLEXCOUNT(new ZLexCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZPOPMAX(new ZPopMaxExecutor(), SUPPORTED,
+  ZLEXCOUNT(new ZLexCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZPOPMAX(new ZPopMaxExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZPOPMIN(new ZPopMinExecutor(), SUPPORTED,
+  ZPOPMIN(new ZPopMinExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZRANGE(new ZRangeExecutor(), SUPPORTED,
+  ZRANGE(new ZRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZRANGEBYLEX(new ZRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANK(new ZRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZREM(new ZRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), SUPPORTED,
+  ZRANGEBYLEX(new ZRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANK(new ZRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZREM(new ZRemExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, FAST)),
+  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().exact(4).flags(WRITE)),
-  ZREVRANGE(new ZRevRangeExecutor(), SUPPORTED,
+  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREVRANGE(new ZRevRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), SUPPORTED,
+  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(READONLY)),
-  ZREVRANK(new ZRevRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZSCAN(new ZScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  ZREVRANK(new ZRevRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZSCAN(new ZScanExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  ZSCORE(new ZScoreExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZUNIONSTORE(new ZUnionStoreExecutor(), SUPPORTED,
+  ZSCORE(new ZScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZUNIONSTORE(new ZUnionStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
 
-  /************* Server *****************/
-  COMMAND(new COMMANDCommandExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,
-      LOADING, STALE)),
-  SLOWLOG(new SlowlogExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, LOADING, STALE)),
-  INFO(new InfoExecutor(), SUPPORTED, new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
-      .flags(RANDOM, LOADING, STALE)),
-  LOLWUT(new LolWutExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
-
-
   /********** Publish Subscribe **********/
-  SUBSCRIBE(new SubscribeExecutor(), SUPPORTED, new Parameter().min(2).firstKey(0).flags(
-      Flag.PUBSUB,
-      NOSCRIPT,
-      LOADING, STALE)),
-  PUBLISH(new PublishExecutor(), SUPPORTED,
+
+  SUBSCRIBE(new SubscribeExecutor(), Category.PUBSUB, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
+  PUBLISH(new PublishExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().exact(3).firstKey(0).flags(Flag.PUBSUB, LOADING, STALE, FAST, MAY_REPLICATE)),
-  PSUBSCRIBE(new PsubscribeExecutor(), SUPPORTED,
+  PSUBSCRIBE(new PsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUNSUBSCRIBE(new PunsubscribeExecutor(), SUPPORTED,
+  PUNSUBSCRIBE(new PunsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  UNSUBSCRIBE(new UnsubscribeExecutor(), SUPPORTED,
+  UNSUBSCRIBE(new UnsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUBSUB(new PubSubExecutor(), SUPPORTED,
+  PUBSUB(new PubSubExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, RANDOM, LOADING, STALE)),
 
-  /************* Cluster *****************/
-  CLUSTER(new ClusterExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, STALE)),
+  /************* Uncategorized *****************/
+
+  INFO(new InfoExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
+          .flags(RANDOM, LOADING, STALE)),
+  LOLWUT(new LolWutExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
+
 
   /***************************************
    ******** Unsupported Commands *********
    ***************************************/
 
-  /*************** Connection *************/
-
-  SELECT(new SelectExecutor(), UNSUPPORTED, new Parameter().exact(2).firstKey(0).flags(LOADING,
-      STALE,
-      FAST)),
+  /*************** Keyspace ******************/
 
-  /*************** Keys ******************/
-
-  SCAN(new ScanExecutor(), UNSUPPORTED, new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(
-      READONLY,
-      RANDOM)),
-  UNLINK(new DelExecutor(), UNSUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE, FAST)),
-
-  /************** Strings ****************/
-
-  BITCOUNT(new BitCountExecutor(), UNSUPPORTED, new Parameter().min(2).flags(READONLY)),
-  BITOP(new BitOpExecutor(), UNSUPPORTED,
+  DBSIZE(new DBSizeExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(1).firstKey(0).flags(READONLY, FAST)),
+  FLUSHALL(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  FLUSHDB(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  SCAN(new ScanExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(READONLY, RANDOM)),
+  SELECT(new SelectExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(LOADING, STALE, FAST)),

Review comment:
       I think select still needs to be in the connection section. In the redis docs all the related commands are connection commands




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RedisCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r805003477



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -163,215 +165,295 @@
    *** Supported Commands ***
    ***************************************/
 
+  /***************** Admin *******************/
+  CLUSTER(new ClusterExecutor(), Category.ADMIN, SUPPORTED,
+      new Parameter().min(2).custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
+          .flags(Flag.ADMIN, RANDOM, STALE)),
+  QUIT(new QuitExecutor(), Category.ADMIN, SUPPORTED, new Parameter().firstKey(0)),
+  SLOWLOG(new SlowlogExecutor(), Category.ADMIN, SUPPORTED, new Parameter().min(2)
+      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
+      .flags(Flag.ADMIN, RANDOM, LOADING, STALE)),
+
   /*************** Connection ****************/
-  AUTH(new AuthExecutor(), SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
-      .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
-  CLIENT(new ClientExecutor(), SUPPORTED,
-      new Parameter().min(2).firstKey(0).flags(ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
-  ECHO(new EchoExecutor(), SUPPORTED, new Parameter().exact(2).firstKey(0).flags(FAST)),
-  PING(new PingExecutor(), SUPPORTED, new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
-  QUIT(new QuitExecutor(), SUPPORTED, new Parameter().firstKey(0)),
-
-  /*************** Keys ******************/
-
-  DEL(new DelExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
-  DUMP(new DumpExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  EXISTS(new ExistsExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  EXPIRE(new ExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  EXPIREAT(new ExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  KEYS(new KeysExecutor(), SUPPORTED,
+  AUTH(new AuthExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
+          .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
+  CLIENT(new ClientExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
+  ECHO(new EchoExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(FAST)),
+  PING(new PingExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
+  COMMAND(new CommandCommandExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(RANDOM, LOADING, STALE)),
+
+  /*************** Keyspace ******************/
+
+  DEL(new DelExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(WRITE)),
+  DUMP(new DumpExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  EXISTS(new ExistsExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  EXPIRE(new ExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  EXPIREAT(new ExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  KEYS(new KeysExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(2).firstKey(0).flags(READONLY, SORT_FOR_SCRIPT)),
-  PERSIST(new PersistExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, FAST)),
-  PEXPIRE(new PExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PEXPIREAT(new PExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PTTL(new PTTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  RENAME(new RenameExecutor(), SUPPORTED, new Parameter().exact(3).lastKey(2).flags(WRITE)),
-  RENAMENX(new RenameNXExecutor(), SUPPORTED,
+  PERSIST(new PersistExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, FAST)),
+  PEXPIRE(new PExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PEXPIREAT(new PExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PTTL(new PTTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  RENAME(new RenameExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).lastKey(2).flags(WRITE)),
+  RENAMENX(new RenameNXExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(3).lastKey(2).flags(WRITE, FAST)),
-  RESTORE(new RestoreExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM)),
-  TTL(new TTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  TYPE(new TypeExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  RESTORE(new RestoreExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM)),
+  TTL(new TTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  TYPE(new TypeExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Strings *****************/
 
-  APPEND(new AppendExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  DECR(new DecrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  DECRBY(new DecrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  GET(new GetExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  GETSET(new GetSetExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCRBY(new IncrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCR(new IncrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  GETRANGE(new GetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY)),
-  INCRBYFLOAT(new IncrByFloatExecutor(), SUPPORTED,
+  APPEND(new AppendExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  DECR(new DecrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  DECRBY(new DecrByExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  GET(new GetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  GETSET(new GetSetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCRBY(new IncrByExecutor(), Category.STRING, SUPPORTED,
       new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  MGET(new MGetExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  MSET(new MSetExecutor(), SUPPORTED,
+  INCR(new IncrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  GETRANGE(new GetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY)),
+  INCRBYFLOAT(new IncrByFloatExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  MGET(new MGetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  MSET(new MSetExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  MSETNX(new MSetNXExecutor(), SUPPORTED,
+  MSETNX(new MSetNXExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  PSETEX(new PSetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SET(new SetExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM)),
-  SETEX(new SetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SETNX(new SetNXExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  SETRANGE(new SetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  STRLEN(new StrlenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  PSETEX(new PSetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SET(new SetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM)),
+  SETEX(new SetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SETNX(new SetNXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  SETRANGE(new SetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  STRLEN(new StrlenExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Hashes *****************/
 
-  HDEL(new HDelExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  HGET(new HGetExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HGETALL(new HGetAllExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  HINCRBYFLOAT(new HIncrByFloatExecutor(), SUPPORTED,
+  HDEL(new HDelExecutor(), Category.HASH, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  HGET(new HGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HGETALL(new HGetAllExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  HINCRBYFLOAT(new HIncrByFloatExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HLEN(new HLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  HMGET(new HMGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, FAST)),
+  HMSET(new HMSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSET(new HSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSETNX(new HSetNXExecutor(), Category.HASH, SUPPORTED,
       new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HLEN(new HLenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  HMGET(new HMGetExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, FAST)),
-  HMSET(new HMSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSET(new HSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSETNX(new HSetNXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HSTRLEN(new HStrLenExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HINCRBY(new HIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HVALS(new HValsExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  HSCAN(new HScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  HSTRLEN(new HStrLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HINCRBY(new HIncrByExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HVALS(new HValsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HSCAN(new HScanExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  HEXISTS(new HExistsExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HKEYS(new HKeysExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HEXISTS(new HExistsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HKEYS(new HKeysExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
 
   /************* Sets *****************/
 
-  SADD(new SAddExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
-  SCARD(new SCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  SDIFF(new SDiffExecutor(), SUPPORTED,
+  SADD(new SAddExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
+  SCARD(new SCardExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  SDIFF(new SDiffExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SDIFFSTORE(new SDiffStoreExecutor(), SUPPORTED,
+  SDIFFSTORE(new SDiffStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SINTER(new SInterExecutor(), SUPPORTED,
+  SINTER(new SInterExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SINTERSTORE(new SInterStoreExecutor(), SUPPORTED,
+  SINTERSTORE(new SInterStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SISMEMBER(new SIsMemberExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  SMEMBERS(new SMembersExecutor(), SUPPORTED,
+  SISMEMBER(new SIsMemberExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  SMEMBERS(new SMembersExecutor(), Category.SET, SUPPORTED,
       new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  SMOVE(new SMoveExecutor(), SUPPORTED, new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
-  SPOP(new SPopExecutor(), SUPPORTED,
+  SMOVE(new SMoveExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
+  SPOP(new SPopExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, RANDOM, FAST)),
-  SRANDMEMBER(new SRandMemberExecutor(), SUPPORTED,
+  SRANDMEMBER(new SRandMemberExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(READONLY, RANDOM)),
-  SREM(new SRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  SSCAN(new SScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  SREM(new SRemExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  SSCAN(new SScanExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  SUNION(new SUnionExecutor(), SUPPORTED,
+  SUNION(new SUnionExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SUNIONSTORE(new SUnionStoreExecutor(), SUPPORTED,
+  SUNIONSTORE(new SUnionStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
 
   /************ Sorted Sets **************/
 
-  ZADD(new ZAddExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
-  ZCARD(new ZCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  ZCOUNT(new ZCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZINCRBY(new ZIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  ZINTERSTORE(new ZInterStoreExecutor(), SUPPORTED,
+  ZADD(new ZAddExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
+  ZCARD(new ZCardExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  ZCOUNT(new ZCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZINCRBY(new ZIncrByExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  ZINTERSTORE(new ZInterStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
-  ZLEXCOUNT(new ZLexCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZPOPMAX(new ZPopMaxExecutor(), SUPPORTED,
+  ZLEXCOUNT(new ZLexCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZPOPMAX(new ZPopMaxExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZPOPMIN(new ZPopMinExecutor(), SUPPORTED,
+  ZPOPMIN(new ZPopMinExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZRANGE(new ZRangeExecutor(), SUPPORTED,
+  ZRANGE(new ZRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZRANGEBYLEX(new ZRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANK(new ZRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZREM(new ZRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), SUPPORTED,
+  ZRANGEBYLEX(new ZRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANK(new ZRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZREM(new ZRemExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, FAST)),
+  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().exact(4).flags(WRITE)),
-  ZREVRANGE(new ZRevRangeExecutor(), SUPPORTED,
+  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREVRANGE(new ZRevRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), SUPPORTED,
+  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(READONLY)),
-  ZREVRANK(new ZRevRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZSCAN(new ZScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  ZREVRANK(new ZRevRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZSCAN(new ZScanExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  ZSCORE(new ZScoreExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZUNIONSTORE(new ZUnionStoreExecutor(), SUPPORTED,
+  ZSCORE(new ZScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZUNIONSTORE(new ZUnionStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
 
-  /************* Server *****************/
-  COMMAND(new COMMANDCommandExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,
-      LOADING, STALE)),
-  SLOWLOG(new SlowlogExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, LOADING, STALE)),
-  INFO(new InfoExecutor(), SUPPORTED, new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
-      .flags(RANDOM, LOADING, STALE)),
-  LOLWUT(new LolWutExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
-
-
   /********** Publish Subscribe **********/
-  SUBSCRIBE(new SubscribeExecutor(), SUPPORTED, new Parameter().min(2).firstKey(0).flags(
-      Flag.PUBSUB,
-      NOSCRIPT,
-      LOADING, STALE)),
-  PUBLISH(new PublishExecutor(), SUPPORTED,
+
+  SUBSCRIBE(new SubscribeExecutor(), Category.PUBSUB, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
+  PUBLISH(new PublishExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().exact(3).firstKey(0).flags(Flag.PUBSUB, LOADING, STALE, FAST, MAY_REPLICATE)),
-  PSUBSCRIBE(new PsubscribeExecutor(), SUPPORTED,
+  PSUBSCRIBE(new PsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUNSUBSCRIBE(new PunsubscribeExecutor(), SUPPORTED,
+  PUNSUBSCRIBE(new PunsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  UNSUBSCRIBE(new UnsubscribeExecutor(), SUPPORTED,
+  UNSUBSCRIBE(new UnsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUBSUB(new PubSubExecutor(), SUPPORTED,
+  PUBSUB(new PubSubExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, RANDOM, LOADING, STALE)),
 
-  /************* Cluster *****************/
-  CLUSTER(new ClusterExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, STALE)),
+  /************* Uncategorized *****************/
+
+  INFO(new InfoExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
+          .flags(RANDOM, LOADING, STALE)),
+  LOLWUT(new LolWutExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
+
 
   /***************************************
    ******** Unsupported Commands *********
    ***************************************/
 
-  /*************** Connection *************/
-
-  SELECT(new SelectExecutor(), UNSUPPORTED, new Parameter().exact(2).firstKey(0).flags(LOADING,
-      STALE,
-      FAST)),
+  /*************** Keyspace ******************/
 
-  /*************** Keys ******************/
-
-  SCAN(new ScanExecutor(), UNSUPPORTED, new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(
-      READONLY,
-      RANDOM)),
-  UNLINK(new DelExecutor(), UNSUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE, FAST)),
-
-  /************** Strings ****************/
-
-  BITCOUNT(new BitCountExecutor(), UNSUPPORTED, new Parameter().min(2).flags(READONLY)),
-  BITOP(new BitOpExecutor(), UNSUPPORTED,
+  DBSIZE(new DBSizeExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(1).firstKey(0).flags(READONLY, FAST)),
+  FLUSHALL(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  FLUSHDB(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  SCAN(new ScanExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(READONLY, RANDOM)),
+  SELECT(new SelectExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(LOADING, STALE, FAST)),

Review comment:
       The category information is derived from the categories returned by the `INFO` command. So against Redis, `INFO SELECT` lists the categories as `@keyspace` and `@fast`. Using these values allows us to verify against a stricter source (any given redis version). The docs are a lot less specific and could easily re-categorize commands without us knowing.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RadishCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804347209



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/executor/server/CommandCommandExecutor.java
##########
@@ -77,6 +77,10 @@ private RedisResponse executeNoSubcommand(ExecutionHandlerContext context) {
       oneCommand.add(type.lastKey());
       oneCommand.add(type.step());
 
+      List<String> categories = new ArrayList<>();
+      categories.add("@" + type.category().name().toLowerCase());

Review comment:
       Fixed.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] nonbinaryprogrammer commented on a change in pull request #7354: GEODE-10032: Add Category to RedisCommandType

Posted by GitBox <gi...@apache.org>.
nonbinaryprogrammer commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r806078426



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -163,215 +165,295 @@
    *** Supported Commands ***
    ***************************************/
 
+  /***************** Admin *******************/
+  CLUSTER(new ClusterExecutor(), Category.ADMIN, SUPPORTED,
+      new Parameter().min(2).custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
+          .flags(Flag.ADMIN, RANDOM, STALE)),
+  QUIT(new QuitExecutor(), Category.ADMIN, SUPPORTED, new Parameter().firstKey(0)),
+  SLOWLOG(new SlowlogExecutor(), Category.ADMIN, SUPPORTED, new Parameter().min(2)
+      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
+      .flags(Flag.ADMIN, RANDOM, LOADING, STALE)),
+
   /*************** Connection ****************/
-  AUTH(new AuthExecutor(), SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
-      .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
-  CLIENT(new ClientExecutor(), SUPPORTED,
-      new Parameter().min(2).firstKey(0).flags(ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
-  ECHO(new EchoExecutor(), SUPPORTED, new Parameter().exact(2).firstKey(0).flags(FAST)),
-  PING(new PingExecutor(), SUPPORTED, new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
-  QUIT(new QuitExecutor(), SUPPORTED, new Parameter().firstKey(0)),
-
-  /*************** Keys ******************/
-
-  DEL(new DelExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
-  DUMP(new DumpExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  EXISTS(new ExistsExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  EXPIRE(new ExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  EXPIREAT(new ExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  KEYS(new KeysExecutor(), SUPPORTED,
+  AUTH(new AuthExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
+          .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
+  CLIENT(new ClientExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
+  ECHO(new EchoExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(FAST)),
+  PING(new PingExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
+  COMMAND(new CommandCommandExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(RANDOM, LOADING, STALE)),
+
+  /*************** Keyspace ******************/
+
+  DEL(new DelExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(WRITE)),
+  DUMP(new DumpExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  EXISTS(new ExistsExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  EXPIRE(new ExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  EXPIREAT(new ExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  KEYS(new KeysExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(2).firstKey(0).flags(READONLY, SORT_FOR_SCRIPT)),
-  PERSIST(new PersistExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, FAST)),
-  PEXPIRE(new PExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PEXPIREAT(new PExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PTTL(new PTTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  RENAME(new RenameExecutor(), SUPPORTED, new Parameter().exact(3).lastKey(2).flags(WRITE)),
-  RENAMENX(new RenameNXExecutor(), SUPPORTED,
+  PERSIST(new PersistExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, FAST)),
+  PEXPIRE(new PExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PEXPIREAT(new PExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PTTL(new PTTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  RENAME(new RenameExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).lastKey(2).flags(WRITE)),
+  RENAMENX(new RenameNXExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(3).lastKey(2).flags(WRITE, FAST)),
-  RESTORE(new RestoreExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM)),
-  TTL(new TTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  TYPE(new TypeExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  RESTORE(new RestoreExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM)),
+  TTL(new TTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  TYPE(new TypeExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Strings *****************/
 
-  APPEND(new AppendExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  DECR(new DecrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  DECRBY(new DecrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  GET(new GetExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  GETSET(new GetSetExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCRBY(new IncrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCR(new IncrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  GETRANGE(new GetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY)),
-  INCRBYFLOAT(new IncrByFloatExecutor(), SUPPORTED,
+  APPEND(new AppendExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  DECR(new DecrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  DECRBY(new DecrByExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  GET(new GetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  GETSET(new GetSetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCRBY(new IncrByExecutor(), Category.STRING, SUPPORTED,
       new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  MGET(new MGetExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  MSET(new MSetExecutor(), SUPPORTED,
+  INCR(new IncrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  GETRANGE(new GetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY)),
+  INCRBYFLOAT(new IncrByFloatExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  MGET(new MGetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  MSET(new MSetExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  MSETNX(new MSetNXExecutor(), SUPPORTED,
+  MSETNX(new MSetNXExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  PSETEX(new PSetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SET(new SetExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM)),
-  SETEX(new SetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SETNX(new SetNXExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  SETRANGE(new SetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  STRLEN(new StrlenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  PSETEX(new PSetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SET(new SetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM)),
+  SETEX(new SetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SETNX(new SetNXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  SETRANGE(new SetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  STRLEN(new StrlenExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Hashes *****************/
 
-  HDEL(new HDelExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  HGET(new HGetExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HGETALL(new HGetAllExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  HINCRBYFLOAT(new HIncrByFloatExecutor(), SUPPORTED,
+  HDEL(new HDelExecutor(), Category.HASH, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  HGET(new HGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HGETALL(new HGetAllExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  HINCRBYFLOAT(new HIncrByFloatExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HLEN(new HLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  HMGET(new HMGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, FAST)),
+  HMSET(new HMSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSET(new HSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSETNX(new HSetNXExecutor(), Category.HASH, SUPPORTED,
       new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HLEN(new HLenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  HMGET(new HMGetExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, FAST)),
-  HMSET(new HMSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSET(new HSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSETNX(new HSetNXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HSTRLEN(new HStrLenExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HINCRBY(new HIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HVALS(new HValsExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  HSCAN(new HScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  HSTRLEN(new HStrLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HINCRBY(new HIncrByExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HVALS(new HValsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HSCAN(new HScanExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  HEXISTS(new HExistsExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HKEYS(new HKeysExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HEXISTS(new HExistsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HKEYS(new HKeysExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
 
   /************* Sets *****************/
 
-  SADD(new SAddExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
-  SCARD(new SCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  SDIFF(new SDiffExecutor(), SUPPORTED,
+  SADD(new SAddExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
+  SCARD(new SCardExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  SDIFF(new SDiffExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SDIFFSTORE(new SDiffStoreExecutor(), SUPPORTED,
+  SDIFFSTORE(new SDiffStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SINTER(new SInterExecutor(), SUPPORTED,
+  SINTER(new SInterExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SINTERSTORE(new SInterStoreExecutor(), SUPPORTED,
+  SINTERSTORE(new SInterStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SISMEMBER(new SIsMemberExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  SMEMBERS(new SMembersExecutor(), SUPPORTED,
+  SISMEMBER(new SIsMemberExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  SMEMBERS(new SMembersExecutor(), Category.SET, SUPPORTED,
       new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  SMOVE(new SMoveExecutor(), SUPPORTED, new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
-  SPOP(new SPopExecutor(), SUPPORTED,
+  SMOVE(new SMoveExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
+  SPOP(new SPopExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, RANDOM, FAST)),
-  SRANDMEMBER(new SRandMemberExecutor(), SUPPORTED,
+  SRANDMEMBER(new SRandMemberExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(READONLY, RANDOM)),
-  SREM(new SRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  SSCAN(new SScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  SREM(new SRemExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  SSCAN(new SScanExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  SUNION(new SUnionExecutor(), SUPPORTED,
+  SUNION(new SUnionExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SUNIONSTORE(new SUnionStoreExecutor(), SUPPORTED,
+  SUNIONSTORE(new SUnionStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
 
   /************ Sorted Sets **************/
 
-  ZADD(new ZAddExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
-  ZCARD(new ZCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  ZCOUNT(new ZCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZINCRBY(new ZIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  ZINTERSTORE(new ZInterStoreExecutor(), SUPPORTED,
+  ZADD(new ZAddExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
+  ZCARD(new ZCardExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  ZCOUNT(new ZCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZINCRBY(new ZIncrByExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  ZINTERSTORE(new ZInterStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
-  ZLEXCOUNT(new ZLexCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZPOPMAX(new ZPopMaxExecutor(), SUPPORTED,
+  ZLEXCOUNT(new ZLexCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZPOPMAX(new ZPopMaxExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZPOPMIN(new ZPopMinExecutor(), SUPPORTED,
+  ZPOPMIN(new ZPopMinExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZRANGE(new ZRangeExecutor(), SUPPORTED,
+  ZRANGE(new ZRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZRANGEBYLEX(new ZRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANK(new ZRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZREM(new ZRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), SUPPORTED,
+  ZRANGEBYLEX(new ZRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANK(new ZRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZREM(new ZRemExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, FAST)),
+  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().exact(4).flags(WRITE)),
-  ZREVRANGE(new ZRevRangeExecutor(), SUPPORTED,
+  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREVRANGE(new ZRevRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), SUPPORTED,
+  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(READONLY)),
-  ZREVRANK(new ZRevRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZSCAN(new ZScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  ZREVRANK(new ZRevRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZSCAN(new ZScanExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  ZSCORE(new ZScoreExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZUNIONSTORE(new ZUnionStoreExecutor(), SUPPORTED,
+  ZSCORE(new ZScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZUNIONSTORE(new ZUnionStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
 
-  /************* Server *****************/
-  COMMAND(new COMMANDCommandExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,
-      LOADING, STALE)),
-  SLOWLOG(new SlowlogExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, LOADING, STALE)),
-  INFO(new InfoExecutor(), SUPPORTED, new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
-      .flags(RANDOM, LOADING, STALE)),
-  LOLWUT(new LolWutExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
-
-
   /********** Publish Subscribe **********/
-  SUBSCRIBE(new SubscribeExecutor(), SUPPORTED, new Parameter().min(2).firstKey(0).flags(
-      Flag.PUBSUB,
-      NOSCRIPT,
-      LOADING, STALE)),
-  PUBLISH(new PublishExecutor(), SUPPORTED,
+
+  SUBSCRIBE(new SubscribeExecutor(), Category.PUBSUB, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
+  PUBLISH(new PublishExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().exact(3).firstKey(0).flags(Flag.PUBSUB, LOADING, STALE, FAST, MAY_REPLICATE)),
-  PSUBSCRIBE(new PsubscribeExecutor(), SUPPORTED,
+  PSUBSCRIBE(new PsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUNSUBSCRIBE(new PunsubscribeExecutor(), SUPPORTED,
+  PUNSUBSCRIBE(new PunsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  UNSUBSCRIBE(new UnsubscribeExecutor(), SUPPORTED,
+  UNSUBSCRIBE(new UnsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUBSUB(new PubSubExecutor(), SUPPORTED,
+  PUBSUB(new PubSubExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, RANDOM, LOADING, STALE)),
 
-  /************* Cluster *****************/
-  CLUSTER(new ClusterExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, STALE)),
+  /************* Uncategorized *****************/
+
+  INFO(new InfoExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
+          .flags(RANDOM, LOADING, STALE)),
+  LOLWUT(new LolWutExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
+
 
   /***************************************
    ******** Unsupported Commands *********
    ***************************************/
 
-  /*************** Connection *************/
-
-  SELECT(new SelectExecutor(), UNSUPPORTED, new Parameter().exact(2).firstKey(0).flags(LOADING,
-      STALE,
-      FAST)),
+  /*************** Keyspace ******************/
 
-  /*************** Keys ******************/
-
-  SCAN(new ScanExecutor(), UNSUPPORTED, new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(
-      READONLY,
-      RANDOM)),
-  UNLINK(new DelExecutor(), UNSUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE, FAST)),
-
-  /************** Strings ****************/
-
-  BITCOUNT(new BitCountExecutor(), UNSUPPORTED, new Parameter().min(2).flags(READONLY)),
-  BITOP(new BitOpExecutor(), UNSUPPORTED,
+  DBSIZE(new DBSizeExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(1).firstKey(0).flags(READONLY, FAST)),
+  FLUSHALL(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  FLUSHDB(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  SCAN(new ScanExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(READONLY, RANDOM)),
+  SELECT(new SelectExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(LOADING, STALE, FAST)),

Review comment:
       yes, I was just referring to its location. but if the info command has it in that section then that's fine. makes sense to use the info command to categorize our commands




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RadishCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804131426



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -164,214 +166,293 @@
    ***************************************/
 
   /*************** Connection ****************/
-  AUTH(new AuthExecutor(), SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
+  AUTH(new AuthExecutor(), Category.CONNECTION, SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
       .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
-  CLIENT(new ClientExecutor(), SUPPORTED,
-      new Parameter().min(2).firstKey(0).flags(ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
-  ECHO(new EchoExecutor(), SUPPORTED, new Parameter().exact(2).firstKey(0).flags(FAST)),
-  PING(new PingExecutor(), SUPPORTED, new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
-  QUIT(new QuitExecutor(), SUPPORTED, new Parameter().firstKey(0)),
+  CLIENT(new ClientExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
+  ECHO(new EchoExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(FAST)),
+  PING(new PingExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
+  QUIT(new QuitExecutor(), Category.ADMIN, SUPPORTED, new Parameter().firstKey(0)),
 
   /*************** Keys ******************/
 
-  DEL(new DelExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
-  DUMP(new DumpExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  EXISTS(new ExistsExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  EXPIRE(new ExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  EXPIREAT(new ExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  KEYS(new KeysExecutor(), SUPPORTED,
+  DEL(new DelExecutor(), Category.KEYSPACE, SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
+  DUMP(new DumpExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  EXISTS(new ExistsExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  EXPIRE(new ExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  EXPIREAT(new ExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  KEYS(new KeysExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(2).firstKey(0).flags(READONLY, SORT_FOR_SCRIPT)),
-  PERSIST(new PersistExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, FAST)),
-  PEXPIRE(new PExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PEXPIREAT(new PExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PTTL(new PTTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  RENAME(new RenameExecutor(), SUPPORTED, new Parameter().exact(3).lastKey(2).flags(WRITE)),
-  RENAMENX(new RenameNXExecutor(), SUPPORTED,
+  PERSIST(new PersistExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, FAST)),
+  PEXPIRE(new PExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PEXPIREAT(new PExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PTTL(new PTTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  RENAME(new RenameExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).lastKey(2).flags(WRITE)),
+  RENAMENX(new RenameNXExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(3).lastKey(2).flags(WRITE, FAST)),
-  RESTORE(new RestoreExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM)),
-  TTL(new TTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  TYPE(new TypeExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  RESTORE(new RestoreExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM)),
+  TTL(new TTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  TYPE(new TypeExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Strings *****************/
 
-  APPEND(new AppendExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  DECR(new DecrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  DECRBY(new DecrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  GET(new GetExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  GETSET(new GetSetExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCRBY(new IncrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCR(new IncrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  GETRANGE(new GetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY)),
-  INCRBYFLOAT(new IncrByFloatExecutor(), SUPPORTED,
+  APPEND(new AppendExecutor(), Category.STRING, SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  DECR(new DecrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  DECRBY(new DecrByExecutor(), Category.STRING, SUPPORTED,
       new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  MGET(new MGetExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  MSET(new MSetExecutor(), SUPPORTED,
+  GET(new GetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  GETSET(new GetSetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCRBY(new IncrByExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCR(new IncrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  GETRANGE(new GetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY)),
+  INCRBYFLOAT(new IncrByFloatExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  MGET(new MGetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  MSET(new MSetExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  MSETNX(new MSetNXExecutor(), SUPPORTED,
+  MSETNX(new MSetNXExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  PSETEX(new PSetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SET(new SetExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM)),
-  SETEX(new SetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SETNX(new SetNXExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  SETRANGE(new SetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  STRLEN(new StrlenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  PSETEX(new PSetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SET(new SetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM)),
+  SETEX(new SetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SETNX(new SetNXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  SETRANGE(new SetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  STRLEN(new StrlenExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Hashes *****************/
 
-  HDEL(new HDelExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  HGET(new HGetExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HGETALL(new HGetAllExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  HINCRBYFLOAT(new HIncrByFloatExecutor(), SUPPORTED,
+  HDEL(new HDelExecutor(), Category.HASH, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  HGET(new HGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HGETALL(new HGetAllExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  HINCRBYFLOAT(new HIncrByFloatExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HLEN(new HLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  HMGET(new HMGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, FAST)),
+  HMSET(new HMSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSET(new HSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSETNX(new HSetNXExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HSTRLEN(new HStrLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HINCRBY(new HIncrByExecutor(), Category.HASH, SUPPORTED,
       new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HLEN(new HLenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  HMGET(new HMGetExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, FAST)),
-  HMSET(new HMSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSET(new HSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSETNX(new HSetNXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HSTRLEN(new HStrLenExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HINCRBY(new HIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HVALS(new HValsExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  HSCAN(new HScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  HVALS(new HValsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HSCAN(new HScanExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  HEXISTS(new HExistsExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HKEYS(new HKeysExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HEXISTS(new HExistsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HKEYS(new HKeysExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
 
   /************* Sets *****************/
 
-  SADD(new SAddExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
-  SCARD(new SCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  SDIFF(new SDiffExecutor(), SUPPORTED,
+  SADD(new SAddExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
+  SCARD(new SCardExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  SDIFF(new SDiffExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SDIFFSTORE(new SDiffStoreExecutor(), SUPPORTED,
+  SDIFFSTORE(new SDiffStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SINTER(new SInterExecutor(), SUPPORTED,
+  SINTER(new SInterExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SINTERSTORE(new SInterStoreExecutor(), SUPPORTED,
+  SINTERSTORE(new SInterStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SISMEMBER(new SIsMemberExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  SMEMBERS(new SMembersExecutor(), SUPPORTED,
+  SISMEMBER(new SIsMemberExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  SMEMBERS(new SMembersExecutor(), Category.SET, SUPPORTED,
       new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  SMOVE(new SMoveExecutor(), SUPPORTED, new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
-  SPOP(new SPopExecutor(), SUPPORTED,
+  SMOVE(new SMoveExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
+  SPOP(new SPopExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, RANDOM, FAST)),
-  SRANDMEMBER(new SRandMemberExecutor(), SUPPORTED,
+  SRANDMEMBER(new SRandMemberExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(READONLY, RANDOM)),
-  SREM(new SRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  SSCAN(new SScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  SREM(new SRemExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  SSCAN(new SScanExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  SUNION(new SUnionExecutor(), SUPPORTED,
+  SUNION(new SUnionExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SUNIONSTORE(new SUnionStoreExecutor(), SUPPORTED,
+  SUNIONSTORE(new SUnionStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
 
   /************ Sorted Sets **************/
 
-  ZADD(new ZAddExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
-  ZCARD(new ZCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  ZCOUNT(new ZCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZINCRBY(new ZIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  ZINTERSTORE(new ZInterStoreExecutor(), SUPPORTED,
+  ZADD(new ZAddExecutor(), Category.SORTEDSET, SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
+  ZCARD(new ZCardExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  ZCOUNT(new ZCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZINCRBY(new ZIncrByExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  ZINTERSTORE(new ZInterStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
-  ZLEXCOUNT(new ZLexCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZPOPMAX(new ZPopMaxExecutor(), SUPPORTED,
+  ZLEXCOUNT(new ZLexCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZPOPMAX(new ZPopMaxExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZPOPMIN(new ZPopMinExecutor(), SUPPORTED,
+  ZPOPMIN(new ZPopMinExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZRANGE(new ZRangeExecutor(), SUPPORTED,
+  ZRANGE(new ZRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZRANGEBYLEX(new ZRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANK(new ZRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZREM(new ZRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), SUPPORTED,
+  ZRANGEBYLEX(new ZRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANK(new ZRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZREM(new ZRemExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, FAST)),
+  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().exact(4).flags(WRITE)),
-  ZREVRANGE(new ZRevRangeExecutor(), SUPPORTED,
+  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREVRANGE(new ZRevRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), SUPPORTED,
+  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(READONLY)),
-  ZREVRANK(new ZRevRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZSCAN(new ZScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  ZREVRANK(new ZRevRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZSCAN(new ZScanExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  ZSCORE(new ZScoreExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZUNIONSTORE(new ZUnionStoreExecutor(), SUPPORTED,
+  ZSCORE(new ZScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZUNIONSTORE(new ZUnionStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
 
   /************* Server *****************/
-  COMMAND(new COMMANDCommandExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,
+  COMMAND(new CommandCommandExecutor(), Category.CONNECTION, SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,

Review comment:
       That's a good suggestion.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal commented on a change in pull request #7354: GEODE-10032: Add Category to RadishCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r804132724



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -394,22 +475,28 @@
   private final Parameter parameterRequirements;
   private final Parameter deferredParameterRequirements;
   private final RedisCommandSupportLevel supportLevel;
+  private final Category category;
 
-  RedisCommandType(CommandExecutor commandExecutor, RedisCommandSupportLevel supportLevel) {
-    this(commandExecutor, supportLevel, new Parameter().custom(c -> {
+  RedisCommandType(CommandExecutor commandExecutor, Category category,
+      RedisCommandSupportLevel supportLevel) {
+    this(commandExecutor, category, supportLevel, new Parameter().custom(c -> {
     }));
   }
 
-  RedisCommandType(CommandExecutor commandExecutor, RedisCommandSupportLevel supportLevel,
+  RedisCommandType(CommandExecutor commandExecutor, Category category,
+      RedisCommandSupportLevel supportLevel,
       Parameter parameterRequirements) {
-    this(commandExecutor, supportLevel, parameterRequirements, new Parameter().custom(c -> {
-    }));
+    this(commandExecutor, category, supportLevel, parameterRequirements,
+        new Parameter().custom(c -> {

Review comment:
       Fixed.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] jdeppe-pivotal merged pull request #7354: GEODE-10032: Add Category to RedisCommandType

Posted by GitBox <gi...@apache.org>.
jdeppe-pivotal merged pull request #7354:
URL: https://github.com/apache/geode/pull/7354


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [geode] nonbinaryprogrammer commented on a change in pull request #7354: GEODE-10032: Add Category to RedisCommandType

Posted by GitBox <gi...@apache.org>.
nonbinaryprogrammer commented on a change in pull request #7354:
URL: https://github.com/apache/geode/pull/7354#discussion_r806078426



##########
File path: geode-for-redis/src/main/java/org/apache/geode/redis/internal/commands/RedisCommandType.java
##########
@@ -163,215 +165,295 @@
    *** Supported Commands ***
    ***************************************/
 
+  /***************** Admin *******************/
+  CLUSTER(new ClusterExecutor(), Category.ADMIN, SUPPORTED,
+      new Parameter().min(2).custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
+          .flags(Flag.ADMIN, RANDOM, STALE)),
+  QUIT(new QuitExecutor(), Category.ADMIN, SUPPORTED, new Parameter().firstKey(0)),
+  SLOWLOG(new SlowlogExecutor(), Category.ADMIN, SUPPORTED, new Parameter().min(2)
+      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
+      .flags(Flag.ADMIN, RANDOM, LOADING, STALE)),
+
   /*************** Connection ****************/
-  AUTH(new AuthExecutor(), SUPPORTED, new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
-      .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
-  CLIENT(new ClientExecutor(), SUPPORTED,
-      new Parameter().min(2).firstKey(0).flags(ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
-  ECHO(new EchoExecutor(), SUPPORTED, new Parameter().exact(2).firstKey(0).flags(FAST)),
-  PING(new PingExecutor(), SUPPORTED, new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
-  QUIT(new QuitExecutor(), SUPPORTED, new Parameter().firstKey(0)),
-
-  /*************** Keys ******************/
-
-  DEL(new DelExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE)),
-  DUMP(new DumpExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  EXISTS(new ExistsExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  EXPIRE(new ExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  EXPIREAT(new ExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  KEYS(new KeysExecutor(), SUPPORTED,
+  AUTH(new AuthExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).max(3, ERROR_SYNTAX).firstKey(0)
+          .flags(NOSCRIPT, LOADING, STALE, FAST, NO_AUTH)),
+  CLIENT(new ClientExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.ADMIN, NOSCRIPT, RANDOM, LOADING, STALE)),
+  ECHO(new EchoExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(FAST)),
+  PING(new PingExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).max(2).firstKey(0).flags(STALE, FAST)),
+  COMMAND(new CommandCommandExecutor(), Category.CONNECTION, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(RANDOM, LOADING, STALE)),
+
+  /*************** Keyspace ******************/
+
+  DEL(new DelExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(WRITE)),
+  DUMP(new DumpExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  EXISTS(new ExistsExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  EXPIRE(new ExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  EXPIREAT(new ExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  KEYS(new KeysExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(2).firstKey(0).flags(READONLY, SORT_FOR_SCRIPT)),
-  PERSIST(new PersistExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, FAST)),
-  PEXPIRE(new PExpireExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PEXPIREAT(new PExpireAtExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, FAST)),
-  PTTL(new PTTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  RENAME(new RenameExecutor(), SUPPORTED, new Parameter().exact(3).lastKey(2).flags(WRITE)),
-  RENAMENX(new RenameNXExecutor(), SUPPORTED,
+  PERSIST(new PersistExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, FAST)),
+  PEXPIRE(new PExpireExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PEXPIREAT(new PExpireAtExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, FAST)),
+  PTTL(new PTTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  RENAME(new RenameExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(3).lastKey(2).flags(WRITE)),
+  RENAMENX(new RenameNXExecutor(), Category.KEYSPACE, SUPPORTED,
       new Parameter().exact(3).lastKey(2).flags(WRITE, FAST)),
-  RESTORE(new RestoreExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM)),
-  TTL(new TTLExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
-  TYPE(new TypeExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  RESTORE(new RestoreExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM)),
+  TTL(new TTLExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM, FAST)),
+  TYPE(new TypeExecutor(), Category.KEYSPACE, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Strings *****************/
 
-  APPEND(new AppendExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  DECR(new DecrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  DECRBY(new DecrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  GET(new GetExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  GETSET(new GetSetExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCRBY(new IncrByExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  INCR(new IncrExecutor(), SUPPORTED, new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
-  GETRANGE(new GetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY)),
-  INCRBYFLOAT(new IncrByFloatExecutor(), SUPPORTED,
+  APPEND(new AppendExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  DECR(new DecrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  DECRBY(new DecrByExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  GET(new GetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  GETSET(new GetSetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  INCRBY(new IncrByExecutor(), Category.STRING, SUPPORTED,
       new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  MGET(new MGetExecutor(), SUPPORTED, new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
-  MSET(new MSetExecutor(), SUPPORTED,
+  INCR(new IncrExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(WRITE, DENYOOM, FAST)),
+  GETRANGE(new GetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY)),
+  INCRBYFLOAT(new IncrByFloatExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  MGET(new MGetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(2).lastKey(-1).flags(READONLY, FAST)),
+  MSET(new MSetExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  MSETNX(new MSetNXExecutor(), SUPPORTED,
+  MSETNX(new MSetNXExecutor(), Category.STRING, SUPPORTED,
       new Parameter().min(3).odd().lastKey(-1).step(2).flags(WRITE, DENYOOM)),
-  PSETEX(new PSetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SET(new SetExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM)),
-  SETEX(new SetEXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  SETNX(new SetNXExecutor(), SUPPORTED, new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
-  SETRANGE(new SetRangeExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM)),
-  STRLEN(new StrlenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
+  PSETEX(new PSetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SET(new SetExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM)),
+  SETEX(new SetEXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  SETNX(new SetNXExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(3).flags(WRITE, DENYOOM, FAST)),
+  SETRANGE(new SetRangeExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM)),
+  STRLEN(new StrlenExecutor(), Category.STRING, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
 
   /************* Hashes *****************/
 
-  HDEL(new HDelExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  HGET(new HGetExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HGETALL(new HGetAllExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, RANDOM)),
-  HINCRBYFLOAT(new HIncrByFloatExecutor(), SUPPORTED,
+  HDEL(new HDelExecutor(), Category.HASH, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  HGET(new HGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HGETALL(new HGetAllExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, RANDOM)),
+  HINCRBYFLOAT(new HIncrByFloatExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HLEN(new HLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  HMGET(new HMGetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, FAST)),
+  HMSET(new HMSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSET(new HSetExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
+  HSETNX(new HSetNXExecutor(), Category.HASH, SUPPORTED,
       new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HLEN(new HLenExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  HMGET(new HMGetExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, FAST)),
-  HMSET(new HMSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSET(new HSetExecutor(), SUPPORTED, new Parameter().min(4).even().flags(WRITE, DENYOOM, FAST)),
-  HSETNX(new HSetNXExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HSTRLEN(new HStrLenExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HINCRBY(new HIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  HVALS(new HValsExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  HSCAN(new HScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  HSTRLEN(new HStrLenExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HINCRBY(new HIncrByExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  HVALS(new HValsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HSCAN(new HScanExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  HEXISTS(new HExistsExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  HKEYS(new HKeysExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
+  HEXISTS(new HExistsExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  HKEYS(new HKeysExecutor(), Category.HASH, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
 
   /************* Sets *****************/
 
-  SADD(new SAddExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
-  SCARD(new SCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  SDIFF(new SDiffExecutor(), SUPPORTED,
+  SADD(new SAddExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, DENYOOM, FAST)),
+  SCARD(new SCardExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  SDIFF(new SDiffExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SDIFFSTORE(new SDiffStoreExecutor(), SUPPORTED,
+  SDIFFSTORE(new SDiffStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SINTER(new SInterExecutor(), SUPPORTED,
+  SINTER(new SInterExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SINTERSTORE(new SInterStoreExecutor(), SUPPORTED,
+  SINTERSTORE(new SInterStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
-  SISMEMBER(new SIsMemberExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  SMEMBERS(new SMembersExecutor(), SUPPORTED,
+  SISMEMBER(new SIsMemberExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  SMEMBERS(new SMembersExecutor(), Category.SET, SUPPORTED,
       new Parameter().exact(2).flags(READONLY, SORT_FOR_SCRIPT)),
-  SMOVE(new SMoveExecutor(), SUPPORTED, new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
-  SPOP(new SPopExecutor(), SUPPORTED,
+  SMOVE(new SMoveExecutor(), Category.SET, SUPPORTED,
+      new Parameter().exact(4).lastKey(2).flags(WRITE, FAST)),
+  SPOP(new SPopExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, RANDOM, FAST)),
-  SRANDMEMBER(new SRandMemberExecutor(), SUPPORTED,
+  SRANDMEMBER(new SRandMemberExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(READONLY, RANDOM)),
-  SREM(new SRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  SSCAN(new SScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  SREM(new SRemExecutor(), Category.SET, SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
+  SSCAN(new SScanExecutor(), Category.SET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  SUNION(new SUnionExecutor(), SUPPORTED,
+  SUNION(new SUnionExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(2).lastKey(-1).flags(READONLY, SORT_FOR_SCRIPT)),
-  SUNIONSTORE(new SUnionStoreExecutor(), SUPPORTED,
+  SUNIONSTORE(new SUnionStoreExecutor(), Category.SET, SUPPORTED,
       new Parameter().min(3).lastKey(-1).flags(WRITE, DENYOOM)),
 
   /************ Sorted Sets **************/
 
-  ZADD(new ZAddExecutor(), SUPPORTED, new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
-  ZCARD(new ZCardExecutor(), SUPPORTED, new Parameter().exact(2).flags(READONLY, FAST)),
-  ZCOUNT(new ZCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZINCRBY(new ZIncrByExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
-  ZINTERSTORE(new ZInterStoreExecutor(), SUPPORTED,
+  ZADD(new ZAddExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(WRITE, DENYOOM, FAST)),
+  ZCARD(new ZCardExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(2).flags(READONLY, FAST)),
+  ZCOUNT(new ZCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZINCRBY(new ZIncrByExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE, DENYOOM, FAST)),
+  ZINTERSTORE(new ZInterStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
-  ZLEXCOUNT(new ZLexCountExecutor(), SUPPORTED, new Parameter().exact(4).flags(READONLY, FAST)),
-  ZPOPMAX(new ZPopMaxExecutor(), SUPPORTED,
+  ZLEXCOUNT(new ZLexCountExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(READONLY, FAST)),
+  ZPOPMAX(new ZPopMaxExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZPOPMIN(new ZPopMinExecutor(), SUPPORTED,
+  ZPOPMIN(new ZPopMinExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(2).max(3, ERROR_SYNTAX).flags(WRITE, FAST)),
-  ZRANGE(new ZRangeExecutor(), SUPPORTED,
+  ZRANGE(new ZRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZRANGEBYLEX(new ZRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZRANK(new ZRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZREM(new ZRemExecutor(), SUPPORTED, new Parameter().min(3).flags(WRITE, FAST)),
-  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), SUPPORTED, new Parameter().exact(4).flags(WRITE)),
-  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), SUPPORTED,
+  ZRANGEBYLEX(new ZRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANGEBYSCORE(new ZRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZRANK(new ZRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZREM(new ZRemExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(WRITE, FAST)),
+  ZREMRANGEBYLEX(new ZRemRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREMRANGEBYRANK(new ZRemRangeByRankExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().exact(4).flags(WRITE)),
-  ZREVRANGE(new ZRevRangeExecutor(), SUPPORTED,
+  ZREMRANGEBYSCORE(new ZRemRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(4).flags(WRITE)),
+  ZREVRANGE(new ZRevRangeExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).max(5, ERROR_SYNTAX).flags(READONLY)),
-  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), SUPPORTED, new Parameter().min(4).flags(READONLY)),
-  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), SUPPORTED,
+  ZREVRANGEBYLEX(new ZRevRangeByLexExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(4).flags(READONLY)),
+  ZREVRANGEBYSCORE(new ZRevRangeByScoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(READONLY)),
-  ZREVRANK(new ZRevRankExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZSCAN(new ZScanExecutor(), SUPPORTED, new Parameter().min(3).flags(READONLY, RANDOM),
+  ZREVRANK(new ZRevRankExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZSCAN(new ZScanExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().min(3).flags(READONLY, RANDOM),
       new Parameter().odd(ERROR_SYNTAX)),
-  ZSCORE(new ZScoreExecutor(), SUPPORTED, new Parameter().exact(3).flags(READONLY, FAST)),
-  ZUNIONSTORE(new ZUnionStoreExecutor(), SUPPORTED,
+  ZSCORE(new ZScoreExecutor(), Category.SORTEDSET, SUPPORTED,
+      new Parameter().exact(3).flags(READONLY, FAST)),
+  ZUNIONSTORE(new ZUnionStoreExecutor(), Category.SORTEDSET, SUPPORTED,
       new Parameter().min(4).flags(WRITE, DENYOOM, MOVABLEKEYS)),
 
-  /************* Server *****************/
-  COMMAND(new COMMANDCommandExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(RANDOM,
-      LOADING, STALE)),
-  SLOWLOG(new SlowlogExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(SlowlogParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, LOADING, STALE)),
-  INFO(new InfoExecutor(), SUPPORTED, new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
-      .flags(RANDOM, LOADING, STALE)),
-  LOLWUT(new LolWutExecutor(), SUPPORTED, new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
-
-
   /********** Publish Subscribe **********/
-  SUBSCRIBE(new SubscribeExecutor(), SUPPORTED, new Parameter().min(2).firstKey(0).flags(
-      Flag.PUBSUB,
-      NOSCRIPT,
-      LOADING, STALE)),
-  PUBLISH(new PublishExecutor(), SUPPORTED,
+
+  SUBSCRIBE(new SubscribeExecutor(), Category.PUBSUB, SUPPORTED,
+      new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
+  PUBLISH(new PublishExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().exact(3).firstKey(0).flags(Flag.PUBSUB, LOADING, STALE, FAST, MAY_REPLICATE)),
-  PSUBSCRIBE(new PsubscribeExecutor(), SUPPORTED,
+  PSUBSCRIBE(new PsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUNSUBSCRIBE(new PunsubscribeExecutor(), SUPPORTED,
+  PUNSUBSCRIBE(new PunsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  UNSUBSCRIBE(new UnsubscribeExecutor(), SUPPORTED,
+  UNSUBSCRIBE(new UnsubscribeExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(1).firstKey(0).flags(Flag.PUBSUB, NOSCRIPT, LOADING, STALE)),
-  PUBSUB(new PubSubExecutor(), SUPPORTED,
+  PUBSUB(new PubSubExecutor(), Category.PUBSUB, SUPPORTED,
       new Parameter().min(2).firstKey(0).flags(Flag.PUBSUB, RANDOM, LOADING, STALE)),
 
-  /************* Cluster *****************/
-  CLUSTER(new ClusterExecutor(), SUPPORTED, new Parameter().min(2)
-      .custom(ClusterParameterRequirements.checkParameters()).firstKey(0)
-      .flags(ADMIN, RANDOM, STALE)),
+  /************* Uncategorized *****************/
+
+  INFO(new InfoExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0)
+          .flags(RANDOM, LOADING, STALE)),
+  LOLWUT(new LolWutExecutor(), Category.UNCATEGORIZED, SUPPORTED,
+      new Parameter().min(1).firstKey(0).flags(READONLY, FAST)),
+
 
   /***************************************
    ******** Unsupported Commands *********
    ***************************************/
 
-  /*************** Connection *************/
-
-  SELECT(new SelectExecutor(), UNSUPPORTED, new Parameter().exact(2).firstKey(0).flags(LOADING,
-      STALE,
-      FAST)),
+  /*************** Keyspace ******************/
 
-  /*************** Keys ******************/
-
-  SCAN(new ScanExecutor(), UNSUPPORTED, new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(
-      READONLY,
-      RANDOM)),
-  UNLINK(new DelExecutor(), UNSUPPORTED, new Parameter().min(2).lastKey(-1).flags(WRITE, FAST)),
-
-  /************** Strings ****************/
-
-  BITCOUNT(new BitCountExecutor(), UNSUPPORTED, new Parameter().min(2).flags(READONLY)),
-  BITOP(new BitOpExecutor(), UNSUPPORTED,
+  DBSIZE(new DBSizeExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(1).firstKey(0).flags(READONLY, FAST)),
+  FLUSHALL(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  FLUSHDB(new FlushAllExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(1).max(2, ERROR_SYNTAX).firstKey(0).flags(WRITE)),
+  SCAN(new ScanExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().min(2).even(ERROR_SYNTAX).firstKey(0).flags(READONLY, RANDOM)),
+  SELECT(new SelectExecutor(), Category.KEYSPACE, UNSUPPORTED,
+      new Parameter().exact(2).firstKey(0).flags(LOADING, STALE, FAST)),

Review comment:
       yes, I was just referring to its location. but if the info command has it in that section then that's fine. makes sense to use the info command to categorize our commands




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@geode.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org