379 TheDb1.Close(); |
378 TheDb1.Close(); |
380 err = RSqlDatabase::Delete(KTestDatabase1); |
379 err = RSqlDatabase::Delete(KTestDatabase1); |
381 TEST2(err, KErrNone); |
380 TEST2(err, KErrNone); |
382 } |
381 } |
383 |
382 |
|
383 /** |
|
384 @SYMTestCaseID PDS-SQL-CT-4213 |
|
385 @SYMTestCaseDesc Tests the ability of the SQL server to store empty strings and retrieve them as |
|
386 text column values, not NULLs. |
|
387 Change: ou1cimx1#504388. |
|
388 @SYMTestPriority High |
|
389 @SYMTestActions The test creates a database and a table and stores there empty strings. |
|
390 Then the test retrieves the stored column values and verifies that the column type is |
|
391 "text", not "null". |
|
392 @SYMTestExpectedResults Test must not fail |
|
393 */ |
|
394 void EmptyTextColumnTest() |
|
395 { |
|
396 _LIT8(KEncUtf16, "encoding=\"UTF-16\""); |
|
397 _LIT8(KEncUtf8, "encoding=\"UTF-8\""); |
|
398 TPtrC8 enc[] = {KEncUtf16(), KEncUtf8()}; |
|
399 for(TInt i=0;i<(sizeof(enc)/sizeof(enc[0]));++i) |
|
400 { |
|
401 (void)RSqlDatabase::Delete(KTestDatabase1); |
|
402 TInt err = TheDb1.Create(KTestDatabase1, &enc[i]); |
|
403 TEST2(err, KErrNone); |
|
404 //Insert records with empty text column values using RSqlDatabase::Exec() |
|
405 err = TheDb1.Exec(_L("CREATE TABLE A(ID INTEGER, T TEXT)")); |
|
406 TEST(err >= 0); |
|
407 err = TheDb1.Exec(_L("INSERT INTO A VALUES(1, '')")); |
|
408 TEST2(err, 1); |
|
409 err = TheDb1.Exec(_L8("INSERT INTO A VALUES(2, '')")); |
|
410 TEST2(err, 1); |
|
411 //Insert a record with empty text column value using RSqlParamWriteStream |
|
412 RSqlStatement stmt; |
|
413 err = stmt.Prepare(TheDb1, _L("INSERT INTO A(ID, T) VALUES(:P1, :P2)")); |
|
414 TEST2(err, KErrNone); |
|
415 err = stmt.BindInt(0, 3); |
|
416 TEST2(err, KErrNone); |
|
417 RSqlParamWriteStream strm; |
|
418 err = strm.BindText(stmt, 1); |
|
419 TEST2(err, KErrNone); |
|
420 TRAP(err, strm.WriteL(KNullDesC)); |
|
421 TEST2(err, KErrNone); |
|
422 strm.Close(); |
|
423 err = stmt.Exec(); |
|
424 TEST2(err, 1); |
|
425 stmt.Close(); |
|
426 //Insert records with empty text column values using RSqlStatement::Bind() |
|
427 err = stmt.Prepare(TheDb1, _L("INSERT INTO A(ID, T) VALUES(:P1, :P2)")); |
|
428 TEST2(err, KErrNone); |
|
429 err = stmt.BindInt(0, 4); |
|
430 TEST2(err, KErrNone); |
|
431 err = stmt.BindText(1, KNullDesC); |
|
432 TEST2(err, KErrNone); |
|
433 err = stmt.Exec(); |
|
434 TEST2(err, 1); |
|
435 // |
|
436 err = stmt.Reset(); |
|
437 TEST2(err, KErrNone); |
|
438 err = stmt.BindInt(0, 5); |
|
439 TEST2(err, KErrNone); |
|
440 _LIT(KEmptyStr, ""); |
|
441 err = stmt.BindText(1, KEmptyStr); |
|
442 TEST2(err, KErrNone); |
|
443 err = stmt.Exec(); |
|
444 TEST2(err, 1); |
|
445 stmt.Close(); |
|
446 //Read the empty text column values |
|
447 err = stmt.Prepare(TheDb1, _L("SELECT T FROM A")); |
|
448 TEST2(err, KErrNone); |
|
449 TInt cnt = 0; |
|
450 while((err = stmt.Next()) == KSqlAtRow) |
|
451 { |
|
452 ++cnt; |
|
453 TPtrC val; |
|
454 err = stmt.ColumnText(0, val); |
|
455 TEST2(err, KErrNone); |
|
456 TEST2(val.Length(), 0); |
|
457 TSqlColumnType type = stmt.ColumnType(0); |
|
458 TEST2(type, ESqlText); |
|
459 } |
|
460 stmt.Close(); |
|
461 TEST2(err, KSqlAtEnd); |
|
462 TEST2(cnt, 5); |
|
463 // |
|
464 TheDb1.Close(); |
|
465 err = RSqlDatabase::Delete(KTestDatabase1); |
|
466 TEST2(err, KErrNone); |
|
467 } |
|
468 } |
|
469 |
|
470 /** |
|
471 @SYMTestCaseID PDS-SQL-CT-4214 |
|
472 @SYMTestCaseDesc Test for the change "After *#7370# Java apps are not preinstalled again" |
|
473 @SYMTestPriority High |
|
474 @SYMTestActions The test makes sure there are no issues if the temp folder is removed after the server |
|
475 has already started. The test performs the following actions - |
|
476 1. Delete the 'temp' directory. |
|
477 2. Create a transaction which creates temp files. |
|
478 3. Check 'temp' folder exists at the end |
|
479 @SYMTestExpectedResults Test must not fail |
|
480 */ |
|
481 void DeleteTempFolder() |
|
482 { |
|
483 //1. Delete 'temp' folder |
|
484 TInt err = TheFs.RmDir(KServerTempDir); |
|
485 TEST2(err, KErrNone); |
|
486 |
|
487 //2. Create a transaction which creates temp files. |
|
488 (void)RSqlDatabase::Delete(KTestDatabase1); |
|
489 err = TheDb1.Create(KTestDatabase1); |
|
490 TEST2(err, KErrNone); |
|
491 |
|
492 err = TheDb1.Exec(_L("CREATE TABLE t1(x UNIQUE); INSERT INTO t1 VALUES(1)")); |
|
493 TEST(err >= 0); |
|
494 err = TheDb1.Exec(_L("BEGIN; UPDATE t1 SET x = 2; UPDATE t1 SET x = 3; COMMIT")); |
|
495 TEST(err >= 0); |
|
496 |
|
497 TheDb1.Close(); |
|
498 err = RSqlDatabase::Delete(KTestDatabase1); |
|
499 TEST2(err, KErrNone); |
|
500 |
|
501 //3. Check 'temp' folder exists |
|
502 err = TheFs.MkDir(KServerTempDir); |
|
503 TEST2(err, KErrAlreadyExists); |
|
504 } |
|
505 |
384 void DoTestsL() |
506 void DoTestsL() |
385 { |
507 { |
386 TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4154 DEF143062: SQL, \"CREATE INDEX\" sql crashes SQL server")); |
508 TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4154 DEF143062: SQL, \"CREATE INDEX\" sql crashes SQL server")); |
387 DEF143062(); |
509 DEF143062(); |
388 |
510 |