New columns for repository tables and related changes
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/0b7663e4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/0b7663e4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/0b7663e4 Branch: refs/heads/master Commit: 0b7663e4051eeaa37ee8c58e9df8ac1df5a0cb04 Parents: 2b111fd Author: Anuradha Hegde <[email protected]> Authored: Fri Jun 24 17:33:53 2016 +0000 Committer: Anuradha Hegde <[email protected]> Committed: Fri Jun 24 17:33:53 2016 +0000 ---------------------------------------------------------------------- core/conn/odbc/src/odbc/Common/Global.h | 5 +- core/conn/odbc/src/odbc/Common/PubQueryStats.h | 11 +- core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp | 137 ++++++++++--------- .../odbc/nsksrvrcore/ResStatisticsSession.cpp | 65 ++++++++- .../src/odbc/nsksrvrcore/ResStatisticsSession.h | 1 + .../odbc/nsksrvrcore/ResStatisticsStatement.cpp | 3 +- core/sqf/sql/scripts/restcheck | 1 - core/sql/common/ComSmallDefs.h | 4 +- core/sql/regress/seabase/EXPECTED011 | 9 +- core/sql/sqlcomp/CmpSeabaseDDLrepos.cpp | 22 ++- core/sql/sqlcomp/CmpSeabaseDDLrepos.h | 59 ++++---- 11 files changed, 203 insertions(+), 114 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/conn/odbc/src/odbc/Common/Global.h ---------------------------------------------------------------------- diff --git a/core/conn/odbc/src/odbc/Common/Global.h b/core/conn/odbc/src/odbc/Common/Global.h index 8b18912..72e0cef 100644 --- a/core/conn/odbc/src/odbc/Common/Global.h +++ b/core/conn/odbc/src/odbc/Common/Global.h @@ -66,8 +66,6 @@ struct hash<std::string> { class CDataSourceList ; class ODBCMXTraceMsg; -//class ResStatisticsStatement; -//class ResStatisticsSession; #define MAX_IP_ADDRESS_LEN 128 @@ -89,7 +87,6 @@ class ODBCMXTraceMsg; #include "QSGlobal.h" #include "PubInterface.h" #define DEFAULT_QS_PROCESS_NAME "$ZWMGR" -//define DEFAULT_QS_PROCESS_NAME "$QSMGR" #define DEFAULT_SYNC_PROCESS_NAME "$ZWSYN" #define DEFAULT_QS_POLLING 2 @@ -1024,6 +1021,8 @@ typedef struct _SRVR_GLOBAL_Def // char ClientComputerName[MAX_COMPUTER_NAME_LEN + 1]; char ApplicationName[MAX_APPLICATION_NAME_LEN + 1]; + char mappedProfileName[MAX_APPLICATION_NAME_LEN + 1]; + char mappedSLAName[MAX_APPLICATION_NAME_LEN + 1]; int CreatorAccessId; int ProcessAccessId; char RoleName[MAX_ROLE_LEN + 1]; // ROLE Name http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/conn/odbc/src/odbc/Common/PubQueryStats.h ---------------------------------------------------------------------- diff --git a/core/conn/odbc/src/odbc/Common/PubQueryStats.h b/core/conn/odbc/src/odbc/Common/PubQueryStats.h index a175661..6b16cf7 100644 --- a/core/conn/odbc/src/odbc/Common/PubQueryStats.h +++ b/core/conn/odbc/src/odbc/Common/PubQueryStats.h @@ -29,6 +29,7 @@ using namespace std; enum pub_struct_type { PUB_TYPE_INIT = 0, + PUB_TYPE_SESSION_START, PUB_TYPE_SESSION_END, PUB_TYPE_STATEMENT_NEW_QUERYEXECUTION, PUB_TYPE_STATEMENT_UPDATE_QUERYEXECUTION, @@ -43,7 +44,7 @@ enum statistics_type STATISTICS_SESSION }; -typedef struct _SESSION_END +typedef struct _SESSION_INFO { unsigned int m_instance_id; unsigned int m_tenant_id; @@ -66,6 +67,8 @@ typedef struct _SESSION_END string m_client_name; string m_client_user_name; string m_application_name; + string m_profile_name; + string m_sla_name; long long m_total_odbc_exection_time; long long m_total_odbc_elapsed_time; long m_total_insert_stmts_executed; @@ -87,7 +90,7 @@ typedef struct _SESSION_END long long m_search_elapsed_time_mcsec; long long m_authentication_connection_elapsed_time_mcsec; long long m_authentication_elapsed_time_mcsec; -}SESSION_END, *pSESSION_END; +}SESSION_INFO, *pSESSION_INFO; typedef struct _STATEMENT_QUERYEXECUTION { @@ -109,6 +112,7 @@ typedef struct _STATEMENT_QUERYEXECUTION string m_process_name; long long m_exec_start_utc_ts; string m_query_id; + string m_query_signature_id; string m_user_name; string m_role_name; unsigned int m_start_priority; @@ -222,6 +226,7 @@ typedef struct _STATEMENT_QUERYEXECUTION long m_num_nodes; long long m_udr_process_busy_time; int m_pertable_stats; + long long m_last_updated_time; }STATEMENT_QUERYEXECUTION, *pSTATEMENT_QUERYEXECUTION; typedef struct _SESSION_AGGREGATION @@ -288,6 +293,8 @@ typedef struct _SESSION_AGGREGATION long m_delta_util_errors; long m_delta_catalog_errors; long m_delta_other_errors; + long m_average_response_time; + long m_throughput_per_sec; }SESSION_AGGREGATION, *pSESSION_AGGREGATION; #endif http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp ---------------------------------------------------------------------- diff --git a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp index 2ad8422..c5d09fa 100644 --- a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp +++ b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp @@ -86,7 +86,6 @@ #include "ResStatisticsSession.h" #include "ResStatisticsStatement.h" #include "ComDllload.h" -//#include "QSExceptions.h" #include <dlfcn.h> #include "secsrvrmxo.h" @@ -102,7 +101,6 @@ PerformanceMeasure *perf = 0; #include <arpa/inet.h> #include <netinet/in.h> #include "zookeeper/zookeeper.h" -//extern ZK_GLOBAL_Def zkGlobals; #include <tr1/memory> #include <pthread.h> @@ -140,6 +138,7 @@ int interval_count=0; int interval_max=1; int limit_count=0; int limit_max=-1; +long long lastUpdatedTime = 0; bool updateZKState(DCS_SERVER_STATE currState, DCS_SERVER_STATE newState); @@ -188,17 +187,15 @@ short qrysrvc_ExecuteFinished( ); extern char zkHost[256]; -//extern void sendAggrStats(pub_struct_type pub_type, pSESSION_AGGREGATION pAggr_info); extern void sendAggrStats(pub_struct_type pub_type, std::tr1::shared_ptr<SESSION_AGGREGATION> pAggr_info); -//extern void sendSessionEnd(pSESSION_END pSession_info); -extern void sendSessionEnd(std::tr1::shared_ptr<SESSION_END> pSession_info); +extern void sendSessionStats(std::tr1::shared_ptr<SESSION_INFO> pSession_info); extern void sendQueryStats(pub_struct_type pub_type, std::tr1::shared_ptr<STATEMENT_QUERYEXECUTION> pQuery_info); CEE_handle_def StatisticsTimerHandle; SRVR_STMT_HDL * pQueryStmt = NULL; typedef struct _REPOS_STATS { - std::tr1::shared_ptr<SESSION_END> m_pSessionStats; + std::tr1::shared_ptr<SESSION_INFO> m_pSessionStats; std::tr1::shared_ptr<STATEMENT_QUERYEXECUTION> m_pQuery_stats; std::tr1::shared_ptr<SESSION_AGGREGATION> m_pAggr_stats; pub_struct_type m_pub_type; @@ -535,10 +532,10 @@ static void* SessionWatchDog(void* arg) ss.str(""); ss.clear(); - if (repos_stats.m_pub_type == PUB_TYPE_SESSION_END) + if (repos_stats.m_pub_type == PUB_TYPE_SESSION_START || repos_stats.m_pub_type == PUB_TYPE_SESSION_END) { - std::tr1::shared_ptr<SESSION_END> pSessionEnd = repos_stats.m_pSessionStats; - if(NULL == pSessionEnd) + std::tr1::shared_ptr<SESSION_INFO> pSessionInfo = repos_stats.m_pSessionStats; + if(NULL == pSessionInfo) { SendEventMsg(MSG_ODBC_NSK_ERROR, EVENTLOG_ERROR_TYPE, 0, ODBCMX_SERVER, srvrGlobal->srvrObjRef, @@ -546,49 +543,54 @@ static void* SessionWatchDog(void* arg) break; } - ss << "insert into Trafodion.\"_REPOS_\".metric_session_table values("; - ss << pSessionEnd->m_instance_id << ","; - ss << pSessionEnd->m_tenant_id << ","; - ss << pSessionEnd->m_component_id << ","; - ss << pSessionEnd->m_process_id << ","; - ss << pSessionEnd->m_thread_id << ","; - ss << pSessionEnd->m_node_id << ","; - ss << pSessionEnd->m_pnid_id << ","; - ss << pSessionEnd->m_host_id << ",'"; - ss << pSessionEnd->m_ip_address_id.c_str() << "',"; - ss << pSessionEnd->m_sequence_number << ",'"; - ss << pSessionEnd->m_process_name.c_str() << "','"; - ss << pSessionEnd->m_sessionId.c_str() << "','"; - ss << pSessionEnd->m_session_status.c_str() << "',CONVERTTIMESTAMP("; - ss << pSessionEnd->m_session_start_utc_ts << "),CONVERTTIMESTAMP("; - ss << pSessionEnd->m_session_end_utc_ts << "),"; - ss << pSessionEnd->m_user_id << ",'"; - ss << pSessionEnd->m_user_name.c_str() << "','"; - ss << pSessionEnd->m_role_name.c_str() << "','"; - ss << pSessionEnd->m_client_name.c_str() << "','"; - ss << pSessionEnd->m_client_user_name.c_str() << "','"; - ss << pSessionEnd->m_application_name.c_str() << "',"; - ss << pSessionEnd->m_total_odbc_exection_time << ","; - ss << pSessionEnd->m_total_odbc_elapsed_time << ","; - ss << pSessionEnd->m_total_insert_stmts_executed << ","; - ss << pSessionEnd->m_total_delete_stmts_executed << ","; - ss << pSessionEnd->m_total_update_stmts_executed << ","; - ss << pSessionEnd->m_total_select_stmts_executed << ","; - ss << pSessionEnd->m_total_catalog_stmts << ","; - ss << pSessionEnd->m_total_prepares << ","; - ss << pSessionEnd->m_total_executes << ","; - ss << pSessionEnd->m_total_fetches << ","; - ss << pSessionEnd->m_total_closes << ","; - ss << pSessionEnd->m_total_execdirects << ","; - ss << pSessionEnd->m_total_errors << ","; - ss << pSessionEnd->m_total_warnings << ","; - ss << pSessionEnd->m_total_login_elapsed_time_mcsec << ","; - ss << pSessionEnd->m_ldap_login_elapsed_time_mcsec << ","; - ss << pSessionEnd->m_sql_user_elapsed_time_mcsec << ","; - ss << pSessionEnd->m_search_connection_elapsed_time_mcsec << ","; - ss << pSessionEnd->m_search_elapsed_time_mcsec << ","; - ss << pSessionEnd->m_authentication_connection_elapsed_time_mcsec << ","; - ss << pSessionEnd->m_authentication_elapsed_time_mcsec << ")"; + ss << "upsert into Trafodion.\"_REPOS_\".metric_session_table values("; + ss << pSessionInfo->m_instance_id << ","; + ss << pSessionInfo->m_tenant_id << ","; + ss << pSessionInfo->m_component_id << ","; + ss << pSessionInfo->m_process_id << ","; + ss << pSessionInfo->m_thread_id << ","; + ss << pSessionInfo->m_node_id << ","; + ss << pSessionInfo->m_pnid_id << ","; + ss << pSessionInfo->m_host_id << ",'"; + ss << pSessionInfo->m_ip_address_id.c_str() << "',"; + ss << pSessionInfo->m_sequence_number << ",'"; + ss << pSessionInfo->m_process_name.c_str() << "','"; + ss << pSessionInfo->m_sessionId.c_str() << "','"; + ss << pSessionInfo->m_session_status.c_str() << "',CONVERTTIMESTAMP("; + ss << pSessionInfo->m_session_start_utc_ts << "),"; + if (pSessionInfo->m_session_end_utc_ts > 0) + ss << "CONVERTTIMESTAMP(" << pSessionInfo->m_session_end_utc_ts << "),"; + else + ss << "NULL,"; + ss << pSessionInfo->m_user_id << ",'"; + ss << pSessionInfo->m_user_name.c_str() << "','"; + ss << pSessionInfo->m_role_name.c_str() << "','"; + ss << pSessionInfo->m_client_name.c_str() << "','"; + ss << pSessionInfo->m_client_user_name.c_str() << "','"; + ss << pSessionInfo->m_application_name.c_str() << "','"; + ss << pSessionInfo->m_profile_name.c_str() << "','"; + ss << pSessionInfo->m_sla_name.c_str() << "',"; + ss << pSessionInfo->m_total_odbc_exection_time << ","; + ss << pSessionInfo->m_total_odbc_elapsed_time << ","; + ss << pSessionInfo->m_total_insert_stmts_executed << ","; + ss << pSessionInfo->m_total_delete_stmts_executed << ","; + ss << pSessionInfo->m_total_update_stmts_executed << ","; + ss << pSessionInfo->m_total_select_stmts_executed << ","; + ss << pSessionInfo->m_total_catalog_stmts << ","; + ss << pSessionInfo->m_total_prepares << ","; + ss << pSessionInfo->m_total_executes << ","; + ss << pSessionInfo->m_total_fetches << ","; + ss << pSessionInfo->m_total_closes << ","; + ss << pSessionInfo->m_total_execdirects << ","; + ss << pSessionInfo->m_total_errors << ","; + ss << pSessionInfo->m_total_warnings << ","; + ss << pSessionInfo->m_total_login_elapsed_time_mcsec << ","; + ss << pSessionInfo->m_ldap_login_elapsed_time_mcsec << ","; + ss << pSessionInfo->m_sql_user_elapsed_time_mcsec << ","; + ss << pSessionInfo->m_search_connection_elapsed_time_mcsec << ","; + ss << pSessionInfo->m_search_elapsed_time_mcsec << ","; + ss << pSessionInfo->m_authentication_connection_elapsed_time_mcsec << ","; + ss << pSessionInfo->m_authentication_elapsed_time_mcsec << ")"; } else if (repos_stats.m_pub_type == PUB_TYPE_STATEMENT_NEW_QUERYEXECUTION) @@ -601,6 +603,7 @@ static void* SessionWatchDog(void* arg) 1, "Invalid data pointer founded in SessionWatchDog()"); break; } + lastUpdatedTime = JULIANTIMESTAMP(); ss << "insert into Trafodion.\"_REPOS_\".metric_query_table values("; ss << pQueryAdd->m_instance_id << ","; @@ -616,6 +619,7 @@ static void* SessionWatchDog(void* arg) ss << pQueryAdd->m_process_name.c_str() << "',CONVERTTIMESTAMP("; ss << pQueryAdd->m_exec_start_utc_ts << "),'"; ss << pQueryAdd->m_query_id.c_str() << "','"; + ss << pQueryAdd->m_query_signature_id.c_str() << "','"; ss << pQueryAdd->m_user_name.c_str() << "','"; ss << pQueryAdd->m_role_name.c_str() << "',"; ss << pQueryAdd->m_start_priority << ",'"; @@ -742,7 +746,14 @@ static void* SessionWatchDog(void* arg) ss << pQueryAdd->m_ovf_buffer_bytes_read << ","; ss << pQueryAdd->m_num_nodes << ","; ss << pQueryAdd->m_udr_process_busy_time << ","; - ss << pQueryAdd->m_pertable_stats << ")"; + ss << pQueryAdd->m_pertable_stats << ","; + if ( lastUpdatedTime > 0) + ss << "CONVERTTIMESTAMP(" << lastUpdatedTime << ")"; + else + ss << "NULL"; + + ss <<")"; + } else if (repos_stats.m_pub_type == PUB_TYPE_STATEMENT_UPDATE_QUERYEXECUTION) { @@ -755,6 +766,7 @@ static void* SessionWatchDog(void* arg) break; } + lastUpdatedTime = JULIANTIMESTAMP(); ss << "update Trafodion.\"_REPOS_\".metric_query_table "; ss << "set STATEMENT_TYPE= '" << pQueryUpdate->m_statement_type.c_str() << "',"; ss << "STATEMENT_SUBTYPE= '" << pQueryUpdate->m_statement_subtype.c_str() << "',"; @@ -811,6 +823,7 @@ static void* SessionWatchDog(void* arg) ss << "NUM_NODES= " << pQueryUpdate->m_num_nodes << ","; ss << "UDR_PROCESS_BUSY_TIME= " << pQueryUpdate->m_udr_process_busy_time << ","; ss << "PERTABLE_STATS= " << pQueryUpdate->m_pertable_stats; + ss << "LAST_UPDATED_TIME= CONVERTTIMESTAMP(" << lastUpdatedTime << ")"; ss << " where QUERY_ID = '" << pQueryUpdate->m_query_id.c_str() << "'"; ss << " and EXEC_START_UTC_TS = CONVERTTIMESTAMP(" << pQueryUpdate->m_exec_start_utc_ts << ")"; } @@ -887,7 +900,9 @@ static void* SessionWatchDog(void* arg) ss << pAggrStat->m_delta_ddl_errors << ","; ss << pAggrStat->m_delta_util_errors << ","; ss << pAggrStat->m_delta_catalog_errors << ","; - ss << pAggrStat->m_delta_other_errors << ")"; + ss << pAggrStat->m_delta_other_errors << ","; + ss << pAggrStat->m_average_response_time << ","; + ss << pAggrStat->m_throughput_per_sec << ")"; } else if (repos_stats.m_pub_type == PUB_TYPE_SESSION_UPDATE_AGGREGATION || repos_stats.m_pub_type == PUB_TYPE_SESSION_END_AGGREGATION) { @@ -944,7 +959,9 @@ static void* SessionWatchDog(void* arg) ss << "DELTA_DDL_ERRORS = " << pAggrStat->m_delta_ddl_errors << ","; ss << "DELTA_UTIL_ERRORS = " << pAggrStat->m_delta_util_errors << ","; ss << "DELTA_CATALOG_ERRORS = " << pAggrStat->m_delta_catalog_errors << ","; - ss << "DELTA_OTHER_ERRORS = " << pAggrStat->m_delta_other_errors; + ss << "DELTA_OTHER_ERRORS = " << pAggrStat->m_delta_other_errors << ","; + ss << "AVERAGE_RESPONSE_TIME = " << pAggrStat->m_average_response_time << ","; + ss << "THROUGHPUT_PER_SECOND = " << pAggrStat->m_throughput_per_sec; ss << " where SESSION_START_UTC_TS = CONVERTTIMESTAMP(" << pAggrStat->m_session_start_utc_ts << ")"; ss << " and SESSION_ID = '" << pAggrStat->m_sessionId.c_str() << "'"; @@ -9477,17 +9494,17 @@ short qrysrvc_ExecuteFinished( return 0; } -void sendSessionEnd(std::tr1::shared_ptr<SESSION_END> pSession_info) +void sendSessionStats(std::tr1::shared_ptr<SESSION_INFO> pSession_info) { REPOS_STATS session_stats; session_stats.m_pSessionStats = pSession_info; - session_stats.m_pub_type = PUB_TYPE_SESSION_END; if (record_session_done) { - //boost::thread thrd(&SessionWatchDog); + session_stats.m_pub_type = PUB_TYPE_SESSION_END; pthread_t thrd; pthread_create(&thrd, NULL, SessionWatchDog, NULL); - } + } else + session_stats.m_pub_type = PUB_TYPE_SESSION_START; repos_queue.push_task(session_stats); } @@ -9498,7 +9515,6 @@ void sendAggrStats(pub_struct_type pub_type, std::tr1::shared_ptr<SESSION_AGGREG aggr_stats.m_pub_type = pub_type; if (record_session_done) { - //boost::thread thrd(&SessionWatchDog); pthread_t thrd; pthread_create(&thrd, NULL, SessionWatchDog, NULL); } @@ -9512,7 +9528,6 @@ void sendQueryStats(pub_struct_type pub_type, std::tr1::shared_ptr<STATEMENT_QUE query_stats.m_pub_type = pub_type; if (record_session_done) { - //boost::thread thrd(&SessionWatchDog); pthread_t thrd; pthread_create(&thrd, NULL, SessionWatchDog, NULL); } http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.cpp ---------------------------------------------------------------------- diff --git a/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.cpp b/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.cpp index c82ea80..c33c4b7 100644 --- a/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.cpp +++ b/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.cpp @@ -30,7 +30,7 @@ #include "ResStatisticsStatement.h" void sendAggrStats(pub_struct_type pub_type, std::tr1::shared_ptr<SESSION_AGGREGATION> pAggr_info); -void sendSessionEnd(std::tr1::shared_ptr<SESSION_END> pSession_info); +void sendSessionStats(std::tr1::shared_ptr<SESSION_INFO> pSession_info); using namespace SRVR; void ResStatisticsSession::start(struct collect_info *setinit) @@ -102,12 +102,61 @@ void ResStatisticsSession::start(struct collect_info *setinit) entryTime_ts = entryTime; if( srvrGlobal->m_bStatisticsEnabled && srvrGlobal->m_statisticsPubType == STATISTICS_AGGREGATED ) { + sendSessionInfo(session_status, startTime_ts, endTime_ts); std::tr1::shared_ptr<SESSION_AGGREGATION> pAggr_info = getAggrStats(); sendAggrStats(PUB_TYPE_SESSION_START_AGGREGATION, pAggr_info); } } } +void ResStatisticsSession::sendSessionInfo(string session_status, long long startTime, long long endTime) +{ + std::tr1::shared_ptr<SESSION_INFO> pSession_info = std::tr1::shared_ptr<SESSION_INFO>(new SESSION_INFO); + *pSession_info = {0}; + + pSession_info->m_process_id = srvrGlobal->process_id; + pSession_info->m_thread_id = srvrGlobal->receiveThrId; + pSession_info->m_node_id = srvrGlobal->m_NodeId; + pSession_info->m_ip_address_id = srvrGlobal->IpAddress; + pSession_info->m_process_name = srvrGlobal->m_ProcName; + pSession_info->m_sessionId = srvrGlobal->sessionId; + pSession_info->m_session_status = session_status; + pSession_info->m_session_start_utc_ts = startTime; + pSession_info->m_session_end_utc_ts = endTime; + pSession_info->m_user_id = srvrGlobal->userID; + pSession_info->m_user_name = srvrGlobal->userSID; + pSession_info->m_role_name = srvrGlobal->QSRoleName; + pSession_info->m_client_name = srvrGlobal->ClientComputerName; + pSession_info->m_client_user_name = resCollectinfo.clientUserName; + pSession_info->m_application_name = srvrGlobal->ApplicationName; + UpdateStringText(pSession_info->m_application_name); + pSession_info->m_profile_name = srvrGlobal->mappedProfileName; + pSession_info->m_sla_name= srvrGlobal->mappedSLAName; + pSession_info->m_total_odbc_exection_time = totalOdbcExecutionTime; + pSession_info->m_total_odbc_elapsed_time = totalOdbcElapseTime; + pSession_info->m_total_insert_stmts_executed = totalInsertStatements; + pSession_info->m_total_delete_stmts_executed = totalDeleteStatements; + pSession_info->m_total_update_stmts_executed = totalUpdateStatements; + pSession_info->m_total_select_stmts_executed = totalSelectStatements; + pSession_info->m_total_catalog_stmts = totalCatalogStatements; + pSession_info->m_total_prepares = totalPrepares; + pSession_info->m_total_executes = totalExecutes; + pSession_info->m_total_fetches = totalFetches; + pSession_info->m_total_closes = totalCloses; + pSession_info->m_total_execdirects = totalExecDirects; + pSession_info->m_total_errors = totalErrors; + pSession_info->m_total_warnings = totalWarnings; + pSession_info->m_total_login_elapsed_time_mcsec = resCollectinfo.totalLoginTime; + pSession_info->m_ldap_login_elapsed_time_mcsec = resCollectinfo.ldapLoginTime; + pSession_info->m_sql_user_elapsed_time_mcsec = resCollectinfo.sqlUserTime; + pSession_info->m_search_connection_elapsed_time_mcsec = resCollectinfo.searchConnectionTime; + pSession_info->m_search_elapsed_time_mcsec = resCollectinfo.searchTime; + pSession_info->m_authentication_connection_elapsed_time_mcsec = resCollectinfo.authenticationConnectionTime; + pSession_info->m_authentication_elapsed_time_mcsec = resCollectinfo.authenticationTime; + + sendSessionStats(pSession_info); +} + void ResStatisticsSession::end() { char ts[25]; @@ -151,12 +200,14 @@ void ResStatisticsSession::end() } stringstream ss; ss << "File: " << __FILE__ << ", Fuction: " << __FUNCTION__ << ", Line: " << __LINE__ << ", SESSIONID: " << srvrGlobal->sessionId; - string session_status = "END"; int64 endTime = JULIANTIMESTAMP(); endTime_ts = endTime; - std::tr1::shared_ptr<SESSION_END> pSession_info = std::tr1::shared_ptr<SESSION_END>(new SESSION_END); +/* + string session_status = "END"; + + std::tr1::shared_ptr<SESSION_INFO> pSession_info = std::tr1::shared_ptr<SESSION_INFO>(new SESSION_INFO); *pSession_info = {0}; pSession_info->m_process_id = srvrGlobal->process_id; @@ -174,7 +225,9 @@ void ResStatisticsSession::end() pSession_info->m_client_name = srvrGlobal->ClientComputerName; pSession_info->m_client_user_name = resCollectinfo.clientUserName; pSession_info->m_application_name = srvrGlobal->ApplicationName; - UpdateStringText(pSession_info->m_application_name); + UpdateStringText(pSession_info->m_application_name); + pSession_info->m_profile_name = srvrGlobal->mappedProfileName; + pSession_info->m_sla_name= srvrGlobal->mappedSLAName; pSession_info->m_total_odbc_exection_time = totalOdbcExecutionTime; pSession_info->m_total_odbc_elapsed_time = totalOdbcElapseTime; pSession_info->m_total_insert_stmts_executed = totalInsertStatements; @@ -197,6 +250,7 @@ void ResStatisticsSession::end() pSession_info->m_authentication_connection_elapsed_time_mcsec = resCollectinfo.authenticationConnectionTime; pSession_info->m_authentication_elapsed_time_mcsec = resCollectinfo.authenticationTime; +*/ if ( srvrGlobal->m_bStatisticsEnabled ) { if( srvrGlobal->m_statisticsPubType == STATISTICS_AGGREGATED ) @@ -204,7 +258,8 @@ void ResStatisticsSession::end() std::tr1::shared_ptr<SESSION_AGGREGATION> pAggr_info = getAggrStats(); sendAggrStats(PUB_TYPE_SESSION_END_AGGREGATION, pAggr_info); } - sendSessionEnd(pSession_info); + //sendSessionStats(pSession_info); + sendSessionInfo("END", startTime_ts, endTime_ts); } } http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.h ---------------------------------------------------------------------- diff --git a/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.h b/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.h index a9050e6..bc84c82 100644 --- a/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.h +++ b/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsSession.h @@ -419,6 +419,7 @@ public: SessionWlStats sessWlStats; public: + void sendSessionInfo(string, long long,long long); void start(struct collect_info *setInit); void end(); void accumulateStatistics(passSession *ps); http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsStatement.cpp ---------------------------------------------------------------------- diff --git a/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsStatement.cpp b/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsStatement.cpp index bbaf9b8..3293f54 100644 --- a/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsStatement.cpp +++ b/core/conn/odbc/src/odbc/nsksrvrcore/ResStatisticsStatement.cpp @@ -2392,7 +2392,7 @@ void ResStatisticsStatement::SendQueryStats(bool bStart, SRVR_STMT_HDL *pSrvrStm pQuery_info->m_session_id = srvrGlobal->sessionId; pQuery_info->m_client_name = srvrGlobal->ClientComputerName; pQuery_info->m_application_name = srvrGlobal->ApplicationName; - UpdateStringText(pQuery_info->m_application_name); + UpdateStringText(pQuery_info->m_application_name); pQuery_info->m_statement_id = statementId; pQuery_info->m_statement_type = getStatementType(pSrvrStmt->sqlQueryType); //SUBMIT_UTC_TS=EXEC_START_UTC_TS for now @@ -2523,6 +2523,7 @@ void ResStatisticsStatement::SendQueryStats(bool bStart, SRVR_STMT_HDL *pSrvrStm //pQuery_info->m_num_nodes = ; pQuery_info->m_udr_process_busy_time = ProcessBusyTime; pQuery_info->m_pertable_stats = perTableRowSize; + pQuery_info->m_last_updated_time = pQuery_info->m_last_updated_time; if (!pubStarted) sendQueryStats(PUB_TYPE_STATEMENT_NEW_QUERYEXECUTION, pQuery_info); http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/sqf/sql/scripts/restcheck ---------------------------------------------------------------------- diff --git a/core/sqf/sql/scripts/restcheck b/core/sqf/sql/scripts/restcheck index a49c730..f427d0b 100755 --- a/core/sqf/sql/scripts/restcheck +++ b/core/sqf/sql/scripts/restcheck @@ -62,7 +62,6 @@ if [[ $actual_restserver_cnt > 0 ]]; then echo "TrafodionRest is up on node: "$restserver_node",pid: "$restserver_pid fi -echo echo -e "Process\t\tActual\t" echo -e "---------\t------\t" echo -e "TrafodionRest\t$actual_restserver_cnt\t" http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/sql/common/ComSmallDefs.h ---------------------------------------------------------------------- diff --git a/core/sql/common/ComSmallDefs.h b/core/sql/common/ComSmallDefs.h index 19c7dde..74480e1 100644 --- a/core/sql/common/ComSmallDefs.h +++ b/core/sql/common/ComSmallDefs.h @@ -187,8 +187,8 @@ typedef NABoolean ComBoolean; // length of explain_plan column in metric_query_table. // explain_plan greater than this length are chunked and store in multiple // rows in metric_text_table -#define REPOS_MAX_EXPLAIN_PLAN_LEN 200000 -#define REPOS_MAX_EXPLAIN_PLAN_LEN_STR "200000" +#define REPOS_MAX_EXPLAIN_PLAN_LEN 1000000 +#define REPOS_MAX_EXPLAIN_PLAN_LEN_STR "1000000" /****** *****/ enum ComActivationTime { COM_UNKNOWN_TIME, COM_BEFORE , COM_AFTER }; http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/sql/regress/seabase/EXPECTED011 ---------------------------------------------------------------------- diff --git a/core/sql/regress/seabase/EXPECTED011 b/core/sql/regress/seabase/EXPECTED011 index 6f88f5a..83d1a68 100644 --- a/core/sql/regress/seabase/EXPECTED011 +++ b/core/sql/regress/seabase/EXPECTED011 @@ -1292,6 +1292,8 @@ METRIC_TEXT_TABLE DROPPABLE , QUERY_ID CHAR(160) CHARACTER SET ISO88591 COLLATE DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE + , QUERY_SIGNATURE_ID CHAR(160) CHARACTER SET ISO88591 COLLATE + DEFAULT DEFAULT NULL , USER_NAME CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE DEFAULT DEFAULT NULL , ROLE_NAME CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE @@ -1398,7 +1400,7 @@ METRIC_TEXT_TABLE COLLATE DEFAULT DEFAULT NULL , QUERY_TEXT VARCHAR(50000 CHARS) CHARACTER SET UTF8 COLLATE DEFAULT DEFAULT NULL - , EXPLAIN_PLAN VARCHAR(200000) CHARACTER SET ISO88591 + , EXPLAIN_PLAN VARCHAR(1000000) CHARACTER SET ISO88591 COLLATE DEFAULT DEFAULT NULL , LAST_ERROR_BEFORE_AQR INT DEFAULT NULL , DELAY_TIME_BEFORE_AQR_SEC LARGEINT DEFAULT NULL @@ -1424,6 +1426,7 @@ METRIC_TEXT_TABLE , NUM_NODES LARGEINT DEFAULT NULL , UDR_PROCESS_BUSY_TIME LARGEINT DEFAULT NULL , PERTABLE_STATS INT DEFAULT NULL + , LAST_UPDATED_TIME TIMESTAMP(6) DEFAULT NULL , "_SALT_" INT UNSIGNED NO DEFAULT NOT NULL NOT DROPPABLE ) @@ -1661,9 +1664,7 @@ LC RC OP OPERATOR OPT DESCRIPTION CARD --- SQL command prepared. >>store explain for explstmt4 in repository; -*** ERROR[8033] Explain information is too large to be stored in repository. - ---- SQL operation failed with errors. +--- SQL operation complete. >>explain options 'f' explstmt4; LC RC OP OPERATOR OPT DESCRIPTION CARD http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/sql/sqlcomp/CmpSeabaseDDLrepos.cpp ---------------------------------------------------------------------- diff --git a/core/sql/sqlcomp/CmpSeabaseDDLrepos.cpp b/core/sql/sqlcomp/CmpSeabaseDDLrepos.cpp index 43fd8d3..89b2f8c 100644 --- a/core/sql/sqlcomp/CmpSeabaseDDLrepos.cpp +++ b/core/sql/sqlcomp/CmpSeabaseDDLrepos.cpp @@ -47,8 +47,17 @@ short CmpSeabaseDDL::createRepos(ExeCliInterface * cliInterface) NABoolean xnWasStartedHere = FALSE; + cliRC = cliInterface->holdAndSetCQD + ("TRAF_MAX_CHARACTER_COL_LENGTH", "1000000"); + + if (cliRC < 0) + { + cliInterface->retrieveSQLDiagnostics(CmpCommon::diags()); + return -1; + } + if (beginXnIfNotInProgress(cliInterface, xnWasStartedHere)) - return -1; + goto label_error; // Create the _REPOS_ schema str_sprintf(queryBuf, "create schema %s.\"%s\" ; ", @@ -66,7 +75,7 @@ short CmpSeabaseDDL::createRepos(ExeCliInterface * cliInterface) } if (endXnIfStartedHere(cliInterface, xnWasStartedHere, cliRC) < 0) - return -1; + goto label_error; for (Int32 i = 0; i < sizeof(allReposUpgradeInfo)/sizeof(MDUpgradeInfo); i++) { @@ -100,7 +109,7 @@ short CmpSeabaseDDL::createRepos(ExeCliInterface * cliInterface) NADELETEBASIC(gluedQuery, STMTHEAP); if (beginXnIfNotInProgress(cliInterface, xnWasStartedHere)) - return -1; + goto label_error; cliRC = cliInterface->executeImmediate(queryBuf); if (cliRC == -1390) // table already exists @@ -114,11 +123,16 @@ short CmpSeabaseDDL::createRepos(ExeCliInterface * cliInterface) } if (endXnIfStartedHere(cliInterface, xnWasStartedHere, cliRC) < 0) - return -1; + goto label_error; } // for + cliRC = cliInterface->restoreCQD("TRAF_MAX_CHARACTER_COL_LENGTH"); return 0; + + label_error: + cliRC = cliInterface->restoreCQD("TRAF_MAX_CHARACTER_COL_LENGTH"); + return -1; } short CmpSeabaseDDL::dropRepos(ExeCliInterface * cliInterface, http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0b7663e4/core/sql/sqlcomp/CmpSeabaseDDLrepos.h ---------------------------------------------------------------------- diff --git a/core/sql/sqlcomp/CmpSeabaseDDLrepos.h b/core/sql/sqlcomp/CmpSeabaseDDLrepos.h index c4c8da4..f546f2c 100644 --- a/core/sql/sqlcomp/CmpSeabaseDDLrepos.h +++ b/core/sql/sqlcomp/CmpSeabaseDDLrepos.h @@ -53,6 +53,7 @@ static const QString createMetricQueryTable[] = {" process_name char(32) character set iso88591 casespecific default null serialized, "}, {" exec_start_utc_ts timestamp(6) no default not null not droppable not serialized, "}, {" query_id char("MAX_QUERY_ID_LEN_STR") character set iso88591 casespecific no default not null not droppable serialized, "}, + {" query_signature_id char("MAX_QUERY_ID_LEN_STR") character set iso88591 casespecific default null serialized, "}, {" user_name char(256 bytes) character set utf8 casespecific default null serialized, "}, {" role_name char(256 bytes) character set utf8 casespecific default null serialized, "}, {" start_priority integer unsigned default null serialized, "}, @@ -164,7 +165,8 @@ static const QString createMetricQueryTable[] = {" ovf_buffer_bytes_read largeint default null serialized, "}, {" num_nodes largeint default null serialized, "}, {" udr_process_busy_time largeint default null serialized, "}, - {" pertable_stats integer default null serialized "}, + {" pertable_stats integer default null serialized, "}, + {" last_updated_time timestamp(6) default null not serialized"}, {" "}, {" ) "}, {" primary key ( exec_start_utc_ts, query_id ) salt using 8 partitions on ( query_id ) "}, @@ -200,6 +202,8 @@ static const QString createMetricSessionTable[] = {" client_name varchar(256) character set utf8 casespecific default null serialized, "}, {" client_user_name char(256 bytes) character set utf8 casespecific default null serialized, "}, {" application_name char(130) character set iso88591 casespecific default null serialized, "}, + {" profile_name varchar(130) character set utf8 casespecific default null serialized, "}, + {" sla_name varchar(130) character set utf8 casespecific default null serialized, "}, {" total_execution_time largeint default null serialized, "}, {" total_elapsed_time largeint default null serialized, "}, {" total_insert_stmts_executed largeint default null serialized, "}, @@ -246,7 +250,7 @@ static const QString createMetricQueryAggrTable[] = {" sequence_number integer unsigned default null serialized, "}, {" process_name char(32) character set iso88591 casespecific default null serialized, "}, {" session_id char(108) character set iso88591 casespecific no default not null not droppable serialized, "}, - {" session_start_utc_ts timestamp(6) no default not null not droppable not serialized, "}, + {" session_start_utc_ts timestamp(6) no default not null not droppable not serialized, "}, {" aggregation_last_update_utc_ts timestamp(6) default null not serialized, "}, {" aggregation_last_elapsed_time largeint default null serialized, "}, {" user_id largeint default null serialized, "}, @@ -255,56 +259,49 @@ static const QString createMetricQueryAggrTable[] = {" client_name varchar(256) character set utf8 casespecific default null serialized, "}, {" client_user_name char(256 bytes) character set utf8 casespecific default null serialized, "}, {" application_name char(130) character set iso88591 casespecific default null serialized, "}, - {" total_est_rows_accessed largeint default null serialized, "}, + {" total_est_rows_accessed largeint default null serialized, "}, {" total_est_rows_used largeint default null serialized, "}, - {" total_rows_retrieved largeint default null serialized, "}, + {" total_rows_retrieved largeint default null serialized, "}, {" total_num_rows_iud largeint default null serialized, "}, - {" total_selects largeint default null serialized, "}, + {" total_selects largeint default null serialized, "}, {" total_inserts largeint default null serialized, "}, {" total_updates largeint default null serialized, "}, {" total_deletes largeint default null serialized, "}, - {" total_ddl_stmts largeint default null serialized, "}, {" total_util_stmts largeint default null serialized, "}, {" total_catalog_stmts largeint default null serialized, "}, {" total_other_stmts largeint default null serialized, "}, - - {" total_insert_errors largeint default null serialized, "}, - {" total_delete_errors largeint default null serialized, "}, + {" total_insert_errors largeint default null serialized, "}, + {" total_delete_errors largeint default null serialized, "}, {" total_update_errors largeint default null serialized, "}, {" total_select_errors largeint default null serialized, "}, - - {" total_ddl_errors largeint default null serialized, "}, - {" total_util_errors largeint default null serialized, "}, - {" total_catalog_errors largeint default null serialized, "}, + {" total_ddl_errors largeint default null serialized, "}, + {" total_util_errors largeint default null serialized, "}, + {" total_catalog_errors largeint default null serialized, "}, {" total_other_errors largeint default null serialized, "}, - - {" delta_estimated_rows_accessed largeint default null serialized, "}, - {" delta_estimated_rows_used largeint default null serialized, "}, + {" delta_estimated_rows_accessed largeint default null serialized, "}, + {" delta_estimated_rows_used largeint default null serialized, "}, {" delta_rows_accessed largeint default null serialized, "}, - {" delta_rows_retrieved largeint default null serialized, "}, + {" delta_rows_retrieved largeint default null serialized, "}, {" delta_num_rows_iud largeint default null serialized, "}, - {" delta_selects largeint default null serialized, "}, {" delta_inserts largeint default null serialized, "}, {" delta_updates largeint default null serialized, "}, {" delta_deletes largeint default null serialized, "}, - - {" delta_ddl_stmts largeint default null serialized, "}, - {" delta_util_stmts largeint default null serialized, "}, + {" delta_ddl_stmts largeint default null serialized, "}, + {" delta_util_stmts largeint default null serialized, "}, {" delta_catalog_stmts largeint default null serialized, "}, {" delta_other_stmts largeint default null serialized, "}, - - {" delta_insert_errors largeint default null serialized, "}, - {" delta_delete_errors largeint default null serialized, "}, + {" delta_insert_errors largeint default null serialized, "}, + {" delta_delete_errors largeint default null serialized, "}, {" delta_update_errors largeint default null serialized, "}, {" delta_select_errors largeint default null serialized, "}, - - {" delta_ddl_errors largeint default null serialized, "}, - {" delta_util_errors largeint default null serialized, "}, - {" delta_catalog_errors largeint default null serialized, "}, - {" delta_other_errors largeint default null serialized "}, - + {" delta_ddl_errors largeint default null serialized, "}, + {" delta_util_errors largeint default null serialized, "}, + {" delta_catalog_errors largeint default null serialized, "}, + {" delta_other_errors largeint default null serialized, "}, + {" average_response_time largeint default null serialized, "}, + {" throughput_per_second largeint default null serialized "}, {" ) "}, {" primary key ( session_start_utc_ts, session_id ) salt using 8 partitions on ( session_id ) "}, {" hbase_options ( DATA_BLOCK_ENCODING = 'FAST_DIFF', COMPRESSION = 'GZ' ) "}, @@ -318,7 +315,7 @@ static const QString createMetricTextTable[] = { {" create table %s.\"%s\"."REPOS_METRIC_TEXT_TABLE" "}, {" ( "}, - {" query_id char("MAX_QUERY_ID_LEN_STR") character set iso88591 casespecific no default not null not droppable serialized, "}, + {" query_id char("MAX_QUERY_ID_LEN_STR") character set iso88591 casespecific no default not null not droppable serialized, "}, {" text_type int not null serialized, "}, {" sub_id int not null serialized, "}, {" seq_num int not null serialized, "},
