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 |