[ 
https://issues.apache.org/jira/browse/HIVE-29690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vikram Ahuja updated HIVE-29690:
--------------------------------
    Description: 
When we call HMSHandler.get_table_objects_by_name_req(req) HMS API on a 
database with large number of tables(~5000) with pattern and tableNames. The 
following exception is thrown in the HMS side:
{code:java}
2026-06-29 16:03:47,778 ERROR handler.AbstractRequestHandler: GetTableHandler 
[fb57da2e-2590-4b03-ae11-c4d14f01eb6f-10645] Failedjava.lang.StackOverflowError 
  at 
org.datanucleus.store.query.expression.ExpressionCompiler.isOperator(ExpressionCompiler.java:894)
    at 
org.datanucleus.store.query.expression.ExpressionCompiler.compileOrAndExpression(ExpressionCompiler.java:202)
        at 
org.datanucleus.store.query.expression.ExpressionCompiler.compileExpression(ExpressionCompiler.java:191)


2026-06-29 16:03:47,803 ERROR metastore.RetryingHMSHandler: 
MetaException(message:GetTableHandler 
[fb57da2e-2590-4b03-ae11-c4d14f01eb6f-10645] failed with null)        at 
org.apache.hadoop.hive.metastore.handler.AbstractRequestHandler.getRequestStatus(AbstractRequestHandler.java:245)
    at 
org.apache.hadoop.hive.metastore.handler.AbstractRequestHandler.getResult(AbstractRequestHandler.java:288)
   at 
org.apache.hadoop.hive.metastore.handler.GetTableHandler.getTables(GetTableHandler.java:582)
 at 
org.apache.hadoop.hive.metastore.HMSHandler.get_table_objects_by_name_req(HMSHandler.java:1472)
      at 
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)   at 
org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:91)
       at 
org.apache.hadoop.hive.metastore.AbstractHMSHandlerProxy.invoke(AbstractHMSHandlerProxy.java:82)
     at jdk.proxy2/jdk.proxy2.$Proxy31.get_table_objects_by_name_req(Unknown 
Source) at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$get_table_objects_by_name_req.getResult(ThriftHiveMetastore.java:21162)
   at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$get_table_objects_by_name_req.getResult(ThriftHiveMetastore.java:21141)
   at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)   at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:103)
     at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:250)
     at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583) {code}
This error is only seen when both tablepattern and tableNames are passed. If 
either of them are null, then this issue does not occur.

 

Wrote a sample program to recreate this issue:
{code:java}
import org.apache.hadoop.hive.metastore.api.GetTablesRequest;
import org.apache.hadoop.hive.metastore.api.GetTablesResult;
import org.apache.hadoop.hive.metastore.api.Table;
import org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;

import java.util.List;

public class DirectHMSHandlerClient {

