diff --git a/extension/fts/src/function/create_fts_index.cpp b/extension/fts/src/function/create_fts_index.cpp index 59d7548c4bf..2a5dad1bb05 100644 --- a/extension/fts/src/function/create_fts_index.cpp +++ b/extension/fts/src/function/create_fts_index.cpp @@ -226,7 +226,7 @@ std::string createFTSIndexQuery(ClientContext& context, const TableFuncBindData& ftsBindData->createFTSConfig.stopWordsTableInfo.stopWords); query += stringFormat("CALL _CREATE_FTS_INDEX('{}', '{}', {}, {});", tableName, indexName, properties, params); - query += stringFormat("RETURN 'Index {} has been created.';", ftsBindData->indexName); + query += stringFormat("RETURN 'Index {} has been created.' as result;", ftsBindData->indexName); return query; } diff --git a/src/function/table/hnsw/create_hnsw_index.cpp b/src/function/table/hnsw/create_hnsw_index.cpp index 0f1b17db227..4a095bdcdad 100644 --- a/src/function/table/hnsw/create_hnsw_index.cpp +++ b/src/function/table/hnsw/create_hnsw_index.cpp @@ -135,7 +135,8 @@ static std::string createHNSWIndexTables(main::ClientContext& context, query += stringFormat("CALL _CREATE_HNSW_INDEX('{}', '{}', '{}', {});", hnswBindData->indexName, hnswBindData->tableEntry->getName(), hnswBindData->tableEntry->getProperty(hnswBindData->propertyID).getName(), params); - query += stringFormat("RETURN 'Index {} has been created.';", hnswBindData->indexName); + query += + stringFormat("RETURN 'Index {} has been created.' as result;", hnswBindData->indexName); if (requireNewTransaction) { query += "COMMIT;"; } diff --git a/src/include/main/query_summary.h b/src/include/main/query_summary.h index 9d2ee27716a..5c4b5d6275b 100644 --- a/src/include/main/query_summary.h +++ b/src/include/main/query_summary.h @@ -31,6 +31,9 @@ class QuerySummary { */ KUZU_API double getExecutionTime() const; + void incrementCompilingTime(double increment); + void incrementExecutionTime(double increment); + void setPreparedSummary(PreparedSummary preparedSummary_); /** diff --git a/src/main/client_context.cpp b/src/main/client_context.cpp index aefd71f0fe2..6cd1c11bf0f 100644 --- a/src/main/client_context.cpp +++ b/src/main/client_context.cpp @@ -340,6 +340,7 @@ std::unique_ptr ClientContext::queryNoLock(std::string_view query, } std::unique_ptr queryResult; QueryResult* lastResult = nullptr; + double internalCompilingTime = 0.0, internalExecutionTime = 0.0; for (const auto& statement : parsedStatements) { auto preparedStatement = prepareNoLock(statement, false /*shouldCommitNewTransaction*/); auto currentQueryResult = executeNoLock(preparedStatement.get(), queryID); @@ -351,11 +352,16 @@ std::unique_ptr ClientContext::queryNoLock(std::string_view query, } break; } + auto currentQuerySummary = currentQueryResult->getQuerySummary(); if (statement->isInternal()) { // The result of internal statements should be invisible to end users. Skip chaining the // result of internal statements to the final result to end users. + internalCompilingTime = currentQuerySummary->getCompilingTime(); + internalExecutionTime = currentQuerySummary->getExecutionTime(); continue; } + currentQuerySummary->incrementCompilingTime(internalCompilingTime); + currentQuerySummary->incrementExecutionTime(internalExecutionTime); if (!lastResult) { // first result of the query queryResult = std::move(currentQueryResult); diff --git a/src/main/query_summary.cpp b/src/main/query_summary.cpp index de203ca7390..68e4e74fa1a 100644 --- a/src/main/query_summary.cpp +++ b/src/main/query_summary.cpp @@ -15,6 +15,14 @@ double QuerySummary::getExecutionTime() const { return executionTime; } +void QuerySummary::incrementCompilingTime(double increment) { + preparedSummary.compilingTime += increment; +} + +void QuerySummary::incrementExecutionTime(double increment) { + executionTime += increment; +} + void QuerySummary::setPreparedSummary(PreparedSummary preparedSummary_) { preparedSummary = preparedSummary_; }