Int16 SqlSealogEvent::sendEvent(Int16 eventId, Lng32 slSeverity) { Int32 rc = 0; #ifndef SP_DIS char eventidStr[10]=" "; Lng32 eventidLen = 0; str_sprintf(eventidStr,"10%d%06d",SQEVL_SQL,eventId); str_strip_blanks(eventidStr,eventidLen); Lng32 eventIdVal = (Lng32)str_atoi(eventidStr,eventidLen); common::event_header * eventHeader = sqlInfoEvent_.mutable_header(); common::info_header * infoHeader = eventHeader->mutable_header(); rc = initAMQPInfoHeader(infoHeader, SQEVL_SQL); if (rc) //add trace log return rc; sqlInfoEvent_.mutable_header()->set_event_id(eventIdVal); sqlInfoEvent_.mutable_header()->set_event_severity(slSeverity); setExperienceLevel("ADVANCED"); setTarget("LOGONLY"); AMQPRoutingKey routingKey(SP_EVENT, SP_SQLPACKAGE, SP_INSTANCE, SP_PUBLIC, SP_GPBPROTOCOL, "info_event"); try { rc = sendAMQPMessage(true, sqlInfoEvent_.SerializeAsString(), SP_CONTENT_TYPE_APP, routingKey); } catch(...) { rc = -1; } #endif return rc; }
// no open connections int test2() { int error = 0; wrapper::test event; event.set_data(1); AMQPRoutingKey routingKey(SP_EVENT, "wrapper", SP_INSTANCE, SP_PUBLIC,"test"); error = sendAMQPMessage( event.SerializeAsString(), SP_CONTENT_TYPE_APP, routingKey); return error; }
// will explicitly create a connection, then destroy it for further tests int test1() { int error = 0; error = createAMQPConnection(); if (error) return error; wrapper::test event; event.set_data(2); AMQPRoutingKey routingKey(SP_EVENT, "wrapper", SP_INSTANCE, SP_PUBLIC,"test"); error = sendAMQPMessage( event.SerializeAsString(), SP_CONTENT_TYPE_APP, routingKey); if (error) return error; error = closeAMQPConnection(); return error; }
Int32 SQLMXLoggingArea::logSQLMXEventForError( ULng32 sqlcode, const char* experienceLevel, const char* severityLevel, const char* eventTarget, const char *msgTxt, const char* sqlId, const Lng32 Int0, const Lng32 Int1, const Lng32 Int2, const Lng32 Int3, const Lng32 Int4, const char *String0, const char * String1, const char * String2, const char * String3, const char * String4, const char * serverName, const char * connectionName, const char * constraintCatalog, const char * constraintSchema, const char * constraintName, const char * triggerCatalog, const char * triggerSchema, const char *triggerName, const char *catalogName, const char *schemaName, const char *tableName, const char *columnName, const Int64 currTransid, const Lng32 rowNumber, const Lng32 platformCode, NABoolean isWarning ) { Int32 rc = 0; // sealog logging of sql error events // declare a event stack variable and populate #ifndef SP_DIS bool lockedMutex = lockMutex(); sql::error_event sql_error_event; Int32 qpidNodePort = atoi(getenv("QPID_NODE_PORT")); common::event_header * eventHeader = sql_error_event.mutable_header(); common::info_header * infoHeader = eventHeader->mutable_header(); if (!SQLMXLoggingArea::establishedAMQPConnection()) { rc = createAMQPConnection(NULL,-1); if (rc) { if (lockedMutex) unlockMutex(); return rc; } establishedAMQPConnection_ = TRUE; } char eventidStr[10]=" "; Lng32 eventidLen = 0; str_sprintf(eventidStr,"10%d%06d",SQEVL_SQL,sqlcode); str_strip_blanks(eventidStr,eventidLen); Lng32 eventIdVal = (Lng32)str_atoi(eventidStr,eventidLen); sql_error_event.mutable_header()->set_event_id(eventIdVal); sql_error_event.mutable_header()->set_event_severity(sqlToSLSeverity(severityLevel, isWarning)); sql_error_event.set_sqlcode(sqlcode); if (sqlId) sql_error_event.set_sqlid(sqlId); else { SB_Phandle_Type myphandle; XPROCESSHANDLE_GETMINE_(&myphandle); char charProcHandle[200]; char myprocname[30]; Int32 mycpu,mypin,mynodenumber=0; short myproclength = 0; XPROCESSHANDLE_DECOMPOSE_(&myphandle, &mycpu, &mypin, &mynodenumber,NULL,100, NULL, myprocname,100, &myproclength); myprocname[myproclength] = '\0'; str_sprintf(charProcHandle,"%d,%d,%d,%s",mycpu,mypin,mynodenumber,myprocname); sql_error_event.set_sqlid(charProcHandle); } sql_error_event.set_message_text(msgTxt); sql_error_event.set_err_experience_level(experienceLevel); sql_error_event.set_err_target(eventTarget); sql_error_event.set_int0(Int0); sql_error_event.set_int1(Int1); sql_error_event.set_int2(Int2); sql_error_event.set_int3(Int3); sql_error_event.set_int4(Int4); if (String0) sql_error_event.set_string0(String0); if (String1) sql_error_event.set_string1(String1); if (String2) sql_error_event.set_string2(String2); if (String3) sql_error_event.set_string3(String3); if (String4) sql_error_event.set_string4(String4); //LCOV_EXCL_START - unused members of diags are if (serverName) sql_error_event.set_server_name(serverName); if (connectionName) sql_error_event.set_connection_name(connectionName); //LCOV_EXCL_STOP if (constraintCatalog) sql_error_event.set_constraint_catalog(constraintCatalog); if (constraintSchema) sql_error_event.set_constraint_schema(constraintSchema); if (constraintName) sql_error_event.set_constraint_name(constraintName); if (triggerCatalog) sql_error_event.set_trigger_catalog(triggerCatalog); if (triggerSchema) sql_error_event.set_trigger_schema(triggerSchema); if (triggerName) sql_error_event.set_trigger_name(triggerName); if (catalogName) sql_error_event.set_catalog_name(catalogName); if (schemaName) sql_error_event.set_schema_name(schemaName); if (tableName) sql_error_event.set_table_name(tableName); if (columnName) sql_error_event.set_column_name(columnName); sql_error_event.set_current_transid(currTransid); sql_error_event.set_row_number(rowNumber); sql_error_event.set_platform_error_code(platformCode); rc = initAMQPInfoHeader(infoHeader, SQEVL_SQL); if (rc) { closeAMQPConnection(); establishedAMQPConnection_ = FALSE; if (lockedMutex) unlockMutex(); return rc; } AMQPRoutingKey routingKey(SP_EVENT, SP_SQLPACKAGE, SP_INSTANCE, SP_PUBLIC, SP_GPBPROTOCOL, "error_event"); try { rc = sendAMQPMessage(true, sql_error_event.SerializeAsString(), SP_CONTENT_TYPE_APP, routingKey); if (rc) throw 1; } catch (...) { closeAMQPConnection(); establishedAMQPConnection_ = FALSE; if (!rc) rc = SP_SEND_FAILED; if (lockedMutex) unlockMutex(); return rc; } if (lockedMutex) unlockMutex(); #else rc = 0; #endif return rc; }