Annotation of embedaddon/sqlite3/test/tkt1435.test, revision 1.1

1.1     ! misho       1: # 2005 September 17
        !             2: #
        !             3: # The author disclaims copyright to this source code.  In place of
        !             4: # a legal notice, here is a blessing:
        !             5: #
        !             6: #    May you do good and not evil.
        !             7: #    May you find forgiveness for yourself and forgive others.
        !             8: #    May you share freely, never taking more than you give.
        !             9: #
        !            10: #***********************************************************************
        !            11: # This file implements regression tests for SQLite library.
        !            12: #
        !            13: # This file implements tests to verify that ticket #1435 has been
        !            14: # fixed.  
        !            15: #
        !            16: #
        !            17: # $Id: tkt1435.test,v 1.2 2006/01/17 09:35:02 danielk1977 Exp $
        !            18: 
        !            19: set testdir [file dirname $argv0]
        !            20: source $testdir/tester.tcl
        !            21: 
        !            22: ifcapable !memorydb {
        !            23:   finish_test
        !            24:   return
        !            25: }
        !            26: 
        !            27: # Construct the sample database.
        !            28: #
        !            29: do_test tkt1435-1.0 {
        !            30:   sqlite3 db :memory:
        !            31:   execsql {
        !            32:     CREATE TABLE Instances(
        !            33:        instanceId INTEGER PRIMARY KEY,
        !            34:        troveName STR,
        !            35:        versionId INT,
        !            36:        flavorId INT,
        !            37:        timeStamps STR,
        !            38:        isPresent INT,
        !            39:        pinned BOOLEAN
        !            40:     );
        !            41:     INSERT INTO "Instances"
        !            42:        VALUES(1, 'libhello:runtime', 1, 1, 1126929880.094, 1, 1);
        !            43:     INSERT INTO "Instances"
        !            44:        VALUES(2, 'libhello:user', 1, 1, 1126929880.094, 1, 0);
        !            45:     INSERT INTO "Instances"
        !            46:        VALUES(3, 'libhello:script', 1, 1, 1126929880.094, 1, 0);
        !            47:     INSERT INTO "Instances"
        !            48:        VALUES(4, 'libhello', 1, 1, 1126929880.094, 1, 0);
        !            49:     
        !            50:     CREATE TABLE Versions(versionId INTEGER PRIMARY KEY,version STR UNIQUE);
        !            51:     INSERT INTO "Versions" VALUES(0, NULL);
        !            52:     INSERT INTO "Versions" VALUES(1, '/localhost@rpl:linux/0-1-1');
        !            53:     
        !            54:     CREATE TABLE Flavors(flavorId integer primary key, flavor str unique);
        !            55:     INSERT INTO "Flavors" VALUES(0, NULL);
        !            56:     INSERT INTO "Flavors" VALUES(1, '1#x86');
        !            57:     
        !            58:     CREATE TEMPORARY TABLE tlList (
        !            59:        row INTEGER PRIMARY KEY,
        !            60:        name STRING,
        !            61:        version STRING,
        !            62:        flavor STRING
        !            63:     );
        !            64:     
        !            65:     INSERT INTO tlList 
        !            66:       values(NULL, 'libhello:script', '/localhost@rpl:linux/0-1-1', '1#x86');
        !            67:     INSERT INTO tlList 
        !            68:       values(NULL, 'libhello:user', '/localhost@rpl:linux/0-1-1', '1#x86');
        !            69:     INSERT INTO tlList 
        !            70:       values(NULL, 'libhello:runtime', '/localhost@rpl:linux/0-1-1', '1#x86');
        !            71:   }
        !            72: } {}
        !            73: 
        !            74: # Run the query with an index
        !            75: #
        !            76: do_test tkt1435-1.1 {
        !            77:   execsql {
        !            78:     select row, pinned from tlList, Instances, Versions, Flavors
        !            79:         where
        !            80:             Instances.troveName = tlList.name
        !            81:         and Versions.version = tlList.version
        !            82:         and Instances.versionId = Versions.versionId
        !            83:         and (    Flavors.flavor = tlList.flavor or Flavors.flavor is NULL
        !            84:              and tlList.flavor = '')
        !            85:         and Instances.flavorId = Flavors.flavorId
        !            86:     order by row asc;
        !            87:   }
        !            88: } {1 0 2 0 3 1}
        !            89: 
        !            90: # Create a indices, analyze and rerun the query. 
        !            91: # Verify that the results are the same
        !            92: #
        !            93: do_test tkt1435-1.2 {
        !            94:   execsql {
        !            95:     CREATE INDEX InstancesNameIdx ON Instances(troveName);
        !            96:     CREATE UNIQUE INDEX InstancesIdx 
        !            97:       ON Instances(troveName, versionId, flavorId);
        !            98:     ANALYZE;
        !            99:     select row, pinned from tlList, Instances, Versions, Flavors
        !           100:         where
        !           101:             Instances.troveName = tlList.name
        !           102:         and Versions.version = tlList.version
        !           103:         and Instances.versionId = Versions.versionId
        !           104:         and (    Flavors.flavor = tlList.flavor or Flavors.flavor is NULL
        !           105:              and tlList.flavor = '')
        !           106:         and Instances.flavorId = Flavors.flavorId
        !           107:     order by row asc;
        !           108:   }
        !           109: } {1 0 2 0 3 1}
        !           110: 
        !           111: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>