/** @SYMTestCaseID PDS-SQLITE3SEC-UT-4041 @SYMTestCaseDesc SQL server single-select performance test. The test selects one randomly chosen record and stores the execution time for later use (comparison and printing). @SYMTestPriority High @SYMTestActions SQL server single-select performance test. @SYMTestExpectedResults Test must not fail @SYMREQ REQ11320 */ static void SqlServerSingleSelectTest(const char aSingleSelectSql[], TInt aSelectRecId) { TheTest.Next( _L("@SYMTestCaseID:PDS-SQLITE3SEC-UT-4041")); (void)KillProcess(KSqlSrvName); TInt err = TheDb.Open(KTestDbName); TEST2(err, KErrNone); TheSqlBuf.Copy(TPtrC8((const TUint8*)aSingleSelectSql)); TheSqlBuf.AppendNum((TInt64)aSelectRecId); RSqlStatement stmt; err = stmt.Prepare(TheDb, TheSqlBuf); TEST2(err, KErrNone); TInt recCnt = 0; TUint32 fc = FastCounterValue(); while((err = stmt.Next()) == KSqlAtRow) { TInt64 i64 = stmt.ColumnInt64(0); UNUSED_VAR(i64); TReal d = stmt.ColumnReal(1); UNUSED_VAR(d); TPtrC t; err = stmt.ColumnText(2, t); TEST2(err, KErrNone); UNUSED_PTR(t); TPtrC8 b; err = stmt.ColumnBinary(3, b); TEST2(err, KErrNone); UNUSED_PTR(b); ++recCnt; } StorePerfTestResult(EPerfTestSqlMode, EPerfTestSingleSelect, FastCounterValue() - fc); TEST2(err, KSqlAtEnd); TEST2(recCnt, 1); stmt.Close(); TheDb.Close(); }
void CMdSSqLiteConnection::ColumnsL( const RSqlStatement& aStatement, RRowData& aRow ) { const TInt count( aRow.Size() ); for( TInt i=0; i < count; ++i ) { // get data in column, check for type const TSqlColumnType actual = aStatement.ColumnType( i ); if( actual == ESqlNull ) { aRow.Column( i ).Set( (const HBufC16*)NULL ); continue; } const TColumnDataType coltype = aRow.Column( i ).Type(); switch ( coltype ) { case EColumnBool: { TInt valInt = aStatement.ColumnInt( i ); const TBool valBool = valInt ? ETrue : EFalse; aRow.Column( i ).Set( valBool ); break; } case EColumnInt32: { TInt32 valInt = aStatement.ColumnInt( i ); aRow.Column( i ).Set( valInt ); break; } case EColumnUint32: { TInt64 valInt64 = aStatement.ColumnInt64( i ); aRow.Column( i ).Set( (TUint32)valInt64 ); break; } case EColumnInt64: { TInt64 valInt64 = aStatement.ColumnInt64( i ); aRow.Column( i ).Set( valInt64 ); break; } case EColumnReal32: { TReal valReal = aStatement.ColumnReal( i ); aRow.Column( i ).Set( static_cast<TReal32>( valReal ) ); break; } case EColumnReal64: { TReal valReal = aStatement.ColumnReal( i ); aRow.Column( i ).Set( valReal ); break; } case EColumnTime: { TTime valTime = aStatement.ColumnInt64( i ); aRow.Column( i ).Set( valTime ); break; } case EColumnDes16: { switch ( actual ) { case ESqlText: { TPtrC16 valTPtrC16 = aStatement.ColumnTextL( i ); HBufC16* valHBuf16 = HBufC16::NewL( valTPtrC16.Length() ); *valHBuf16 = valTPtrC16; aRow.Column( i ).Set( valHBuf16 ); break; } case ESqlInt: { HBufC16* valHBuf16int32 = HBufC16::NewL( 30 ); TInt valInt = aStatement.ColumnInt( i ); valHBuf16int32->Des().Num( valInt ); aRow.Column( i ).Set( valHBuf16int32 ); break; } case ESqlInt64: { HBufC16* valHBuf16int64 = HBufC16::NewL( 30 ); TInt64 valInt64 = aStatement.ColumnInt64( i ); valHBuf16int64->Des().Num( valInt64 ); aRow.Column( i ).Set( valHBuf16int64 ); break; } case ESqlReal: { HBufC16* valHBuf16real64 = HBufC16::NewL( 40 ); TReal valReal = aStatement.ColumnReal( i ); TRealFormat realFormat; realFormat.iType |= KAllowThreeDigitExp; valHBuf16real64->Des().Num( valReal, realFormat ); aRow.Column( i ).Set( valHBuf16real64 ); break; } case ESqlNull: { aRow.Column( i ).Set( (HBufC16*)NULL ); break; } default: { #ifdef _DEBUG User::Panic( _L( "MdSSCCo1" ), KErrCorrupt ); #endif User::Leave( KErrCorrupt ); } } break; } case EColumnNotUsed: // skip this round break; default: #ifdef _DEBUG User::Panic( _L( "MdSSCCo2" ), KErrCorrupt ); #endif User::Leave( KErrCorrupt ); } } }