| OLD | NEW |
| 1 # 2002 February 26 | 1 # 2002 February 26 |
| 2 # | 2 # |
| 3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
| 4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
| 5 # | 5 # |
| 6 # May you do good and not evil. | 6 # May you do good and not evil. |
| 7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
| 8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
| 9 # | 9 # |
| 10 #*********************************************************************** | 10 #*********************************************************************** |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 CREATE VIEW v1 AS SELECT a AS 'xyz', b+c AS 'pqr', c-b FROM t1; | 145 CREATE VIEW v1 AS SELECT a AS 'xyz', b+c AS 'pqr', c-b FROM t1; |
| 146 SELECT * FROM v1 LIMIT 1 | 146 SELECT * FROM v1 LIMIT 1 |
| 147 } | 147 } |
| 148 } {xyz 2 pqr 7 c-b 1} | 148 } {xyz 2 pqr 7 c-b 1} |
| 149 do_test view-3.3.2 { | 149 do_test view-3.3.2 { |
| 150 execsql2 { | 150 execsql2 { |
| 151 CREATE VIEW v1b AS SELECT t1.a, b+c, t1.c FROM t1; | 151 CREATE VIEW v1b AS SELECT t1.a, b+c, t1.c FROM t1; |
| 152 SELECT * FROM v1b LIMIT 1 | 152 SELECT * FROM v1b LIMIT 1 |
| 153 } | 153 } |
| 154 } {a 2 b+c 7 c 4} | 154 } {a 2 b+c 7 c 4} |
| 155 do_test view-3.3.3 { |
| 156 execsql2 { |
| 157 CREATE VIEW v1c(x,y,z) AS SELECT a, b+c, c-b FROM t1; |
| 158 SELECT * FROM v1c LIMIT 1; |
| 159 } |
| 160 } {x 2 y 7 z 1} |
| 161 do_catchsql_test view-3.3.4 { |
| 162 CREATE VIEW v1err(x,y DESC,z) AS SELECT a, b+c, c-b FROM t1; |
| 163 } {1 {syntax error after column name "y"}} |
| 164 do_catchsql_test view-3.3.5 { |
| 165 DROP VIEW IF EXISTS v1err; |
| 166 CREATE VIEW v1err(x,y) AS SELECT a, b+c, c-b FROM t1; |
| 167 SELECT * FROM v1err; |
| 168 } {1 {expected 2 columns for 'v1err' but got 3}} |
| 169 do_catchsql_test view-3.3.6 { |
| 170 DROP VIEW IF EXISTS v1err; |
| 171 CREATE VIEW v1err(w,x,y,z) AS SELECT a, b+c, c-b FROM t1; |
| 172 SELECT * FROM v1err; |
| 173 } {1 {expected 4 columns for 'v1err' but got 3}} |
| 155 | 174 |
| 156 ifcapable compound { | 175 ifcapable compound { |
| 157 do_test view-3.4 { | 176 do_test view-3.4 { |
| 158 execsql2 { | 177 execsql2 { |
| 159 CREATE VIEW v3 AS SELECT a FROM t1 UNION SELECT b FROM t1 ORDER BY b; | 178 CREATE VIEW v3 AS SELECT a FROM t1 UNION SELECT b FROM t1 ORDER BY b; |
| 160 SELECT * FROM v3 LIMIT 4; | 179 SELECT * FROM v3 LIMIT 4; |
| 161 } | 180 } |
| 162 } {a 2 a 3 a 5 a 6} | 181 } {a 2 a 3 a 5 a 6} |
| 163 do_test view-3.5 { | 182 do_test view-3.5 { |
| 164 execsql2 { | 183 execsql2 { |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 } {7 2 13 5 19 8 27 12} | 349 } {7 2 13 5 19 8 27 12} |
| 331 do_test view-8.2 { | 350 do_test view-8.2 { |
| 332 db close | 351 db close |
| 333 sqlite3 db test.db | 352 sqlite3 db test.db |
| 334 execsql { | 353 execsql { |
| 335 SELECT * FROM v6 ORDER BY xyz; | 354 SELECT * FROM v6 ORDER BY xyz; |
| 336 } | 355 } |
| 337 } {7 2 13 5 19 8 27 12} | 356 } {7 2 13 5 19 8 27 12} |
| 338 do_test view-8.3 { | 357 do_test view-8.3 { |
| 339 execsql { | 358 execsql { |
| 340 CREATE VIEW v7 AS SELECT pqr+xyz AS a FROM v6; | 359 CREATE VIEW v7(a) AS SELECT pqr+xyz FROM v6; |
| 341 SELECT * FROM v7 ORDER BY a; | 360 SELECT * FROM v7 ORDER BY a; |
| 342 } | 361 } |
| 343 } {9 18 27 39} | 362 } {9 18 27 39} |
| 344 | 363 |
| 345 ifcapable subquery { | 364 ifcapable subquery { |
| 346 do_test view-8.4 { | 365 do_test view-8.4 { |
| 347 execsql { | 366 execsql { |
| 348 CREATE VIEW v8 AS SELECT max(cnt) AS mx FROM | 367 CREATE VIEW v8 AS SELECT max(cnt) AS mx FROM |
| 349 (SELECT a%2 AS eo, count(*) AS cnt FROM t1 GROUP BY eo); | 368 (SELECT a%2 AS eo, count(*) AS cnt FROM t1 GROUP BY eo); |
| 350 SELECT * FROM v8; | 369 SELECT * FROM v8; |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 } | 467 } |
| 449 } {This this THIS} | 468 } {This this THIS} |
| 450 | 469 |
| 451 # Ticket #1270: Do not allow parameters in view definitions. | 470 # Ticket #1270: Do not allow parameters in view definitions. |
| 452 # | 471 # |
| 453 do_test view-12.1 { | 472 do_test view-12.1 { |
| 454 catchsql { | 473 catchsql { |
| 455 CREATE VIEW v12 AS SELECT a FROM t1 WHERE b=? | 474 CREATE VIEW v12 AS SELECT a FROM t1 WHERE b=? |
| 456 } | 475 } |
| 457 } {1 {parameters are not allowed in views}} | 476 } {1 {parameters are not allowed in views}} |
| 477 do_test view-12.2 { |
| 478 catchsql { |
| 479 CREATE VIEW v12(x) AS SELECT a FROM t1 WHERE b=? |
| 480 } |
| 481 } {1 {parameters are not allowed in views}} |
| 458 | 482 |
| 459 ifcapable attach { | 483 ifcapable attach { |
| 460 do_test view-13.1 { | 484 do_test view-13.1 { |
| 461 forcedelete test2.db | 485 forcedelete test2.db |
| 462 catchsql { | 486 catchsql { |
| 463 ATTACH 'test2.db' AS two; | 487 ATTACH 'test2.db' AS two; |
| 464 CREATE TABLE two.t2(x,y); | 488 CREATE TABLE two.t2(x,y); |
| 465 CREATE VIEW v13 AS SELECT y FROM two.t2; | 489 CREATE VIEW v13 AS SELECT y FROM two.t2; |
| 466 } | 490 } |
| 467 } {1 {view v13 cannot reference objects in database two}} | 491 } {1 {view v13 cannot reference objects in database two}} |
| 468 } | 492 } |
| 469 | 493 |
| 470 # Ticket #1658 | 494 # Ticket #1658 |
| 471 # | 495 # |
| 472 do_test view-14.1 { | 496 do_test view-14.1 { |
| 473 catchsql { | 497 catchsql { |
| 474 CREATE TEMP VIEW t1 AS SELECT a,b FROM t1; | 498 CREATE TEMP VIEW t1 AS SELECT a,b FROM t1; |
| 475 SELECT * FROM temp.t1; | 499 SELECT * FROM temp.t1; |
| 476 } | 500 } |
| 477 } {1 {view t1 is circularly defined}} | 501 } {1 {view t1 is circularly defined}} |
| 502 do_test view-14.2 { |
| 503 catchsql { |
| 504 DROP VIEW IF EXISTS temp.t1; |
| 505 CREATE TEMP VIEW t1(a,b) AS SELECT a,b FROM t1; |
| 506 SELECT * FROM temp.t1; |
| 507 } |
| 508 } {1 {view t1 is circularly defined}} |
| 478 | 509 |
| 479 # Tickets #1688, #1709 | 510 # Tickets #1688, #1709 |
| 480 # | 511 # |
| 481 do_test view-15.1 { | 512 do_test view-15.1 { |
| 482 execsql2 { | 513 execsql2 { |
| 483 CREATE VIEW v15 AS SELECT a AS x, b AS y FROM t1; | 514 CREATE VIEW v15 AS SELECT a AS x, b AS y FROM t1; |
| 484 SELECT * FROM v15 LIMIT 1; | 515 SELECT * FROM v15 LIMIT 1; |
| 485 } | 516 } |
| 486 } {x 2 y 3} | 517 } {x 2 y 3} |
| 487 do_test view-15.2 { | 518 do_test view-15.2 { |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 CREATE VIEW v64 AS SELECT * FROM v32 UNION SELECT * FROM v32; | 623 CREATE VIEW v64 AS SELECT * FROM v32 UNION SELECT * FROM v32; |
| 593 CREATE VIEW v128 AS SELECT * FROM v64 UNION SELECT * FROM v64; | 624 CREATE VIEW v128 AS SELECT * FROM v64 UNION SELECT * FROM v64; |
| 594 CREATE VIEW v256 AS SELECT * FROM v128 UNION SELECT * FROM v128; | 625 CREATE VIEW v256 AS SELECT * FROM v128 UNION SELECT * FROM v128; |
| 595 CREATE VIEW v512 AS SELECT * FROM v256 UNION SELECT * FROM v256; | 626 CREATE VIEW v512 AS SELECT * FROM v256 UNION SELECT * FROM v256; |
| 596 CREATE VIEW v1024 AS SELECT * FROM v512 UNION SELECT * FROM v512; | 627 CREATE VIEW v1024 AS SELECT * FROM v512 UNION SELECT * FROM v512; |
| 597 CREATE VIEW v2048 AS SELECT * FROM v1024 UNION SELECT * FROM v1024; | 628 CREATE VIEW v2048 AS SELECT * FROM v1024 UNION SELECT * FROM v1024; |
| 598 CREATE VIEW v4096 AS SELECT * FROM v2048 UNION SELECT * FROM v2048; | 629 CREATE VIEW v4096 AS SELECT * FROM v2048 UNION SELECT * FROM v2048; |
| 599 CREATE VIEW v8192 AS SELECT * FROM v4096 UNION SELECT * FROM v4096; | 630 CREATE VIEW v8192 AS SELECT * FROM v4096 UNION SELECT * FROM v4096; |
| 600 CREATE VIEW v16384 AS SELECT * FROM v8192 UNION SELECT * FROM v8192; | 631 CREATE VIEW v16384 AS SELECT * FROM v8192 UNION SELECT * FROM v8192; |
| 601 CREATE VIEW v32768 AS SELECT * FROM v16384 UNION SELECT * FROM v16384; | 632 CREATE VIEW v32768 AS SELECT * FROM v16384 UNION SELECT * FROM v16384; |
| 602 CREATE VIEW vx AS SELECT * FROM v32768 UNION SELECT * FROM v32768; | 633 SELECT * FROM v32768 UNION SELECT * FROM v32768; |
| 603 } | 634 } |
| 604 } {1 {too many references to "v1": max 65535}} | 635 } {1 {too many references to "v1": max 65535}} |
| 605 ifcapable progress { | 636 ifcapable progress { |
| 606 do_test view-21.2 { | 637 do_test view-21.2 { |
| 607 db progress 1000 {expr 1} | 638 db progress 1000 {expr 1} |
| 608 catchsql { | 639 catchsql { |
| 609 SELECT * FROM v32768; | 640 SELECT * FROM v32768; |
| 610 } | 641 } |
| 611 } {1 interrupted} | 642 } {1 interrupted} |
| 612 } | 643 } |
| 613 | 644 |
| 614 db close | 645 db close |
| 615 sqlite3 db :memory: | 646 sqlite3 db :memory: |
| 616 do_execsql_test view-22.1 { | 647 do_execsql_test view-22.1 { |
| 617 CREATE VIEW x1 AS SELECT 123 AS '', 234 AS '', 345 AS ''; | 648 CREATE VIEW x1 AS SELECT 123 AS '', 234 AS '', 345 AS ''; |
| 618 SELECT * FROM x1; | 649 SELECT * FROM x1; |
| 619 } {123 234 345} | 650 } {123 234 345} |
| 620 do_test view-22.2 { | 651 do_test view-22.2 { |
| 621 unset -nocomplain x | 652 unset -nocomplain x |
| 622 db eval {SELECT * FROM x1} x break | 653 db eval {SELECT * FROM x1} x break |
| 623 lsort [array names x] | 654 lsort [array names x] |
| 624 } {{} * :1 :2} | 655 } {{} * :1 :2} |
| 625 | 656 |
| 626 | 657 |
| 627 finish_test | 658 finish_test |
| OLD | NEW |