Skip to content

Commit

Permalink
[fix](statistics)Fix external table show column stats type bug (apach…
Browse files Browse the repository at this point in the history
…e#26910)

The show column stats result for external table shows N/A for the columns of method, type, trigger and query_times. This pr is to fix this bug, to show the correct value.
  • Loading branch information
Jibing-Li authored and seawinde committed Nov 14, 2023
1 parent 697c7a1 commit c0d447b
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,7 @@ protected AnalysisInfo buildAndAssignJob(AnalyzeTblStmt stmt) throws DdlExceptio
constructJob(jobInfo, analysisTaskInfos.values());
if (isSync) {
syncExecute(analysisTaskInfos.values());
jobInfo.state = AnalysisState.FINISHED;
updateTableStats(jobInfo);
return null;
}
Expand Down Expand Up @@ -593,8 +594,9 @@ public void updateTaskStatus(AnalysisInfo info, AnalysisState taskState, String
public void updateTableStats(AnalysisInfo jobInfo) {
TableIf tbl = StatisticsUtil.findTable(jobInfo.catalogId,
jobInfo.dbId, jobInfo.tblId);
// External Table update table stats after table level task finished.
if (tbl instanceof ExternalTable) {
// External Table only update table stats when all tasks finished.
// Because it needs to get the row count from the result of row count task.
if (tbl instanceof ExternalTable && !jobInfo.state.equals(AnalysisState.FINISHED)) {
return;
}
TableStatsMeta tableStats = findTableStatsStatus(tbl.getId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ suite("test_hive_statistics_p0", "all_types,p0,external,hive,external_docker,ext
assertEquals("4.0", result[0][5])
assertEquals("1", result[0][6])
assertEquals("3", result[0][7])
assertEquals("FULL" , result[0][8])
assertEquals("FUNDAMENTALS" , result[0][9])
assertEquals("MANUAL" , result[0][10])
assertEquals("0" , result[0][11])

result = sql """show column stats stats_test1(value);"""
assertEquals(1, result.size())
Expand All @@ -77,6 +81,10 @@ suite("test_hive_statistics_p0", "all_types,p0,external,hive,external_docker,ext
assertEquals("5.0", result[0][5])
assertEquals("\'name1\'" , result[0][6])
assertEquals("\'name3\'" , result[0][7])
assertEquals("FULL" , result[0][8])
assertEquals("FUNDAMENTALS" , result[0][9])
assertEquals("MANUAL" , result[0][10])
assertEquals("0" , result[0][11])

result = sql """show column stats stats_test2(id);"""
assertEquals(1, result.size())
Expand All @@ -88,6 +96,10 @@ suite("test_hive_statistics_p0", "all_types,p0,external,hive,external_docker,ext
assertEquals("4.0", result[0][5])
assertEquals("1", result[0][6])
assertEquals("2", result[0][7])
assertEquals("FULL" , result[0][8])
assertEquals("FUNDAMENTALS" , result[0][9])
assertEquals("MANUAL" , result[0][10])
assertEquals("0" , result[0][11])

result = sql """show column stats stats_test2(value);"""
assertEquals(1, result.size())
Expand All @@ -99,6 +111,10 @@ suite("test_hive_statistics_p0", "all_types,p0,external,hive,external_docker,ext
assertEquals("1.0", result[0][5])
assertEquals("\'*\'", result[0][6])
assertEquals("\';\'", result[0][7])
assertEquals("FULL" , result[0][8])
assertEquals("FUNDAMENTALS" , result[0][9])
assertEquals("MANUAL" , result[0][10])
assertEquals("0" , result[0][11])

sql """drop catalog if exists ${catalog_name}"""

Expand All @@ -118,10 +134,30 @@ suite("test_hive_statistics_p0", "all_types,p0,external,hive,external_docker,ext
assertEquals("5.0", result[0][5])
assertEquals("\'name1\'" , result[0][6])
assertEquals("\'name3\'" , result[0][7])
assertEquals("FULL" , result[0][8])
assertEquals("FUNDAMENTALS" , result[0][9])
assertEquals("MANUAL" , result[0][10])
assertEquals("0" , result[0][11])

result = sql """show column stats stats_test1(id);"""
assertEquals(0, result.size())

sql """analyze table stats_test1(id) with sync with sample rows 100"""
result = sql """show column stats stats_test1(id);"""
assertEquals(1, result.size())
assertEquals("id", result[0][0])
assertEquals("3.0", result[0][1])
assertEquals("3.0", result[0][2])
assertEquals("0.0", result[0][3])
assertEquals("12.0", result[0][4])
assertEquals("4.0", result[0][5])
assertEquals("N/A", result[0][6])
assertEquals("N/A", result[0][7])
assertEquals("SAMPLE" , result[0][8])
assertEquals("FUNDAMENTALS" , result[0][9])
assertEquals("MANUAL" , result[0][10])
assertEquals("0" , result[0][11])

sql """analyze table stats_test2 with sync;"""
result = sql """show column stats stats_test2(id);"""
assertEquals(1, result.size())
Expand All @@ -133,6 +169,10 @@ suite("test_hive_statistics_p0", "all_types,p0,external,hive,external_docker,ext
assertEquals("4.0", result[0][5])
assertEquals("1", result[0][6])
assertEquals("2", result[0][7])
assertEquals("FULL" , result[0][8])
assertEquals("FUNDAMENTALS" , result[0][9])
assertEquals("MANUAL" , result[0][10])
assertEquals("0" , result[0][11])

result = sql """show column stats stats_test2(value);"""
assertEquals(1, result.size())
Expand All @@ -144,8 +184,11 @@ suite("test_hive_statistics_p0", "all_types,p0,external,hive,external_docker,ext
assertEquals("1.0", result[0][5])
assertEquals("\'*\'", result[0][6])
assertEquals("\';\'", result[0][7])
assertEquals("FULL" , result[0][8])
assertEquals("FUNDAMENTALS" , result[0][9])
assertEquals("MANUAL" , result[0][10])
assertEquals("0" , result[0][11])
sql """drop catalog if exists ${catalog_name}"""

} finally {
}
}
Expand Down

0 comments on commit c0d447b

Please sign in to comment.