This is an automated email from the ASF dual-hosted git repository.
lijibing pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new a490a366e4f [improvement](statistics)Support get oracle jdbc row
count. (#45214) (#46133)
a490a366e4f is described below
commit a490a366e4f1b8fa17d1643bf54225e13dda6c82
Author: James <[email protected]>
AuthorDate: Sun Dec 29 22:17:57 2024 +0800
[improvement](statistics)Support get oracle jdbc row count. (#45214)
(#46133)
backport: https://github.com/apache/doris/pull/45214
---
.../doris/datasource/jdbc/JdbcExternalTable.java | 5 ++++
.../jdbc/test_jdbc_row_count.groovy | 30 ++++++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/JdbcExternalTable.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/JdbcExternalTable.java
index f013891f1ba..95c9820a013 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/JdbcExternalTable.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/JdbcExternalTable.java
@@ -67,6 +67,9 @@ public class JdbcExternalTable extends ExternalTable {
public static final String SQLSERVER_ROW_COUNT_SQL = "SELECT sum(rows) as
rows FROM sys.partitions "
+ "WHERE object_id = (SELECT object_id('${dbName}.${tblName}'))
AND index_id IN (0, 1)";
+ public static final String ORACLE_ROW_COUNT_SQL = "SELECT NUM_ROWS as
\\\"rows\\\" FROM ALL_TABLES WHERE "
+ + "OWNER = '${dbName}' and TABLE_NAME = '${tblName}'";
+
public static final String FETCH_ROW_COUNT_TEMPLATE = "SELECT * FROM QUERY"
+ "(\"catalog\"=\"${ctlName}\", \"query\"=\"${sql}\");";
@@ -211,6 +214,8 @@ public class JdbcExternalTable extends ExternalTable {
params.put("sql", SQLSERVER_ROW_COUNT_SQL);
return getRowCount(params);
case JdbcResource.ORACLE:
+ params.put("sql", ORACLE_ROW_COUNT_SQL);
+ return getRowCount(params);
default:
break;
}
diff --git
a/regression-test/suites/external_table_p0/jdbc/test_jdbc_row_count.groovy
b/regression-test/suites/external_table_p0/jdbc/test_jdbc_row_count.groovy
index 576e0be8553..8e9ac2cd525 100644
--- a/regression-test/suites/external_table_p0/jdbc/test_jdbc_row_count.groovy
+++ b/regression-test/suites/external_table_p0/jdbc/test_jdbc_row_count.groovy
@@ -105,6 +105,36 @@ suite("test_jdbc_row_count",
"p0,external,mysql,external_docker,external_docker_
}
assertEquals("3", result[0][2])
sql """drop catalog ${catalog_name}"""
+
+ // Test oracle
+ catalog_name = "test_oracle_jdbc_row_count";
+ String oracle_port = context.config.otherConfigs.get("oracle_11_port");
+ String SID = "XE";
+ driver_url =
"https://${bucket}.${s3_endpoint}/regression/jdbc_driver/ojdbc8.jar"
+ sql """drop catalog if exists ${catalog_name} """
+ sql """
+ create catalog if not exists ${catalog_name} properties(
+ "type"="jdbc",
+ "user"="doris_test",
+ "password"="123456",
+ "jdbc_url" =
"jdbc:oracle:thin:@${externalEnvIp}:${oracle_port}:${SID}",
+ "driver_url" = "${driver_url}",
+ "driver_class" = "oracle.jdbc.driver.OracleDriver"
+ );
+ """
+ sql """use ${catalog_name}.DORIS_TEST"""
+ result = sql """show table stats STUDENT"""
+ Thread.sleep(1000)
+ for (int i = 0; i < 30; i++) {
+ result = sql """show table stats STUDENT""";
+ if (result[0][2] != "-1") {
+ break;
+ }
+ logger.info("Table row count not ready yet. Wait 1 second.")
+ Thread.sleep(1000)
+ }
+ assertTrue("4".equals(result[0][2]) || "-1".equals(result[0][2]))
+ sql """drop catalog ${catalog_name}"""
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]