[ https://issues.apache.org/jira/browse/HBASE-27928?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
wenhao reassigned HBASE-27928: ------------------------------ Assignee: wenhao > listTableNames has different criteria for judging the regular matching of > tables in the default library > ------------------------------------------------------------------------------------------------------- > > Key: HBASE-27928 > URL: https://issues.apache.org/jira/browse/HBASE-27928 > Project: HBase > Issue Type: Bug > Components: Admin > Affects Versions: 2.0.0 > Reporter: wenhao > Assignee: wenhao > Priority: Minor > > There are the following tables under default: order_info, test123 > When I execute the following logic (get the table that starts with test), > test123 is returned > {code:java} > String tableNameRegex = "^(test).*"; > TableName[] tns = admin.listTableNames(Pattern.compile(tableNameRegex));{code} > When I execute the following logic (get a table that doesn't start with > test), the return is order_info, test123 > {code:java} > String tableNameRegex = "^(?!test).*"; > TableName[] tns = admin.listTableNames(Pattern.compile(tableNameRegex));{code} > As you can see, table test123 is returned both times. > > When I look at the source code, I find that when I perform a regular match > for the table in the default namespace, I perform one step more judgment, > resulting in a table starting with test being returned both times. > {code:java} > boolean matched = pattern.matcher(tableName).matches(); > if (!matched && htd.getTableName().getNamespaceAsString().equals(defaultNS)) { > matched = pattern.matcher(defaultNS + TableName.NAMESPACE_DELIM + > tableName).matches(); > }{code} > > I think there are problems with this regular matching logic > -- This message was sent by Atlassian Jira (v8.20.10#820010)