Annotation of embedaddon/sqlite3/test/tkt3527.test, revision 1.1.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>