You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by db...@apache.org on 2018/02/06 19:23:26 UTC
[07/11] trafodion git commit: [TRAFODION-2650] Restructured Trafodion
Configuration code into separate directory structure.
http://git-wip-us.apache.org/repos/asf/trafodion/blob/87849fcf/core/sqf/monitor/linux/tcdbsqlite.cxx
----------------------------------------------------------------------
diff --git a/core/sqf/monitor/linux/tcdbsqlite.cxx b/core/sqf/monitor/linux/tcdbsqlite.cxx
deleted file mode 100644
index ff18cdd..0000000
--- a/core/sqf/monitor/linux/tcdbsqlite.cxx
+++ /dev/null
@@ -1,3390 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-// @@@ START COPYRIGHT @@@
-//
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-//
-// @@@ END COPYRIGHT @@@
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include <string>
-#include <stdlib.h>
-#include <string.h>
-
-using namespace std;
-
-#include "tclog.h"
-#include "tctrace.h"
-#include "trafconfig.h"
-#include "tcdbsqlite.h"
-
-#define MAX_PROCESS_PATH 256
-
-///////////////////////////////////////////////////////////////////////////////
-// Cluster Configuration
-///////////////////////////////////////////////////////////////////////////////
-
-CTcdbSqlite::CTcdbSqlite( void )
- : CTcdbStore( TCDBSQLITE )
- , db_(NULL)
-{
- const char method_name[] = "CTcdbSqlite::CTcdbSqlite";
- TRACE_ENTRY;
-
- memcpy(&eyecatcher_, "TCSL", 4);
-
- TRACE_EXIT;
-}
-
-CTcdbSqlite::~CTcdbSqlite ( void )
-{
- const char method_name[] = "CTcdbSqlite::~CTcdbSqlite";
- TRACE_ENTRY;
-
- memcpy(&eyecatcher_, "tcsl", 4);
-
- TRACE_EXIT;
-}
-
-// insert key into monRegKeyName table
-int CTcdbSqlite::AddRegistryKey( const char *key )
-{
- const char method_name[] = "CTcdbSqlite::AddRegistryKey";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf("%s@%d inserting key=%s into monRegKeyName\n",
- method_name, __LINE__, key);
- }
-
- int rc;
- const char * sqlStmt;
- sqlStmt = "insert into monRegKeyName (keyName) values ( :key );";
- sqlite3_stmt * prepStmt;
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt,
- NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_text( prepStmt,
- sqlite3_bind_parameter_index( prepStmt, ":key" ),
- key, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(:key) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
- if (( rc != SQLITE_DONE ) && ( rc != SQLITE_ROW )
- && ( rc != SQLITE_CONSTRAINT ) )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, key=%s, error: %s\n"
- , method_name, sqlStmt, key, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-// insert key into monRegProcName table
-int CTcdbSqlite::AddRegistryProcess( const char *name )
-{
- const char method_name[] = "CTcdbSqlite::AddRegistryProcess";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf("%s@%d inserting name=%s into monRegProcName\n",
- method_name, __LINE__, name);
- }
-
- int rc;
- const char * sqlStmt;
- sqlStmt = "insert into monRegProcName (procName) values ( :name );";
- sqlite3_stmt * prepStmt;
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt,
- NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_text( prepStmt,
- sqlite3_bind_parameter_index( prepStmt, ":name" ),
- name, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(:name) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
- if (( rc != SQLITE_DONE ) && ( rc != SQLITE_ROW )
- && ( rc != SQLITE_CONSTRAINT ) )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, name=%s, error: %s\n"
- , method_name, sqlStmt, name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::AddRegistryClusterData( const char *key
- , const char *dataValue )
-{
- const char method_name[] = "CTcdbSqlite::AddRegistryClusterData";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf("%s@%d inserting key=%s into monRegClusterData\n",
- method_name, __LINE__, key);
- }
-
- int rc;
- const char * sqlStmt;
- sqlStmt = "insert or replace into monRegClusterData (dataValue, keyId)"
- " select :dataValue,"
- " k.keyId FROM monRegKeyName k"
- " where k.keyName = :key";
- sqlite3_stmt * prepStmt;
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt,
- NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_text( prepStmt,
- sqlite3_bind_parameter_index( prepStmt,
- ":dataValue" ),
- dataValue, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(:dataValue) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- rc = sqlite3_bind_text( prepStmt,
- sqlite3_bind_parameter_index( prepStmt, ":key" ),
- key, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(:key) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
- if (( rc != SQLITE_DONE ) && ( rc != SQLITE_ROW )
- && ( rc != SQLITE_CONSTRAINT ) )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, key=%s, error: %s\n"
- , method_name, sqlStmt, key, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::AddRegistryProcessData( const char *procName
- , const char *key
- , const char *dataValue )
-{
- const char method_name[] = "CTcdbSqlite::AddRegistryProcessData";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf("%s@%d inserting key=%s into monRegProcData for "
- "proc=%s\n", method_name, __LINE__, key, procName);
- }
-
- int rc;
- const char * sqlStmt;
- sqlStmt = "insert or replace into monRegProcData (dataValue, procId, keyId )"
- " select :dataValue,"
- " p.procId,"
- " (SELECT k.keyId "
- " FROM monRegKeyName k"
- " WHERE k.keyName = :key)"
- " FROM monRegProcName p"
- " WHERE UPPER(p.procName) = UPPER(:procName)";
-
- sqlite3_stmt * prepStmt;
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt,
- NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_text( prepStmt,
- sqlite3_bind_parameter_index( prepStmt,
- ":procName" ),
- procName, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(:procName) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- rc = sqlite3_bind_text( prepStmt,
- sqlite3_bind_parameter_index( prepStmt,
- ":dataValue" ),
- dataValue, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(:dataValue) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- rc = sqlite3_bind_text( prepStmt,
- sqlite3_bind_parameter_index( prepStmt, ":key" ),
- key, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(:key) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
- if (( rc != SQLITE_DONE ) && ( rc != SQLITE_ROW )
- && ( rc != SQLITE_CONSTRAINT ) )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, key=%s, proc=%s, error: %s\n"
- , method_name, sqlStmt, key, procName, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::AddUniqueString( int nid
- , int id
- , const char *uniqStr )
-{
- const char method_name[] = "CTcdbSqlite::AddUniqueString";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf("%s@%d inserting unique string nid=%d id=%d into "
- "monRegUniqueStrings\n", method_name, __LINE__,
- nid, id);
- }
-
- int rc;
- const char * sqlStmt;
- sqlStmt = "insert or replace into monRegUniqueStrings values (?, ?, ?)";
-
- sqlite3_stmt * prepStmt;
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt,
- NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_int( prepStmt, 1, nid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(nid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- rc = sqlite3_bind_int( prepStmt, 2, id );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(id) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- rc = sqlite3_bind_text( prepStmt, 3, uniqStr, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(uniqStr) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
- if ( rc != SQLITE_DONE )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, nid=%d, id=%d, error: %s\n"
- , method_name, sqlStmt, nid, id, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::Close( void )
-{
- const char method_name[] = "CTcdbSqlite::Close";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc = sqlite3_close( db_ );
- if ( rc == SQLITE_OK)
- {
- db_ = NULL;
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_close() error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::DeleteNodeData( int pnid )
-{
- const char method_name[] = "CTcdbSqlite::DeleteNodeData";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- if (TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST))
- {
- trace_printf( "%s@%d delete from lnode, pnode values (pNid=%d)\n"
- , method_name, __LINE__
- , pnid );
- }
-
- int rc;
-
- const char *sqlStmt1;
- sqlStmt1 = "delete from lnode where lnode.pNid = ?";
-
- sqlite3_stmt *prepStmt1 = NULL;
- rc = sqlite3_prepare_v2( db_, sqlStmt1, strlen(sqlStmt1)+1, &prepStmt1, NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error=%s\n"
- , method_name, sqlStmt1, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_int( prepStmt1, 1, pnid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(pnid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt1 != NULL )
- {
- sqlite3_finalize( prepStmt1 );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt1 );
- if (( rc != SQLITE_DONE ) && ( rc != SQLITE_ROW )
- && ( rc != SQLITE_CONSTRAINT ) )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, pNid=%d, error: %s\n"
- , method_name, sqlStmt1, pnid, sqlite3_errmsg(db_));
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt1 != NULL )
- {
- sqlite3_finalize( prepStmt1 );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- const char *sqlStmt2;
- sqlStmt2 = "delete from pnode where pnode.pNid = ?";
-
- sqlite3_stmt *prepStmt2 = NULL;
- rc = sqlite3_prepare_v2( db_, sqlStmt2, strlen(sqlStmt2)+1, &prepStmt2, NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error=%s\n"
- , method_name, sqlStmt2, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt1 != NULL )
- {
- sqlite3_finalize( prepStmt1 );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_int( prepStmt2, 1, pnid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(pnid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt1 != NULL )
- {
- sqlite3_finalize( prepStmt1 );
- }
- if ( prepStmt2 != NULL )
- {
- sqlite3_finalize( prepStmt2 );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt2 );
- if (( rc != SQLITE_DONE ) && ( rc != SQLITE_ROW )
- && ( rc != SQLITE_CONSTRAINT ) )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, pNid=%d, error: %s\n"
- , method_name, sqlStmt2, pnid, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt1 != NULL )
- {
- sqlite3_finalize( prepStmt1 );
- }
- if ( prepStmt2 != NULL )
- {
- sqlite3_finalize( prepStmt2 );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt1 != NULL )
- {
- sqlite3_finalize( prepStmt1 );
- }
- if ( prepStmt2 != NULL )
- {
- sqlite3_finalize( prepStmt2 );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::DeleteUniqueString( int nid )
-{
- const char method_name[] = "CTcdbSqlite::DeleteUniqueString";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf( "%s@%d delete from monRegUniqueStrings values (nid=%d)\n"
- , method_name, __LINE__
- , nid );
- }
-
- int rc;
-
- const char *sqlStmtA;
- sqlStmtA = "delete from monRegUniqueStrings where monRegUniqueStrings.nid = ?";
-
- sqlite3_stmt *prepStmtA = NULL;
- rc = sqlite3_prepare_v2( db_, sqlStmtA, strlen(sqlStmtA)+1, &prepStmtA, NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error=%s\n"
- , method_name, sqlStmtA, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_int( prepStmtA, 1, nid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(nid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmtA != NULL )
- {
- sqlite3_finalize( prepStmtA );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmtA );
- if (( rc != SQLITE_DONE ) && ( rc != SQLITE_ROW )
- && ( rc != SQLITE_CONSTRAINT ) )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, pNid=%d, error: %s\n"
- , method_name, sqlStmtA, nid, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmtA != NULL )
- {
- sqlite3_finalize( prepStmtA );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmtA != NULL )
- {
- sqlite3_finalize( prepStmtA );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::Initialize( void )
-{
- const char method_name[] = "CTcdbSqlite::Initialize";
- TRACE_ENTRY;
-
- if ( IsInitialized() )
- {
- // Already initialized
- TRACE_EXIT;
- return( TCALREADYINIT );
- }
-
- char dbase[MAX_PROCESS_PATH];
-
- // Open the configuration database file
- char *configenv = getenv("SQ_CONFIGDB");
- if (configenv != NULL)
- {
- snprintf( dbase, sizeof(dbase), "%s", configenv);
- }
- else
- {
- snprintf( dbase, sizeof(dbase)
- , "%s/sql/scripts/sqconfig.db", getenv("TRAF_HOME"));
- }
- int rc = sqlite3_open_v2( dbase, &db_
- , SQLITE_OPEN_READWRITE | SQLITE_OPEN_FULLMUTEX
- , NULL);
- if ( rc )
- {
- db_ = NULL;
-
- // See if database is in current directory
- int rc2 = sqlite3_open_v2( "sqconfig.db", &db_
- , SQLITE_OPEN_READWRITE | SQLITE_OPEN_FULLMUTEX
- , NULL);
- if ( rc2 )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s], sqlite3_open_v2(%s) failed, error: %s\n"
- , method_name, dbase, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( db_ != NULL )
- {
- rc = sqlite3_busy_timeout(db_, 1000);
- if ( rc )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s], sqlite3_busy_timeout(%s) failed, error: %s\n"
- , method_name, dbase, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- char *sErrMsg = NULL;
- sqlite3_exec(db_, "PRAGMA synchronous = OFF", NULL, NULL, &sErrMsg);
- if (sErrMsg != NULL)
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s], sqlite3_exec(PRAGMA synchronous = OFF) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetNode( int nid
- , node_configuration_t &nodeConfig )
-{
- const char method_name[] = "CTcdbSqlite::GetNode";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- int firstcore = -1;
- int lastcore = -1;
- int excfirstcore = -1;
- int exclastcore = -1;
- int lnid = -1;
- int pnid = -1;
- int processors = 0;
- int roles;
- const char *nodename = NULL;
- const char *sqlStmt;
- sqlite3_stmt *prepStmt = NULL;
-
- // Prepare select logical nodes
- sqlStmt = "select p.pNid, l.lNid, p.nodeName, l.firstCore, l.lastCore,"
- " p.excFirstCore, p.excLastCore, l.processors, l.roles"
- " from pnode p, lnode l where p.pNid = l.pNid"
- " and l.lNid = ?";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmt
- , strlen(sqlStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- { // Set nid in prepared statement
- rc = sqlite3_bind_int(prepStmt, 1, nid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(nid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- int colCount = sqlite3_column_count(prepStmt);
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d sqlite3_column_count=%d\n",
- method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- pnid = sqlite3_column_int(prepStmt, 0);
- lnid = sqlite3_column_int(prepStmt, 1);
- nodename = (const char *) sqlite3_column_text(prepStmt, 2);
- firstcore = sqlite3_column_int(prepStmt, 3);
- lastcore = sqlite3_column_int(prepStmt, 4);
- excfirstcore = sqlite3_column_int(prepStmt, 5);
- exclastcore = sqlite3_column_int(prepStmt, 6);
- processors = sqlite3_column_int(prepStmt, 7);
- roles = sqlite3_column_int(prepStmt, 8);
- SetLNodeData( lnid
- , pnid
- , nodename
- , excfirstcore
- , exclastcore
- , firstcore
- , lastcore
- , processors
- , roles
- , nodeConfig );
- }
- else if ( rc == SQLITE_DONE )
- {
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
-
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d Finished processing logical nodes.\n",
- method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCDBNOEXIST );
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetNode( const char *name
- , node_configuration_t &nodeConfig )
-{
- const char method_name[] = "CTcdbSqlite::GetNode";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- int firstcore = -1;
- int lastcore = -1;
- int excfirstcore = -1;
- int exclastcore = -1;
- int nid = -1;
- int pnid = -1;
- int processors = 0;
- int roles;
- const char *nodename = NULL;
- const char *sqlStmt;
- sqlite3_stmt *prepStmt = NULL;
-
- // Prepare select logical nodes
- sqlStmt = "select p.pNid, l.lNid, p.nodeName, l.firstCore, l.lastCore,"
- " p.excFirstCore, p.excLastCore, l.processors, l.roles"
- " from pnode p, lnode l where p.pNid = l.pNid"
- " and p.nodeName = ?";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmt
- , strlen(sqlStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- { // Set name in prepared statement
- rc = sqlite3_bind_text( prepStmt, 1, name, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(name) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- int colCount = sqlite3_column_count(prepStmt);
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d sqlite3_column_count=%d\n",
- method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- pnid = sqlite3_column_int(prepStmt, 0);
- nid = sqlite3_column_int(prepStmt, 1);
- nodename = (const char *) sqlite3_column_text(prepStmt, 2);
- firstcore = sqlite3_column_int(prepStmt, 3);
- lastcore = sqlite3_column_int(prepStmt, 4);
- excfirstcore = sqlite3_column_int(prepStmt, 5);
- exclastcore = sqlite3_column_int(prepStmt, 6);
- processors = sqlite3_column_int(prepStmt, 7);
- roles = sqlite3_column_int(prepStmt, 8);
- SetLNodeData( nid
- , pnid
- , nodename
- , excfirstcore
- , exclastcore
- , firstcore
- , lastcore
- , processors
- , roles
- , nodeConfig );
- }
- else if ( rc == SQLITE_DONE )
- {
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
-
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d Finished processing logical nodes.\n",
- method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCDBNOEXIST );
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- // Destroy prepared statement object
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetNodes( int &count
- , int max
- , node_configuration_t nodeConfig[] )
-{
- const char method_name[] = "CTcdbSqlite::GetNodes";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- int firstcore = -1;
- int lastcore = -1;
- int excfirstcore = -1;
- int exclastcore = -1;
- int nid = -1;
- int pnid = -1;
- int processors = 0;
- int roles;
- int nodeCount = 0;
- const char *nodename = NULL;
- const char *sqlStmt;
- sqlite3_stmt *prepStmt = NULL;
-
- // Prepare select logical nodes
- sqlStmt = "select p.pNid, l.lNid, p.nodeName, l.firstCore, l.lastCore,"
- " p.excFirstCore, p.excLastCore, l.processors, l.roles"
- " from pnode p, lnode l where p.pNid = l.pNid";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmt
- , strlen(sqlStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- // Process logical nodes
- while ( 1 )
- {
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- if ( max == 0 )
- {
- nodeCount++;
- continue;
- }
-
- int colCount = sqlite3_column_count(prepStmt);
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d sqlite3_column_count=%d\n",
- method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- if ( nodeCount < max )
- {
- pnid = sqlite3_column_int(prepStmt, 0);
- nid = sqlite3_column_int(prepStmt, 1);
- nodename = (const char *) sqlite3_column_text(prepStmt, 2);
- firstcore = sqlite3_column_int(prepStmt, 3);
- lastcore = sqlite3_column_int(prepStmt, 4);
- excfirstcore = sqlite3_column_int(prepStmt, 5);
- exclastcore = sqlite3_column_int(prepStmt, 6);
- processors = sqlite3_column_int(prepStmt, 7);
- roles = sqlite3_column_int(prepStmt, 8);
- SetLNodeData( nid
- , pnid
- , nodename
- , excfirstcore
- , exclastcore
- , firstcore
- , lastcore
- , processors
- , roles
- , nodeConfig[nodeCount] );
- nodeCount++;
- }
- else
- {
- count = nodeCount;
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBTRUNCATE );
- }
- }
- else if ( rc == SQLITE_DONE )
- {
- count = nodeCount;
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d Finished processing logical nodes.\n",
- method_name, __LINE__);
- }
- break;
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetPNode( int pNid
- , physical_node_configuration_t &pnodeConfig )
-{
- const char method_name[] = "CTcdbSqlite::GetPNode";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- int excfirstcore = -1;
- int exclastcore = -1;
- int pnid = -1;
- const char *nodename = NULL;
- const char *sqlStmt;
- sqlite3_stmt *prepStmt = NULL;
-
- // Prepare select logical nodes
- sqlStmt = "select p.pNid, p.nodeName, p.excFirstCore, p.excLastCore"
- " from pnode p where p.pNid = ?";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmt
- , strlen(sqlStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- { // Set nid in prepared statement
- rc = sqlite3_bind_int(prepStmt, 1, pNid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(pNid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- int colCount = sqlite3_column_count(prepStmt);
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d sqlite3_column_count=%d\n",
- method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- pnid = sqlite3_column_int(prepStmt, 0);
- nodename = (const char *) sqlite3_column_text(prepStmt, 1);
- excfirstcore = sqlite3_column_int(prepStmt, 2);
- exclastcore = sqlite3_column_int(prepStmt, 3);
- SetPNodeData( pnid
- , nodename
- , excfirstcore
- , exclastcore
- , pnodeConfig );
- }
- else if ( rc == SQLITE_DONE )
- {
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d Finished processing logical nodes.\n",
- method_name, __LINE__);
- }
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetPNode( const char *name
- , physical_node_configuration_t &pnodeConfig )
-{
- const char method_name[] = "CTcdbSqlite::GetPNode";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- int excfirstcore = -1;
- int exclastcore = -1;
- int pnid = -1;
- const char *nodename = NULL;
- const char *sqlStmt;
- sqlite3_stmt *prepStmt = NULL;
-
- // Prepare select logical nodes
- sqlStmt = "select p.pNid, p.nodeName, p.excFirstCore, p.excLastCore"
- " from pnode p where p.nodeName = ?";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmt
- , strlen(sqlStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_bind_text( prepStmt, 1, name, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(name) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- int colCount = sqlite3_column_count(prepStmt);
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d sqlite3_column_count=%d\n",
- method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- pnid = sqlite3_column_int(prepStmt, 0);
- nodename = (const char *) sqlite3_column_text(prepStmt, 1);
- excfirstcore = sqlite3_column_int(prepStmt, 2);
- exclastcore = sqlite3_column_int(prepStmt, 3);
- SetPNodeData( pnid
- , nodename
- , excfirstcore
- , exclastcore
- , pnodeConfig );
- }
- else if ( rc == SQLITE_DONE )
- {
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d Finished processing logical nodes.\n",
- method_name, __LINE__);
- }
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetSNodes( int &count
- , int max
- , physical_node_configuration_t spareNodeConfig[] )
-{
- const char method_name[] = "CTcdbSqlite::GetSNodes";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- int pnid = -1;
- int excfirstcore = -1;
- int exclastcore = -1;
- int snodeCount = 0;
- const char *nodename = NULL;
- const char *sqlStmt;
- sqlite3_stmt *prepStmt = NULL;
-
- // Prepare select spare nodes
- sqlStmt = "select p.pNid, p.nodeName, p.excFirstCore, p.excLastCore,"
- " s.spNid "
- " from pnode p, snode s where p.pNid = s.pNid";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmt
- , strlen(sqlStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- count = snodeCount;
-
- // Process spare nodes
- while ( 1 )
- {
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- if ( max == 0 )
- {
- snodeCount++;
- continue;
- }
-
- int colCount = sqlite3_column_count(prepStmt);
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d sqlite3_column_count=%d\n",
- method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- if ( snodeCount < max )
- {
- pnid = sqlite3_column_int(prepStmt, 0);
- nodename = (const char *) sqlite3_column_text(prepStmt, 1);
- excfirstcore = sqlite3_column_int(prepStmt, 2);
- exclastcore = sqlite3_column_int(prepStmt, 3);
- if ( ! GetSNodeData( pnid
- , nodename
- , excfirstcore
- , exclastcore
- , spareNodeConfig[snodeCount] ) )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s], Error: Invalid node configuration\n"
- , method_name);
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- snodeCount++;
- }
- else
- {
- count = snodeCount;
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBTRUNCATE );
- }
- }
- else if ( rc == SQLITE_DONE )
- {
- count = snodeCount;
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d Finished processing spare nodes.\n",
- method_name, __LINE__);
- }
- break;
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetSNodeData( int pnid
- , const char *nodename
- , int excfirstcore
- , int exclastcore
- , physical_node_configuration_t &spareNodeConfig )
-{
- const char method_name[] = "CTcdbSqlite::GetSNodeData";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- const char *sqlStmt;
- sqlite3_stmt *prepStmt = NULL;
-
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf( "%s@%d pnid=%d, name=%s, excluded cores=(%d:%d)\n"
- , method_name, __LINE__
- , pnid
- , nodename
- , excfirstcore
- , exclastcore );
- }
-
- spareNodeConfig.pnid = pnid;
- strncpy( spareNodeConfig.node_name
- , nodename
- , sizeof(spareNodeConfig.node_name) );
- spareNodeConfig.excluded_first_core = excfirstcore;
- spareNodeConfig.excluded_last_core = exclastcore;
-
- // Select all spared nodes configured for this spare node
- sqlStmt = "select p.pNid, s.spNid"
- " from pnode p, snode s"
- " where p.pNid = s.pNid and p.pNid = ?";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmt
- , strlen(sqlStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- { // Set pnid in prepared statement
- rc = sqlite3_bind_int(prepStmt, 1, pnid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(pnid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- int spnid;
- int sparedpnid;
- int spareCount = 0;
-
- // Process spare nodes
- while ( 1 )
- {
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- int colCount = sqlite3_column_count(prepStmt);
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d sqlite3_column_count=%d\n",
- method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- spnid = sqlite3_column_int(prepStmt, 0);
- sparedpnid = sqlite3_column_int(prepStmt, 1);
- spareNodeConfig.spare_pnid[spareCount] = sparedpnid;
- spareCount++;
- }
- else if ( rc == SQLITE_DONE )
- {
- spareNodeConfig.spare_count = spareCount;
- if ( TcTraceSettings & (TC_TRACE_NODE | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d Finished processing spared node set.\n",
- method_name, __LINE__);
- }
- break;
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetPersistProcess( const char *persistPrefix
- , persist_configuration_t &persistConfig )
-{
- const char method_name[] = "CTcdbSqlite::GetPersistProcess";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc, rs;
- char param[TC_PERSIST_KEY_MAX];
- const char *persistKey;
- const char *persistValue;
- const char *sqlStmtStmt;
- sqlite3_stmt *prepStmt = NULL;
-
- if ( TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST) )
- {
- trace_printf( "%s@%d processkey=%s\n"
- , method_name, __LINE__
- , persistPrefix );
- }
-
- strncpy( persistConfig.persist_prefix
- , persistPrefix
- , sizeof(persistConfig.persist_prefix) );
-
- snprintf( param, sizeof(param), "%s_%%", persistPrefix );
-
- // Prepare select persistent process for the key
- sqlStmtStmt = "select p.keyName, p.valueName"
- " from monRegPersistData p"
- " where p.keyName like ?";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmtStmt
- , strlen(sqlStmtStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmtStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- { // Set key in prepared statement
- rc = sqlite3_bind_text( prepStmt, 1, param, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(keyName) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- while ( 1 )
- {
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- int colCount = sqlite3_column_count(prepStmt);
- if ( TcTraceSettings & (TC_TRACE_PERSIST | TC_TRACE_REQUEST) )
- {
- trace_printf( "%s@%d sqlite3_column_count=%d\n"
- , method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- persistKey = (const char *) sqlite3_column_text(prepStmt, 0);
- persistValue = (const char *) sqlite3_column_text(prepStmt, 1);
-
- if ( TcTraceSettings & (TC_TRACE_PERSIST | TC_TRACE_REQUEST) )
- {
- trace_printf( "%s@%d monRegPersistData key=%s, value=%s\n"
- , method_name, __LINE__, persistKey, persistValue);
- }
-
- // Parse the value based on the key
- rs = SetPersistProcessData( persistKey
- , persistValue
- , persistConfig );
- if ( rs != TCSUCCESS )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s], Error: Invalid persist key value in "
- "configuration, key=%s, value=%s\n"
- , method_name, persistKey, persistValue );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
- else if ( rc == SQLITE_DONE )
- {
- if ( TcTraceSettings & (TC_TRACE_PERSIST | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d Finished processing all rows.\n",
- method_name, __LINE__);
- }
- break;
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmtStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetPersistProcessKeys( const char *persistProcessKeys )
-{
- const char method_name[] = "CTcdbSqlite::GetPersistProcessKeys";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
-
- int rc;
-
- const char *sqlStmt;
- sqlite3_stmt *prepStmt = NULL;
- sqlStmt = "select p.valueName"
- " from monRegPersistData p"
- " where p.keyName = 'PERSIST_PROCESS_KEYS'";
-
- rc = sqlite3_prepare_v2( db_
- , sqlStmt
- , strlen(sqlStmt)+1
- , &prepStmt
- , NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- // Process persistent process keys
- rc = sqlite3_step( prepStmt );
- if ( rc == SQLITE_ROW )
- { // Process row
- int colCount = sqlite3_column_count(prepStmt);
-
- if ( TcTraceSettings & (TC_TRACE_PERSIST | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d sqlite3_column_count=%d\n",
- method_name, __LINE__, colCount);
- for (int i=0; i<colCount; ++i)
- {
- trace_printf("%s@%d column %d is %s\n",
- method_name, __LINE__, i,
- sqlite3_column_name(prepStmt, i));
- }
- }
-
- const unsigned char *value;
-
- value = sqlite3_column_text(prepStmt, 0);
- strncpy( (char *)persistProcessKeys, (const char *)value, TC_PERSIST_KEYS_VALUE_MAX );
-
- }
- else if ( rc == SQLITE_DONE )
- {
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBNOEXIST );
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetRegistryClusterSet( int &count
- , int max
- , registry_configuration_t registryConfig[] )
-{
- const char method_name[] = "CTcdbSqlite::GetRegistryClusterSet";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- const unsigned char *group;
- const unsigned char *key;
- const unsigned char *value;
- int entryNum = 0;
-
- count = 0;
-
- if ( db_ == NULL )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf("%s@%d cannot initialize registry from database "
- "since database open failed.\n", method_name,
- __LINE__);
- }
-
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- // Read cluster configuration registry entries and populate in-memory
- // structures.
- const char *sqlStmt;
- sqlStmt = "select k.keyName, d.dataValue "
- " from monRegKeyName k, monRegClusterData d "
- " where k.keyId = d.keyId";
- sqlite3_stmt *prepStmt;
-
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt, NULL);
- if( rc!=SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- while ( 1 )
- {
- rc = sqlite3_step(prepStmt);
- if ( rc == SQLITE_ROW )
- { // Process row
- if ( max == 0 )
- {
- ++entryNum;
- continue;
- }
-
- if ( entryNum < max )
- {
- group = (const unsigned char *) "CLUSTER";
- key = sqlite3_column_text(prepStmt, 0);
- value = sqlite3_column_text(prepStmt, 1);
- if ( TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST) )
- {
- trace_printf( "%s@%d entry %d: group=%s key=%s, value=%s\n"
- , method_name, __LINE__
- , entryNum, group, key, value);
- }
- strncpy( registryConfig[entryNum].scope, (const char *)group, TC_REGISTRY_KEY_MAX );
- strncpy( registryConfig[entryNum].key, (const char *)key, TC_REGISTRY_KEY_MAX );
- strncpy( registryConfig[entryNum].value, (const char *)value, TC_REGISTRY_VALUE_MAX );
- ++entryNum;
- }
- else
- {
- count = entryNum;
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBTRUNCATE );
- }
- }
- else if ( rc == SQLITE_DONE )
- {
- count = entryNum;
- break;
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- count =entryNum;
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetRegistryProcessSet( int &count
- , int max
- , registry_configuration_t registryConfig[] )
-{
- const char method_name[] = "CTcdbSqlite::GetRegistryProcessSet";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- const unsigned char *group;
- const unsigned char *key;
- const unsigned char *value;
- int entryNum = 0;
-
- count = 0;
-
- if ( db_ == NULL )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf("%s@%d cannot initialize registry from database "
- "since database open failed.\n", method_name,
- __LINE__);
- }
-
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- // Read process configuration registry entries and populate in-memory
- // structures.
- const char *sqlStmt;
- sqlStmt = "select p.procName, k.keyName, d.dataValue"
- " from monRegProcName p, monRegKeyName k, monRegProcData d"
- " where p.procId = d.procId"
- " and k.keyId = d.keyId";
- sqlite3_stmt *prepStmt;
-
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt, NULL);
- if( rc!=SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- while ( 1 )
- {
- rc = sqlite3_step(prepStmt);
- if ( rc == SQLITE_ROW )
- { // Process row
- if ( max == 0 )
- {
- ++entryNum;
- continue;
- }
-
- if ( entryNum < max )
- {
- group = sqlite3_column_text(prepStmt, 0);
- key = sqlite3_column_text(prepStmt, 1);
- value = sqlite3_column_text(prepStmt, 2);
- if ( TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST) )
- {
- trace_printf( "%s@%d entry %d: group=%s key=%s, value=%s\n"
- , method_name, __LINE__
- , entryNum, group, key, value);
- }
- strncpy( registryConfig[entryNum].scope, (const char *)group, TC_REGISTRY_KEY_MAX );
- strncpy( registryConfig[entryNum].key, (const char *)key, TC_REGISTRY_KEY_MAX );
- strncpy( registryConfig[entryNum].value, (const char *)value, TC_REGISTRY_VALUE_MAX );
- ++entryNum;
- //
- }
- else
- {
- count = entryNum;
- // Destroy prepared statement object
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBTRUNCATE );
- }
- }
- else if ( rc == SQLITE_DONE )
- {
- count = entryNum;
- break;
- }
- else
- {
- if ( TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST) )
- {
- trace_printf("%s@%d step failed, retrieving process registry"
- " data, error=%s (%d)\n",
- method_name, __LINE__, sqlite3_errmsg(db_), rc);
- }
-
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetUniqueString( int nid, int id, const char *uniqStr )
-{
- const char method_name[] = "CTcdbSqlite::GetUniqueString";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int rc;
- const char *sqlStmt;
- sqlite3_stmt *prepStmt;
-
- // Read process configuration registry entries and populate in-memory
- // structures.
- sqlStmt = "select dataValue from monRegUniqueStrings where nid = ? and id = ?";
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt, NULL);
-
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_int ( prepStmt, 1, nid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(nid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- rc = sqlite3_bind_int ( prepStmt, 2, id );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(id) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
-
- if ( rc == SQLITE_ROW )
- {
- const unsigned char *value;
-
- value = sqlite3_column_text(prepStmt, 0);
- strncpy( (char *)uniqStr, (const char *)value, TC_UNIQUE_STRING_VALUE_MAX );
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf("%s@%d retrieved unique string (%d, %d), "
- "value=%s\n", method_name, __LINE__,
- nid, id, uniqStr);
- }
- }
- else if ( rc == SQLITE_DONE )
- {
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBNOEXIST );
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, nid=%d, id=%d, error: %s\n"
- , method_name, sqlStmt, nid, id,sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetUniqueStringId( int nid
- , const char *uniqStr
- , int &id )
-{
- const char method_name[] = "CTcdbSqlite::GetUniqueStringId";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf( "%s@%d Getting unique string id: nid=%d string=%s\n"
- , method_name, __LINE__, nid, uniqStr);
- }
-
- int rc;
- const char * sqlStmt;
- sqlStmt = "select id from monRegUniqueStrings where nid = ? and dataValue = ?";
-
- sqlite3_stmt * prepStmt;
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt,
- NULL);
-
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_int( prepStmt, 1, nid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(nid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- rc = sqlite3_bind_text( prepStmt, 2, uniqStr, -1, SQLITE_STATIC );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] sqlite3_bind_text(uniqStr) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
-
- if ( rc == SQLITE_ROW )
- { // Found string in database, return id
- id = sqlite3_column_int (prepStmt, 0);
-
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST))
- {
- trace_printf("%s@%d found unique string id: nid=%d, id=%d\n",
- method_name, __LINE__, nid, id);
- }
- }
- else if ( rc == SQLITE_DONE )
- {
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBNOEXIST );
- }
- else
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] (%s) failed, nid=%d, id=%d, error: %s\n"
- , method_name, sqlStmt, nid, id,sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- }
-
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCSUCCESS );
-}
-
-int CTcdbSqlite::GetUniqueStringIdMax( int nid, int &id )
-{
- const char method_name[] = "CTcdbSqlite::GetUniqueStringIdMax";
- TRACE_ENTRY;
-
- if ( !IsInitialized() )
- {
- if (TcTraceSettings & (TC_TRACE_REGISTRY | TC_TRACE_REQUEST | TC_TRACE_INIT))
- {
- trace_printf( "%s@%d Database is not initialized for access!\n"
- , method_name, __LINE__);
- }
- TRACE_EXIT;
- return( TCNOTINIT );
- }
-
- int result = 0;
- int rc;
- const char *sqlStmt;
- sqlStmt = "select max(id) from monRegUniqueStrings where nid=?";
-
- sqlite3_stmt * prepStmt;
- rc = sqlite3_prepare_v2( db_, sqlStmt, strlen(sqlStmt)+1, &prepStmt,
- NULL);
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf)
- , "[%s] prepare (%s) failed, error: %s\n"
- , method_name, sqlStmt, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_ERR, buf );
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
- else
- {
- rc = sqlite3_bind_int( prepStmt, 1, nid );
- if ( rc != SQLITE_OK )
- {
- char buf[TC_LOG_BUF_SIZE];
- snprintf( buf, sizeof(buf),
- "[%s] sqlite3_bind_int(nid) failed, error: %s\n"
- , method_name, sqlite3_errmsg(db_) );
- TcLogWrite( SQLITE_DB_ACCESS_ERROR, TC_LOG_CRIT, buf );
- if ( prepStmt != NULL )
- {
- sqlite3_finalize( prepStmt );
- }
- TRACE_EXIT;
- return( TCDBOPERROR );
- }
-
- rc = sqlite3_step( prepStmt );
-
-
<TRUNCATED>