test_class.file: shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintParserTest.java
test_class.identifier: ShardingCTLHintParserTest
test_case.body: @Test
      public void assertValidShowStatusSQL() {
          String sql = " sctl:HINT show status ";
          Optional<ShardingCTLHintStatement> actual = new ShardingCTLHintParser(sql).doParse();
          assertTrue(actual.isPresent());
          assertThat(actual.get().getHintCommand(), instanceOf(HintShowStatusCommand.class));
      }
test_case.class_method_signature: ShardingCTLHintParserTest.assertValidShowStatusSQL()
test_case.full_signature: @Test public void assertValidShowStatusSQL()
test_case.identifier: assertValidShowStatusSQL
test_case.invocations: doParse assertTrue isPresent assertThat getHintCommand get instanceOf
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void assertValidShowStatusSQL()
focal_class.declarator: setPrimaryOnlyRegex = "sctl:hint\\s+set\\s+PRIMARY_ONLY=(true|false)\\s*$"
focal_class.modifier: private final
focal_class.original_string: private final String setPrimaryOnlyRegex = "sctl:hint\\s+set\\s+PRIMARY_ONLY=(true|false)\\s*$";
focal_class.type: String
focal_class.var_name: setPrimaryOnlyRegex
focal_class.declarator: setDatabaseShardingValueRegex = "sctl:hint\\s+set\\s+DatabaseShardingValue=(\\S*)"
focal_class.modifier: private final
focal_class.original_string: private final String setDatabaseShardingValueRegex = "sctl:hint\\s+set\\s+DatabaseShardingValue=(\\S*)";
focal_class.type: String
focal_class.var_name: setDatabaseShardingValueRegex
focal_class.declarator: addDatabaseShardingValueRegex = "sctl:hint\\s+addDatabaseShardingValue\\s+(\\S*)=(\\S*)"
focal_class.modifier: private final
focal_class.original_string: private final String addDatabaseShardingValueRegex = "sctl:hint\\s+addDatabaseShardingValue\\s+(\\S*)=(\\S*)";
focal_class.type: String
focal_class.var_name: addDatabaseShardingValueRegex
focal_class.declarator: addTableShardingValueRegex = "sctl:hint\\s+addTableShardingValue\\s+(\\S*)=(\\S*)"
focal_class.modifier: private final
focal_class.original_string: private final String addTableShardingValueRegex = "sctl:hint\\s+addTableShardingValue\\s+(\\S*)=(\\S*)";
focal_class.type: String
focal_class.var_name: addTableShardingValueRegex
focal_class.declarator: clearRegex = "sctl:hint\\s+clear\\s*$"
focal_class.modifier: private final
focal_class.original_string: private final String clearRegex = "sctl:hint\\s+clear\\s*$";
focal_class.type: String
focal_class.var_name: clearRegex
focal_class.declarator: showStatusRegex = "sctl:hint\\s+show\\s+status\\s*$"
focal_class.modifier: private final
focal_class.original_string: private final String showStatusRegex = "sctl:hint\\s+show\\s+status\\s*$";
focal_class.type: String
focal_class.var_name: showStatusRegex
focal_class.declarator: showTableStatusRegex = "sctl:hint\\s+show\\s+table\\s+status\\s*$"
focal_class.modifier: private final
focal_class.original_string: private final String showTableStatusRegex = "sctl:hint\\s+show\\s+table\\s+status\\s*$";
focal_class.type: String
focal_class.var_name: showTableStatusRegex
focal_class.declarator: errorParameterRegex = "sctl:hint\\s+.*"
focal_class.modifier: private final
focal_class.original_string: private final String errorParameterRegex = "sctl:hint\\s+.*";
focal_class.type: String
focal_class.var_name: errorParameterRegex
focal_class.declarator: setPrimaryOnlyMatcher
focal_class.modifier: private final
focal_class.original_string: private final Matcher setPrimaryOnlyMatcher;
focal_class.type: Matcher
focal_class.var_name: setPrimaryOnlyMatcher
focal_class.declarator: setDatabaseShardingValueMatcher
focal_class.modifier: private final
focal_class.original_string: private final Matcher setDatabaseShardingValueMatcher;
focal_class.type: Matcher
focal_class.var_name: setDatabaseShardingValueMatcher
focal_class.declarator: addDatabaseShardingValueMatcher
focal_class.modifier: private final
focal_class.original_string: private final Matcher addDatabaseShardingValueMatcher;
focal_class.type: Matcher
focal_class.var_name: addDatabaseShardingValueMatcher
focal_class.declarator: addTableShardingValueMatcher
focal_class.modifier: private final
focal_class.original_string: private final Matcher addTableShardingValueMatcher;
focal_class.type: Matcher
focal_class.var_name: addTableShardingValueMatcher
focal_class.declarator: clearMatcher
focal_class.modifier: private final
focal_class.original_string: private final Matcher clearMatcher;
focal_class.type: Matcher
focal_class.var_name: clearMatcher
focal_class.declarator: showStatusMatcher
focal_class.modifier: private final
focal_class.original_string: private final Matcher showStatusMatcher;
focal_class.type: Matcher
focal_class.var_name: showStatusMatcher
focal_class.declarator: showTableStatusMatcher
focal_class.modifier: private final
focal_class.original_string: private final Matcher showTableStatusMatcher;
focal_class.type: Matcher
focal_class.var_name: showTableStatusMatcher
focal_class.declarator: errorParameterMatcher
focal_class.modifier: private final
focal_class.original_string: private final Matcher errorParameterMatcher;
focal_class.type: Matcher
focal_class.var_name: errorParameterMatcher
focal_class.file: shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintParser.java
focal_class.identifier: ShardingCTLHintParser
focal_class.interfaces: implements ShardingCTLParser<ShardingCTLHintStatement>
focal_class.class_method_signature: ShardingCTLHintParser.ShardingCTLHintParser(final String sql)
focal_class.full_signature: public  ShardingCTLHintParser(final String sql)
focal_class.identifier: ShardingCTLHintParser
focal_class.modifiers: public
focal_class.parameters: (final String sql)
focal_class.signature:  ShardingCTLHintParser(final String sql)
focal_class.class_method_signature: ShardingCTLHintParser.doParse()
focal_class.full_signature: @Override public Optional<ShardingCTLHintStatement> doParse()
focal_class.identifier: doParse
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Optional<ShardingCTLHintStatement>
focal_class.signature: Optional<ShardingCTLHintStatement> doParse()
focal_class.class_method_signature: ShardingCTLHintParser.parseUpdateShardingCTLHintStatement()
focal_class.full_signature: private Optional<ShardingCTLHintStatement> parseUpdateShardingCTLHintStatement()
focal_class.identifier: parseUpdateShardingCTLHintStatement
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: Optional<ShardingCTLHintStatement>
focal_class.signature: Optional<ShardingCTLHintStatement> parseUpdateShardingCTLHintStatement()
focal_class.class_method_signature: ShardingCTLHintParser.parseQueryShardingCTLHintStatement()
focal_class.full_signature: private Optional<ShardingCTLHintStatement> parseQueryShardingCTLHintStatement()
focal_class.identifier: parseQueryShardingCTLHintStatement
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: Optional<ShardingCTLHintStatement>
focal_class.signature: Optional<ShardingCTLHintStatement> parseQueryShardingCTLHintStatement()
focal_method.body: @Override
      public Optional<ShardingCTLHintStatement> doParse() {
          Optional<ShardingCTLHintStatement> updateShardingCTLHintStatement = parseUpdateShardingCTLHintStatement();
          if (updateShardingCTLHintStatement.isPresent()) {
              return updateShardingCTLHintStatement;
          }
          Optional<ShardingCTLHintStatement> queryShardingCTLHintStatement = parseQueryShardingCTLHintStatement();
          if (queryShardingCTLHintStatement.isPresent()) {
              return queryShardingCTLHintStatement;
          }
          if (errorParameterMatcher.find()) {
              return Optional.of(new ShardingCTLHintStatement(new HintErrorParameterCommand()));
          }
          return Optional.empty();
      }
focal_method.class_method_signature: ShardingCTLHintParser.doParse()
focal_method.full_signature: @Override public Optional<ShardingCTLHintStatement> doParse()
focal_method.identifier: doParse
focal_method.invocations: parseUpdateShardingCTLHintStatement isPresent parseQueryShardingCTLHintStatement isPresent find of empty
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: Optional<ShardingCTLHintStatement>
focal_method.signature: Optional<ShardingCTLHintStatement> doParse()