This is an automated email from the ASF dual-hosted git repository.

morningman 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 3484e7b2ff5 [fix](table_options) fix potential NPE when quering 
table_options systable (#40944) (#41040)
3484e7b2ff5 is described below

commit 3484e7b2ff50e26d37c792312a86b6846f48893a
Author: Mingyu Chen <morning...@163.com>
AuthorDate: Fri Sep 20 16:57:02 2024 +0800

    [fix](table_options) fix potential NPE when quering table_options systable 
(#40944) (#41040)
    
    bp #40944
---
 .../doris/tablefunction/MetadataGenerator.java     | 65 ++++++++++++----------
 1 file changed, 35 insertions(+), 30 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java
 
b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java
index a08b49ccada..89afa498d1b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/tablefunction/MetadataGenerator.java
@@ -1090,40 +1090,45 @@ public class MetadataGenerator {
                 continue;
             }
             OlapTable olapTable = (OlapTable) table;
-            TRow trow = new TRow();
-            trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
-            trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
-            trow.addToColumnValue(new TCell().setStringVal(table.getName())); 
// TABLE_NAME
-            trow.addToColumnValue(
-                    new 
TCell().setStringVal(olapTable.getKeysType().toMetadata())); // TABLE_MODEL
-            trow.addToColumnValue(
-                    new TCell().setStringVal(olapTable.getKeyColAsString())); 
// key columTypes
-
-            DistributionInfo distributionInfo = 
olapTable.getDefaultDistributionInfo();
-            if (distributionInfo.getType() == DistributionInfoType.HASH) {
-                HashDistributionInfo hashDistributionInfo = 
(HashDistributionInfo) distributionInfo;
-                List<Column> distributionColumns = 
hashDistributionInfo.getDistributionColumns();
-                StringBuilder distributeKey = new StringBuilder();
-                for (Column c : distributionColumns) {
-                    if (distributeKey.length() != 0) {
-                        distributeKey.append(",");
+            olapTable.readLock();
+            try {
+                TRow trow = new TRow();
+                trow.addToColumnValue(new 
TCell().setStringVal(catalog.getName())); // TABLE_CATALOG
+                trow.addToColumnValue(new 
TCell().setStringVal(database.getFullName())); // TABLE_SCHEMA
+                trow.addToColumnValue(new 
TCell().setStringVal(table.getName())); // TABLE_NAME
+                trow.addToColumnValue(
+                        new 
TCell().setStringVal(olapTable.getKeysType().toMetadata())); // TABLE_MODEL
+                trow.addToColumnValue(
+                        new 
TCell().setStringVal(olapTable.getKeyColAsString())); // key columTypes
+
+                DistributionInfo distributionInfo = 
olapTable.getDefaultDistributionInfo();
+                if (distributionInfo.getType() == DistributionInfoType.HASH) {
+                    HashDistributionInfo hashDistributionInfo = 
(HashDistributionInfo) distributionInfo;
+                    List<Column> distributionColumns = 
hashDistributionInfo.getDistributionColumns();
+                    StringBuilder distributeKey = new StringBuilder();
+                    for (Column c : distributionColumns) {
+                        if (distributeKey.length() != 0) {
+                            distributeKey.append(",");
+                        }
+                        distributeKey.append(c.getName());
                     }
-                    distributeKey.append(c.getName());
-                }
-                if (distributeKey.length() == 0) {
-                    trow.addToColumnValue(new TCell().setStringVal(""));
+                    if (distributeKey.length() == 0) {
+                        trow.addToColumnValue(new TCell().setStringVal(""));
+                    } else {
+                        trow.addToColumnValue(
+                                new 
TCell().setStringVal(distributeKey.toString()));
+                    }
+                    trow.addToColumnValue(new TCell().setStringVal("HASH")); 
// DISTRIBUTE_TYPE
                 } else {
-                    trow.addToColumnValue(
-                            new 
TCell().setStringVal(distributeKey.toString()));
+                    trow.addToColumnValue(new TCell().setStringVal("RANDOM")); 
// DISTRIBUTE_KEY
+                    trow.addToColumnValue(new TCell().setStringVal("RANDOM")); 
// DISTRIBUTE_TYPE
                 }
-                trow.addToColumnValue(new TCell().setStringVal("HASH")); // 
DISTRIBUTE_TYPE
-            } else {
-                trow.addToColumnValue(new TCell().setStringVal("RANDOM")); // 
DISTRIBUTE_KEY
-                trow.addToColumnValue(new TCell().setStringVal("RANDOM")); // 
DISTRIBUTE_TYPE
+                trow.addToColumnValue(new 
TCell().setIntVal(distributionInfo.getBucketNum())); // BUCKETS_NUM
+                trow.addToColumnValue(new 
TCell().setIntVal(olapTable.getPartitionNum())); // PARTITION_NUM
+                dataBatch.add(trow);
+            } finally {
+                olapTable.readUnlock();
             }
-            trow.addToColumnValue(new 
TCell().setIntVal(distributionInfo.getBucketNum())); // BUCKETS_NUM
-            trow.addToColumnValue(new 
TCell().setIntVal(olapTable.getPartitionNum())); // PARTITION_NUM
-            dataBatch.add(trow);
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to