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

1.1     ! misho       1: # 2008 December 8
        !             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 is a verification that the bugs identified in ticket
        !            14: # #3527 have been fixed.
        !            15: #
        !            16: # $Id: tkt3527.test,v 1.1 2008/12/08 13:42:36 drh Exp $
        !            17: 
        !            18: set testdir [file dirname $argv0]
        !            19: source $testdir/tester.tcl
        !            20: 
        !            21: do_test tkt3527-1.1 {
        !            22:   db eval {
        !            23:     CREATE TABLE Element (
        !            24:      Code INTEGER PRIMARY KEY,
        !            25:      Name VARCHAR(60)
        !            26:     );
        !            27:     
        !            28:     CREATE TABLE ElemOr (
        !            29:      CodeOr INTEGER NOT NULL,
        !            30:      Code INTEGER NOT NULL,
        !            31:      PRIMARY KEY(CodeOr,Code)
        !            32:     );
        !            33:     
        !            34:     CREATE TABLE ElemAnd (
        !            35:      CodeAnd INTEGER,
        !            36:      Code INTEGER,
        !            37:      Attr1 INTEGER,
        !            38:      Attr2 INTEGER,
        !            39:      Attr3 INTEGER,
        !            40:      PRIMARY KEY(CodeAnd,Code)
        !            41:     );
        !            42:     
        !            43:     INSERT INTO Element VALUES(1,'Elem1');
        !            44:     INSERT INTO Element VALUES(2,'Elem2');
        !            45:     INSERT INTO Element VALUES(3,'Elem3');
        !            46:     INSERT INTO Element VALUES(4,'Elem4');
        !            47:     INSERT INTO Element VALUES(5,'Elem5');
        !            48:     INSERT INTO ElemOr Values(3,4);
        !            49:     INSERT INTO ElemOr Values(3,5);
        !            50:     INSERT INTO ElemAnd VALUES(1,3,1,1,1);
        !            51:     INSERT INTO ElemAnd VALUES(1,2,1,1,1);
        !            52:     
        !            53:     CREATE VIEW ElemView1 AS
        !            54:     SELECT
        !            55:       CAST(Element.Code AS VARCHAR(50)) AS ElemId,
        !            56:      Element.Code AS ElemCode,
        !            57:      Element.Name AS ElemName,
        !            58:      ElemAnd.Code AS InnerCode,
        !            59:      ElemAnd.Attr1 AS Attr1,
        !            60:      ElemAnd.Attr2 AS Attr2,
        !            61:      ElemAnd.Attr3 AS Attr3,
        !            62:      0 AS Level,
        !            63:      0 AS IsOrElem
        !            64:     FROM Element JOIN ElemAnd ON ElemAnd.CodeAnd=Element.Code
        !            65:     WHERE ElemAnd.CodeAnd NOT IN (SELECT CodeOr FROM ElemOr)
        !            66:     UNION ALL
        !            67:     SELECT
        !            68:       CAST(ElemOr.CodeOr AS VARCHAR(50)) AS ElemId,
        !            69:       Element.Code AS ElemCode,
        !            70:       Element.Name AS ElemName,
        !            71:       ElemOr.Code AS InnerCode,
        !            72:       NULL AS Attr1,
        !            73:       NULL AS Attr2,
        !            74:       NULL AS Attr3,
        !            75:       0 AS Level,
        !            76:       1 AS IsOrElem
        !            77:     FROM ElemOr JOIN Element ON Element.Code=ElemOr.CodeOr
        !            78:     ORDER BY ElemId, InnerCode;
        !            79:     
        !            80:     CREATE VIEW ElemView2 AS
        !            81:     SELECT
        !            82:       ElemId,
        !            83:       ElemCode,
        !            84:       ElemName,
        !            85:       InnerCode,
        !            86:       Attr1,
        !            87:       Attr2,
        !            88:       Attr3,
        !            89:       Level,
        !            90:       IsOrElem
        !            91:     FROM ElemView1
        !            92:     UNION ALL
        !            93:     SELECT
        !            94:       Element.ElemId || '.' || InnerElem.ElemId AS ElemId,
        !            95:       InnerElem.ElemCode,
        !            96:       InnerElem.ElemName,
        !            97:       InnerElem.InnerCode,
        !            98:       InnerElem.Attr1,
        !            99:       InnerElem.Attr2,
        !           100:       InnerElem.Attr3,
        !           101:       InnerElem.Level+1,
        !           102:       InnerElem.IsOrElem
        !           103:     FROM ElemView1 AS Element
        !           104:     JOIN ElemView1 AS InnerElem
        !           105:          ON Element.Level=0 AND Element.InnerCode=InnerElem.ElemCode
        !           106:     ORDER BY ElemId, InnerCode;
        !           107:  
        !           108:     SELECT * FROM ElemView1;
        !           109:   }
        !           110: } {1 1 Elem1 2 1 1 1 0 0 1 1 Elem1 3 1 1 1 0 0 3 3 Elem3 4 {} {} {} 0 1 3 3 Elem3 5 {} {} {} 0 1}
        !           111:    
        !           112: do_test tkt3527-1.2 {
        !           113:   db eval {
        !           114:     SELECT * FROM ElemView2;
        !           115:   }
        !           116: } {1 1 Elem1 2 1 1 1 0 0 1 1 Elem1 3 1 1 1 0 0 1.3 3 Elem3 4 {} {} {} 1 1 1.3 3 Elem3 5 {} {} {} 1 1 3 3 Elem3 4 {} {} {} 0 1 3 3 Elem3 5 {} {} {} 0 1}
        !           117: 
        !           118: finish_test

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