    public static void main(String[] args) throws Exception {
        String host = "localhost";
        int port = 9083;

        // 1. Open Thrift transport to the running HMS
        TTransport transport = new TSocket(host, port);
        transport.open();

        ThriftHiveMetastore.Client client =
                new ThriftHiveMetastore.Client(new TBinaryProtocol(transport));

        try {
            // 2. List all databases
            List<String> databases = client.get_all_databases();
            System.out.println("=== Databases ===");
            databases.forEach(System.out::println);

            // 3. List all tables in 'testl'
            List<String> tables = client.get_all_tables("mydb1");
            System.out.println("\n=== Tables in 'mydb1' ===");
            System.out.println("Total tables: " + tables.size());

            // 4. Call get_table_objects_by_name_req directly
            if (!tables.isEmpty()) {
                GetTablesRequest req = new GetTablesRequest("mydb1");
                req.setTablesPattern(".*");
                System.out.println("\n=== get_table_objects_by_name_req : with 
tablesPattern '.*' and names = null ===");
                // Successful call
                GetTablesResult result = 
client.get_table_objects_by_name_req(req);

                req = new GetTablesRequest("mydb1");
                req.setTblNames(tables);
                System.out.println("\n=== get_table_objects_by_name_req : with 
tablesPattern 'null' and names not null ===");
                // Successful call
                result = client.get_table_objects_by_name_req(req);

                req = new GetTablesRequest("mydb1");
                req.setTblNames(tables);
                req.setTablesPattern(".*");
                System.out.println("\n=== get_table_objects_by_name_req : with 
tablesPattern '.*' and names not null ===");
                // The below code will give StackOverflowError                  
                result = client.get_table_objects_by_name_req(req);
            }
        } finally {
            transport.close();
        }
    }
}
 


Compile Command: 
  CP=$(echo $HIVE_LIB/*.jar | tr ' ' ':')
  CP="$CP:$(echo $HADOOP_LIB/common/*.jar | tr ' ' ':')"
  CP="$CP:$(echo $HADOOP_LIB/common/lib/*.jar | tr ' ' ':')"
  javac -proc:none -cp "$CP" 
/Users/vikram/opensource/hms-client-test/DirectHMSHandlerClient.java -d 
/Users/vikram/opensource/hms-client-test/


Run Command:
  CP=/Users/vikram/opensource/hms-client-test
  CP="$CP:$(echo $HIVE_LIB/*.jar | tr ' ' ':')"
  CP="$CP:$(echo $HADOOP_LIB/common/*.jar | tr ' ' ':')"
  CP="$CP:$(echo $HADOOP_LIB/common/lib/*.jar | tr ' ' ':')"
  java -cp "$CP" DirectHMSHandlerClient

{code}
 

*Root Cause: DataNucleus ExpressionCompiler Stack Overflow*

HIVE-24769 : getTableObjectsByName was refactored to support a flexible dynamic 
filter builder (appendSimpleCondition). The original JDOQL contains() approach 
was replaced with an explicit OR chain:

 

Old (Hive 3):   "... && tbl_names.contains(tableName)"

                  → SQL: WHERE tableName IN ('t1', 't2', ..., 'tN')

 

New (Hive 4):   "tableName == :p1 || tableName == :p2 || ... || tableName == 
:pN"

                  → one OR operator per table name

 

DataNucleus (the JDO/ORM layer used by HMS) parses JDOQL filter strings at 
query creation time using a recursive descent parser. The relevant methods are 
mutually recursive:

 

  compileExpression()

    └── compileOrAndExpression()

          └── compileExpression()        ← recurses back

                └── compileOrAndExpression()

                      ...

 

Every || operator in the filter string consumes one Java stack frame. With 5000 
tables:

 -  getTableObjectsByName builds a filter with 4999 || operators and 4999 bound 
parameters

 - DataNucleus attempts to parse this at pm.newQuery(...) time

 -  ~4999stack frames are consumed → StackOverflowError

 

when tablePattern is sent as NULL then batching is applied by default and when 
tablePattern is not NULL then batching is not applied. In the code it does not 
apply batching when tablePattern is not NULL and tableNames is also not NULL 
thus causing this issue.

 

{*}Fix{*}: Apply batching on the basis of tableNames and not tablePattern to 
fix this issue

  was:
When we call HMSHandler.get_table_objects_by_name_req(req) HMS API on a 
database with large number of tables(~5000) with pattern and tableNames. The 
following exception is thrown in the HMS side:
{code:java}
2026-06-29 16:03:47,778 ERROR handler.AbstractRequestHandler: GetTableHandler 
[fb57da2e-2590-4b03-ae11-c4d14f01eb6f-10645] Failedjava.lang.StackOverflowError 
  at 
org.datanucleus.store.query.expression.ExpressionCompiler.isOperator(ExpressionCompiler.java:894)
    at 
org.datanucleus.store.query.expression.ExpressionCompiler.compileOrAndExpression(ExpressionCompiler.java:202)
        at 
org.datanucleus.store.query.expression.ExpressionCompiler.compileExpression(ExpressionCompiler.java:191)


2026-06-29 16:03:47,803 ERROR metastore.RetryingHMSHandler: 
MetaException(message:GetTableHandler 
[fb57da2e-2590-4b03-ae11-c4d14f01eb6f-10645] failed with null)        at 
org.apache.hadoop.hive.metastore.handler.AbstractRequestHandler.getRequestStatus(AbstractRequestHandler.java:245)
    at 
org.apache.hadoop.hive.metastore.handler.AbstractRequestHandler.getResult(AbstractRequestHandler.java:288)
   at 
org.apache.hadoop.hive.metastore.handler.GetTableHandler.getTables(GetTableHandler.java:582)
 at 
org.apache.hadoop.hive.metastore.HMSHandler.get_table_objects_by_name_req(HMSHandler.java:1472)
      at 
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)   at 
org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:91)
       at 
org.apache.hadoop.hive.metastore.AbstractHMSHandlerProxy.invoke(AbstractHMSHandlerProxy.java:82)
     at jdk.proxy2/jdk.proxy2.$Proxy31.get_table_objects_by_name_req(Unknown 
Source) at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$get_table_objects_by_name_req.getResult(ThriftHiveMetastore.java:21162)
   at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$get_table_objects_by_name_req.getResult(ThriftHiveMetastore.java:21141)
   at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)   at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:103)
     at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:250)
     at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583) {code}
This error is only seen when both tablepattern and tableNames are passed. If 
either of them are null, then this issue does not occur.

 

Wrote a sample program to recreate this issue:
{code:java}
import org.apache.hadoop.hive.metastore.api.GetTablesRequest;
import org.apache.hadoop.hive.metastore.api.GetTablesResult;
import org.apache.hadoop.hive.metastore.api.Table;
import org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;

import java.util.List;

public class DirectHMSHandlerClient {

    public static void main(String[] args) throws Exception {
        String host = "localhost";
        int port = 9083;

        // 1. Open Thrift transport to the running HMS
        TTransport transport = new TSocket(host, port);
        transport.open();

        ThriftHiveMetastore.Client client =
                new ThriftHiveMetastore.Client(new TBinaryProtocol(transport));

        try {
            // 2. List all databases
            List<String> databases = client.get_all_databases();
            System.out.println("=== Databases ===");
            databases.forEach(System.out::println);

            // 3. List all tables in 'testl'
            List<String> tables = client.get_all_tables("mydb1");
            System.out.println("\n=== Tables in 'mydb1' ===");
            System.out.println("Total tables: " + tables.size());

            // 4. Call get_table_objects_by_name_req directly
            if (!tables.isEmpty()) {
                GetTablesRequest req = new GetTablesRequest("mydb1");
                req.setTablesPattern(".*");
                System.out.println("\n=== get_table_objects_by_name_req : with 
tablesPattern '.*' and names = null ===");
                // Successful call
                GetTablesResult result = 
client.get_table_objects_by_name_req(req);

                req = new GetTablesRequest("mydb1");
                req.setTblNames(tables);
                System.out.println("\n=== get_table_objects_by_name_req : with 
tablesPattern 'null' and names not null ===");
                // Successful call
                result = client.get_table_objects_by_name_req(req);

                req = new GetTablesRequest("mydb1");
                req.setTblNames(tables);
                req.setTablesPattern(".*");
                System.out.println("\n=== get_table_objects_by_name_req : with 
tablesPattern '.*' and names not null ===");
                // The below code will give StackOverflowError                  
                result = client.get_table_objects_by_name_req(req);
            }
        } finally {
            transport.close();
        }
    }
}
 


Compile Command: 
  CP=$(echo $HIVE_LIB/*.jar | tr ' ' ':')
  CP="$CP:$(echo $HADOOP_LIB/common/*.jar | tr ' ' ':')"
  CP="$CP:$(echo $HADOOP_LIB/common/lib/*.jar | tr ' ' ':')"
  javac -proc:none -cp "$CP" 
/Users/vikram/opensource/hms-client-test/DirectHMSHandlerClient.java -d 
/Users/vikram/opensource/hms-client-test/


Run Command:
  CP=/Users/vikram/opensource/hms-client-test
  CP="$CP:$(echo $HIVE_LIB/*.jar | tr ' ' ':')"
  CP="$CP:$(echo $HADOOP_LIB/common/*.jar | tr ' ' ':')"
  CP="$CP:$(echo $HADOOP_LIB/common/lib/*.jar | tr ' ' ':')"
  java -cp "$CP" DirectHMSHandlerClient

{code}
 

*Root Cause: DataNucleus ExpressionCompiler Stack Overflow*

HIVE-24769 : getTableObjectsByName was refactored to support a flexible dynamic 
filter builder (appendSimpleCondition). The original JDOQL contains() approach 
was replaced with an explicit OR chain:

 

Old (Hive 3):   "... && tbl_names.contains(tableName)"

                  → SQL: WHERE tableName IN ('t1', 't2', ..., 'tN')

 

New (Hive 4):   "tableName == :p1 || tableName == :p2 || ... || tableName == 
:pN"

                  → one OR operator per table name

 

DataNucleus (the JDO/ORM layer used by HMS) parses JDOQL filter strings at 
query creation time using a recursive descent parser. The relevant methods are 
mutually recursive:

 

  compileExpression()

    └── compileOrAndExpression()

          └── compileExpression()        ← recurses back

                └── compileOrAndExpression()

                      ...

 

Every || operator in the filter string consumes one Java stack frame. With 5000 
tables:

 -  getTableObjectsByName builds a filter with 4999 || operators and 10,000 
bound parameters

 - DataNucleus attempts to parse this at pm.newQuery(...) time

 -  ~10,000 stack frames are consumed → StackOverflowError

 

when tablePattern is sent as NULL then batching is applied by default and when 
tablePattern is not NULL then batching is not applied. In the code it does not 
apply batching when tablePattern is not NULL and tableNames is also not NULL 
thus causing this issue.

 

{*}Fix{*}: Apply batching on the basis of tableNames and not tablePattern to 
fix this issue


> HMS: StackOverflowError when calling get_table_objects_by_name_req API with 
> both tablenames and pattern
> -------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-29690
>                 URL: https://issues.apache.org/jira/browse/HIVE-29690
>             Project: Hive
>          Issue Type: Bug
>    Affects Versions: 4.2.0
>            Reporter: Vikram Ahuja
>            Assignee: Vikram Ahuja
>            Priority: Major
>              Labels: pull-request-available
>
> When we call HMSHandler.get_table_objects_by_name_req(req) HMS API on a 
> database with large number of tables(~5000) with pattern and tableNames. The 
> following exception is thrown in the HMS side:
> {code:java}
> 2026-06-29 16:03:47,778 ERROR handler.AbstractRequestHandler: GetTableHandler 
> [fb57da2e-2590-4b03-ae11-c4d14f01eb6f-10645] 
> Failedjava.lang.StackOverflowError at 
> org.datanucleus.store.query.expression.ExpressionCompiler.isOperator(ExpressionCompiler.java:894)
>     at 
> org.datanucleus.store.query.expression.ExpressionCompiler.compileOrAndExpression(ExpressionCompiler.java:202)
>         at 
> org.datanucleus.store.query.expression.ExpressionCompiler.compileExpression(ExpressionCompiler.java:191)
> 2026-06-29 16:03:47,803 ERROR metastore.RetryingHMSHandler: 
> MetaException(message:GetTableHandler 
> [fb57da2e-2590-4b03-ae11-c4d14f01eb6f-10645] failed with null)      at 
> org.apache.hadoop.hive.metastore.handler.AbstractRequestHandler.getRequestStatus(AbstractRequestHandler.java:245)
>     at 
> org.apache.hadoop.hive.metastore.handler.AbstractRequestHandler.getResult(AbstractRequestHandler.java:288)
>    at 
> org.apache.hadoop.hive.metastore.handler.GetTableHandler.getTables(GetTableHandler.java:582)
>  at 
> org.apache.hadoop.hive.metastore.HMSHandler.get_table_objects_by_name_req(HMSHandler.java:1472)
>       at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:580)   at 
> org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:91)
>        at 
> org.apache.hadoop.hive.metastore.AbstractHMSHandlerProxy.invoke(AbstractHMSHandlerProxy.java:82)
>      at jdk.proxy2/jdk.proxy2.$Proxy31.get_table_objects_by_name_req(Unknown 
> Source) at 
> org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$get_table_objects_by_name_req.getResult(ThriftHiveMetastore.java:21162)
>    at 
> org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$get_table_objects_by_name_req.getResult(ThriftHiveMetastore.java:21141)
>    at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)   at 
> org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:103)
>      at 
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:250)
>      at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
>     at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
>     at java.base/java.lang.Thread.run(Thread.java:1583) {code}
> This error is only seen when both tablepattern and tableNames are passed. If 
> either of them are null, then this issue does not occur.
>  
> Wrote a sample program to recreate this issue:
> {code:java}
> import org.apache.hadoop.hive.metastore.api.GetTablesRequest;
> import org.apache.hadoop.hive.metastore.api.GetTablesResult;
> import org.apache.hadoop.hive.metastore.api.Table;
> import org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore;
> import org.apache.thrift.protocol.TBinaryProtocol;
> import org.apache.thrift.transport.TSocket;
> import org.apache.thrift.transport.TTransport;
> import java.util.List;
> public class DirectHMSHandlerClient {
>     public static void main(String[] args) throws Exception {
>         String host = "localhost";
>         int port = 9083;
>         // 1. Open Thrift transport to the running HMS
>         TTransport transport = new TSocket(host, port);
>         transport.open();
>         ThriftHiveMetastore.Client client =
>                 new ThriftHiveMetastore.Client(new 
> TBinaryProtocol(transport));
>         try {
>             // 2. List all databases
>             List<String> databases = client.get_all_databases();
>             System.out.println("=== Databases ===");
>             databases.forEach(System.out::println);
>             // 3. List all tables in 'testl'
>             List<String> tables = client.get_all_tables("mydb1");
>             System.out.println("\n=== Tables in 'mydb1' ===");
>             System.out.println("Total tables: " + tables.size());
>             // 4. Call get_table_objects_by_name_req directly
>             if (!tables.isEmpty()) {
>                 GetTablesRequest req = new GetTablesRequest("mydb1");
>                 req.setTablesPattern(".*");
>                 System.out.println("\n=== get_table_objects_by_name_req : 
> with tablesPattern '.*' and names = null ===");
>                 // Successful call
>                 GetTablesResult result = 
> client.get_table_objects_by_name_req(req);
>                 req = new GetTablesRequest("mydb1");
>                 req.setTblNames(tables);
>                 System.out.println("\n=== get_table_objects_by_name_req : 
> with tablesPattern 'null' and names not null ===");
>                 // Successful call
>                 result = client.get_table_objects_by_name_req(req);
>                 req = new GetTablesRequest("mydb1");
>                 req.setTblNames(tables);
>                 req.setTablesPattern(".*");
>                 System.out.println("\n=== get_table_objects_by_name_req : 
> with tablesPattern '.*' and names not null ===");
>                 // The below code will give StackOverflowError                
>   
>                 result = client.get_table_objects_by_name_req(req);
>             }
>         } finally {
>             transport.close();
>         }
>     }
> }
>  
> Compile Command: 
>   CP=$(echo $HIVE_LIB/*.jar | tr ' ' ':')
>   CP="$CP:$(echo $HADOOP_LIB/common/*.jar | tr ' ' ':')"
>   CP="$CP:$(echo $HADOOP_LIB/common/lib/*.jar | tr ' ' ':')"
>   javac -proc:none -cp "$CP" 
> /Users/vikram/opensource/hms-client-test/DirectHMSHandlerClient.java -d 
> /Users/vikram/opensource/hms-client-test/
> Run Command:
>   CP=/Users/vikram/opensource/hms-client-test
>   CP="$CP:$(echo $HIVE_LIB/*.jar | tr ' ' ':')"
>   CP="$CP:$(echo $HADOOP_LIB/common/*.jar | tr ' ' ':')"
>   CP="$CP:$(echo $HADOOP_LIB/common/lib/*.jar | tr ' ' ':')"
>   java -cp "$CP" DirectHMSHandlerClient
> {code}
>  
> *Root Cause: DataNucleus ExpressionCompiler Stack Overflow*
> HIVE-24769 : getTableObjectsByName was refactored to support a flexible 
> dynamic filter builder (appendSimpleCondition). The original JDOQL contains() 
> approach was replaced with an explicit OR chain:
>  
> Old (Hive 3):   "... && tbl_names.contains(tableName)"
>                   → SQL: WHERE tableName IN ('t1', 't2', ..., 'tN')
>  
> New (Hive 4):   "tableName == :p1 || tableName == :p2 || ... || tableName == 
> :pN"
>                   → one OR operator per table name
>  
> DataNucleus (the JDO/ORM layer used by HMS) parses JDOQL filter strings at 
> query creation time using a recursive descent parser. The relevant methods 
> are mutually recursive:
>  
>   compileExpression()
>     └── compileOrAndExpression()
>           └── compileExpression()        ← recurses back
>                 └── compileOrAndExpression()
>                       ...
>  
> Every || operator in the filter string consumes one Java stack frame. With 
> 5000 tables:
>  -  getTableObjectsByName builds a filter with 4999 || operators and 4999 
> bound parameters
>  - DataNucleus attempts to parse this at pm.newQuery(...) time
>  -  ~4999stack frames are consumed → StackOverflowError
>  
> when tablePattern is sent as NULL then batching is applied by default and 
> when tablePattern is not NULL then batching is not applied. In the code it 
> does not apply batching when tablePattern is not NULL and tableNames is also 
> not NULL thus causing this issue.
>  
> {*}Fix{*}: Apply batching on the basis of tableNames and not tablePattern to 
> fix this issue



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to