414 //3. Check 'temp' folder exists |
414 //3. Check 'temp' folder exists |
415 err = TheFs.MkDir(KServerTempDir); |
415 err = TheFs.MkDir(KServerTempDir); |
416 TEST2(err, KErrAlreadyExists); |
416 TEST2(err, KErrAlreadyExists); |
417 } |
417 } |
418 |
418 |
419 /** |
|
420 @SYMTestCaseID PDS-SQL-CT-4213 |
|
421 @SYMTestCaseDesc Tests the ability of the SQL server to store empty strings and retrieve them as |
|
422 text column values, not NULLs. |
|
423 Change: ou1cimx1#504388. |
|
424 @SYMTestPriority High |
|
425 @SYMTestActions The test creates a database and a table and stores there empty strings. |
|
426 Then the test retrieves the stored column values and verifies that the column type is |
|
427 "text", not "null". |
|
428 @SYMTestExpectedResults Test must not fail |
|
429 */ |
|
430 void EmptyTextColumnTest() |
|
431 { |
|
432 _LIT8(KEncUtf16, "encoding=\"UTF-16\""); |
|
433 _LIT8(KEncUtf8, "encoding=\"UTF-8\""); |
|
434 TPtrC8 enc[] = {KEncUtf16(), KEncUtf8()}; |
|
435 for(TInt i=0;i<(sizeof(enc)/sizeof(enc[0]));++i) |
|
436 { |
|
437 (void)RSqlDatabase::Delete(KTestDatabase1); |
|
438 TInt err = TheDb1.Create(KTestDatabase1, &enc[i]); |
|
439 TEST2(err, KErrNone); |
|
440 //Insert records with empty text column values using RSqlDatabase::Exec() |
|
441 err = TheDb1.Exec(_L("CREATE TABLE A(ID INTEGER, T TEXT)")); |
|
442 TEST(err >= 0); |
|
443 err = TheDb1.Exec(_L("INSERT INTO A VALUES(1, '')")); |
|
444 TEST2(err, 1); |
|
445 err = TheDb1.Exec(_L8("INSERT INTO A VALUES(2, '')")); |
|
446 TEST2(err, 1); |
|
447 //Insert a record with empty text column value using RSqlParamWriteStream |
|
448 RSqlStatement stmt; |
|
449 err = stmt.Prepare(TheDb1, _L("INSERT INTO A(ID, T) VALUES(:P1, :P2)")); |
|
450 TEST2(err, KErrNone); |
|
451 err = stmt.BindInt(0, 3); |
|
452 TEST2(err, KErrNone); |
|
453 RSqlParamWriteStream strm; |
|
454 err = strm.BindText(stmt, 1); |
|
455 TEST2(err, KErrNone); |
|
456 TRAP(err, strm.WriteL(KNullDesC)); |
|
457 TEST2(err, KErrNone); |
|
458 strm.Close(); |
|
459 err = stmt.Exec(); |
|
460 TEST2(err, 1); |
|
461 stmt.Close(); |
|
462 //Insert records with empty text column values using RSqlStatement::Bind() |
|
463 err = stmt.Prepare(TheDb1, _L("INSERT INTO A(ID, T) VALUES(:P1, :P2)")); |
|
464 TEST2(err, KErrNone); |
|
465 err = stmt.BindInt(0, 4); |
|
466 TEST2(err, KErrNone); |
|
467 err = stmt.BindText(1, KNullDesC); |
|
468 TEST2(err, KErrNone); |
|
469 err = stmt.Exec(); |
|
470 TEST2(err, 1); |
|
471 // |
|
472 err = stmt.Reset(); |
|
473 TEST2(err, KErrNone); |
|
474 err = stmt.BindInt(0, 5); |
|
475 TEST2(err, KErrNone); |
|
476 _LIT(KEmptyStr, ""); |
|
477 err = stmt.BindText(1, KEmptyStr); |
|
478 TEST2(err, KErrNone); |
|
479 err = stmt.Exec(); |
|
480 TEST2(err, 1); |
|
481 stmt.Close(); |
|
482 //Read the empty text column values |
|
483 err = stmt.Prepare(TheDb1, _L("SELECT T FROM A")); |
|
484 TEST2(err, KErrNone); |
|
485 TInt cnt = 0; |
|
486 while((err = stmt.Next()) == KSqlAtRow) |
|
487 { |
|
488 ++cnt; |
|
489 TPtrC val; |
|
490 err = stmt.ColumnText(0, val); |
|
491 TEST2(err, KErrNone); |
|
492 TEST2(val.Length(), 0); |
|
493 TSqlColumnType type = stmt.ColumnType(0); |
|
494 TEST2(type, ESqlText); |
|
495 } |
|
496 stmt.Close(); |
|
497 TEST2(err, KSqlAtEnd); |
|
498 TEST2(cnt, 5); |
|
499 // |
|
500 TheDb1.Close(); |
|
501 err = RSqlDatabase::Delete(KTestDatabase1); |
|
502 TEST2(err, KErrNone); |
|
503 } |
|
504 } |
|
505 |
|
506 void DoTestsL() |
419 void DoTestsL() |
507 { |
420 { |
508 TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4154 DEF143062: SQL, \"CREATE INDEX\" sql crashes SQL server")); |
421 TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4154 DEF143062: SQL, \"CREATE INDEX\" sql crashes SQL server")); |
509 DEF143062(); |
422 DEF143062(); |
510 |
423 |