Ejemplo n.º 1
0
int SP_NKPop3Client :: getAllUidList( SP_NKPop3UidList * uidList )
{
	SP_NKStringList buffer;

	int ret = mPop3->uidl( &buffer );
	if( 0 == ret ) {
		const char * strBuf = buffer.getItem(0);

		for( const char * iter = strBuf; NULL != iter; ) {
			char line[ 256 ] = { 0 };
			SP_NKStr::strlcpy( line, iter, sizeof( line ) );

			if( '.' == line[0] ) break;

			char * pos = strchr( line, '\n' );
			if( NULL != pos ) {
				*pos = '\0';
				if( pos > line && '\r' == *( pos - 1 ) ) *( pos - 1 ) = '\0';
			}

			pos = strchr( line, ' ' );
			if( NULL == pos ) continue;
			pos++;

			SP_NKPop3Uid * uid = new SP_NKPop3Uid( pos, atoi( line ) );
			uidList->append( uid );

			iter = strchr( iter, '\n' );
			if( NULL != iter ) iter++;
		}
	}

	return ret;
}
Ejemplo n.º 2
0
int SP_HiveTableSchema :: init( sqlite3 * handle, const char * tableName, const char * ddl )
{
	mDDL = strdup( ddl );
	mTableName = strdup( tableName );
	mColumnList = new SP_NKNameValueList();

	spsqlite_column_t * columns = NULL;

	int dbRet = spsqlite_table_columns_get( handle, tableName, &columns );

	if( 0 != dbRet ) {
		SP_NKLog::log( LOG_ERR, "ERR: spsqlite_table_columns_get %d", dbRet );
		spsqlite_table_columns_free( &columns );
		return -1;
	}

	spsqlite_column_t * iter = columns;
	for( ; NULL != iter; iter = iter->next ) {
		SP_NKStringList columnDefine;

		columnDefine.append( iter->name );
		columnDefine.append( " " );
		columnDefine.append( iter->type );
		columnDefine.append( " " );

		if( iter->notNull ) {
			columnDefine.append( "not null" );
		}
		if( iter->defval ) {
			if( '\0' == *iter->defval ) {
				columnDefine.append( "default \"\"" );
			} else {
				columnDefine.append( "default " );
				columnDefine.append( iter->defval );
			}
		}

		char * value = columnDefine.getMerge();

		mColumnList->add( iter->name, value );

		free( value );
	}

	spsqlite_table_columns_free( &columns );

	return 0;
}
Ejemplo n.º 3
0
int SP_HiveSchemaManager :: alterTable( sqlite3 * handle, SP_HiveTableSchema * newTable,
			SP_HiveTableSchema * oldTable )
{
	SP_NKStringList newColumnList;

	for( int i = 0; i < newTable->getColumnCount(); i++ ) {
		const char * name = newTable->getColumnName( i );

		int index = oldTable->findColumn( name );

		if( index < 0 ) newColumnList.append( newTable->getColumnDefine( i ) );
	}

	int ret = 0;

	if( newColumnList.getCount() > 0 ) {
		for( int i = 0; 0 == ret && i < newColumnList.getCount(); i++ ) {
			SP_NKLog::log( LOG_DEBUG, "DEBUG: %s add column %s",
					oldTable->getTableName(), newColumnList.getItem( i ) );

			char sql[ 1024 ] = { 0 };
			snprintf( sql, sizeof( sql ), "alter table %s add column %s;",
					oldTable->getTableName(), newColumnList.getItem( i ) );

			ret = execWithLog( handle, sql );
		}
	}

	return ret;
}
Ejemplo n.º 4
0
int SP_NKPop3Client :: fillMailSize( SP_NKPop3UidList * uidList )
{
	SP_NKStringList buffer;

	int ret = mPop3->list( &buffer );
	if( 0 == ret ) {
		const char * strBuf = buffer.getItem(0);

		for( const char * iter = strBuf; NULL != iter; ) {
			char line[ 256 ] = { 0 };
			SP_NKStr::strlcpy( line, iter, sizeof( line ) );

			if( '.' == line[0] ) break;

			char * pos = strchr( line, '\n' );
			if( NULL != pos ) {
				*pos = '\0';
				if( pos > line && '\r' == *( pos - 1 ) ) *( pos - 1 ) = '\0';
			}

			pos = strchr( line, ' ' );
			if( NULL == pos ) continue;
			pos++;

			const SP_NKPop3Uid * uid = uidList->find( atoi( line ) );
			if( NULL != uid ) {
				((SP_NKPop3Uid*)uid)->setSize( atoi( pos ) );
			}

			iter = strchr( iter, '\n' );
			if( NULL != iter ) iter++;
		}
	}

	return ret;
}
Ejemplo n.º 5
0
int main( int argc, char * argv[] )
{
	SP_NKLog::init4test( "testcli" );
	SP_NKLog::setLogLevel( LOG_DEBUG );

	char * host = NULL, * port = NULL, * type = NULL;
	char * dbfile = NULL, * user = NULL, * dbname = NULL, * sql = NULL;

	extern char *optarg ;
	int c ;

	while( ( c = getopt( argc, argv, "h:p:t:i:u:n:s:ov" ) ) != EOF ) {
		switch ( c ) {
			case 'h' : host = optarg; break;
			case 'p' : port = optarg; break;
			case 't' : type = optarg; break;
			case 'i' : dbfile = optarg; break;
			case 'u' : user = optarg; break;
			case 'n' : dbname = optarg; break;
			case 's' : sql = optarg; break;
			case 'o' : SP_NKSocket::setLogSocketDefault( 1 ); break;
			case 'v' :
			default: showUsage( argv[ 0 ] ); break;
		}
	}

	if( NULL == host || NULL == host || NULL == dbfile
			|| NULL == user || NULL == dbname || NULL == sql ) {
		showUsage( argv[ 0 ] );
	}

	SP_NKStringList sqlList;
	{
		sql = strdup( sql );

		for( char * pos = sql; NULL != pos && '\0' != *pos; ) {
			char * next = strchr( pos, ';' );
			if( NULL != next ) *next = '\0';

			for( ; isspace( *pos ); ) pos++;

			if( '\0' != *pos ) sqlList.append( pos );

			pos = next ? next + 1 : NULL;
		}

		free( sql );
	}

	int rpcType = SP_HiveDBClientConfig::eJsonRpc;

	if( NULL != type && 0 == strcasecmp( type, "protobuf" ) ) {
		rpcType = SP_HiveDBClientConfig::eProtoBufRpc;
	}

	SP_NKTcpSocket socket( host, atoi( port ) );

	SP_HiveDBProtocol protocol( &socket, 0, rpcType );

	SP_HiveRespObject * resp = protocol.execute( atoi( dbfile ), user, dbname, &sqlList );

	if( NULL != resp ) {
		if( 0 == resp->getErrorCode() ) {
			printf( "result.count %d\n", resp->getResultCount() );

			for( int i = 0; i < resp->getResultCount(); i++ ) {
				SP_HiveResultSet * rs = resp->getResultSet( i );

				printResultSet( rs );

				delete rs;
			}
		} else {
			printf( "execute fail, errcode %d, %s\n",
					resp->getErrdataCode(), resp->getErrdataMsg() );
		}

		delete resp;
	} else {
		printf( "socket error\n" );
	}

	return 0;
}