| OLD | NEW |
| 1 # 2007 May 8 | 1 # 2007 May 8 |
| 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 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 } $SQLITE_MAX_LIKE_PATTERN_LENGTH | 243 } $SQLITE_MAX_LIKE_PATTERN_LENGTH |
| 244 do_test sqllimits1-4.10.1 { | 244 do_test sqllimits1-4.10.1 { |
| 245 sqlite3_limit db SQLITE_LIMIT_VARIABLE_NUMBER 0x7fffffff | 245 sqlite3_limit db SQLITE_LIMIT_VARIABLE_NUMBER 0x7fffffff |
| 246 sqlite3_limit db SQLITE_LIMIT_VARIABLE_NUMBER -1 | 246 sqlite3_limit db SQLITE_LIMIT_VARIABLE_NUMBER -1 |
| 247 } $SQLITE_MAX_VARIABLE_NUMBER | 247 } $SQLITE_MAX_VARIABLE_NUMBER |
| 248 | 248 |
| 249 #-------------------------------------------------------------------- | 249 #-------------------------------------------------------------------- |
| 250 # Test cases sqllimits1-5.* test that the SQLITE_MAX_LENGTH limit | 250 # Test cases sqllimits1-5.* test that the SQLITE_MAX_LENGTH limit |
| 251 # is enforced. | 251 # is enforced. |
| 252 # | 252 # |
| 253 # EVIDENCE-OF: R-61987-00541 SQLITE_LIMIT_LENGTH The maximum size of any |
| 254 # string or BLOB or table row, in bytes. |
| 255 # |
| 253 db close | 256 db close |
| 254 sqlite3 db test.db | 257 sqlite3 db test.db |
| 255 set LARGESIZE 99999 | 258 set LARGESIZE 99999 |
| 256 set SQLITE_LIMIT_LENGTH 100000 | 259 set SQLITE_LIMIT_LENGTH 100000 |
| 257 sqlite3_limit db SQLITE_LIMIT_LENGTH $SQLITE_LIMIT_LENGTH | 260 sqlite3_limit db SQLITE_LIMIT_LENGTH $SQLITE_LIMIT_LENGTH |
| 258 | 261 |
| 259 do_test sqllimits1-5.1.1 { | 262 do_test sqllimits1-5.1.1 { |
| 260 catchsql { SELECT randomblob(2147483647) } | 263 catchsql { SELECT randomblob(2147483647) } |
| 261 } {1 {string or blob too big}} | 264 } {1 {string or blob too big}} |
| 262 do_test sqllimits1-5.1.2 { | 265 do_test sqllimits1-5.1.2 { |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 do_test sqllimits1-5.21 { | 402 do_test sqllimits1-5.21 { |
| 400 catchsql {SELECT strftime('%Y-%m-%d ' || $::strvalue, '2008-01-02')} | 403 catchsql {SELECT strftime('%Y-%m-%d ' || $::strvalue, '2008-01-02')} |
| 401 } {1 {string or blob too big}} | 404 } {1 {string or blob too big}} |
| 402 } | 405 } |
| 403 unset strvalue | 406 unset strvalue |
| 404 | 407 |
| 405 #-------------------------------------------------------------------- | 408 #-------------------------------------------------------------------- |
| 406 # Test cases sqllimits1-6.* test that the SQLITE_MAX_SQL_LENGTH limit | 409 # Test cases sqllimits1-6.* test that the SQLITE_MAX_SQL_LENGTH limit |
| 407 # is enforced. | 410 # is enforced. |
| 408 # | 411 # |
| 412 # EVIDENCE-OF: R-09808-17554 SQLITE_LIMIT_SQL_LENGTH The maximum length |
| 413 # of an SQL statement, in bytes. |
| 414 # |
| 409 do_test sqllimits1-6.1 { | 415 do_test sqllimits1-6.1 { |
| 410 sqlite3_limit db SQLITE_LIMIT_SQL_LENGTH 50000 | 416 sqlite3_limit db SQLITE_LIMIT_SQL_LENGTH 50000 |
| 411 set sql "SELECT 1 WHERE 1==1" | 417 set sql "SELECT 1 WHERE 1==1" |
| 412 set tail " /* A comment to take up space in order to make the string\ | 418 set tail " /* A comment to take up space in order to make the string\ |
| 413 longer without increasing the expression depth */\ | 419 longer without increasing the expression depth */\ |
| 414 AND 1 == 1" | 420 AND 1 == 1" |
| 415 set N [expr {(50000 / [string length $tail])+1}] | 421 set N [expr {(50000 / [string length $tail])+1}] |
| 416 append sql [string repeat $tail $N] | 422 append sql [string repeat $tail $N] |
| 417 catchsql $sql | 423 catchsql $sql |
| 418 } {1 {string or blob too big}} | 424 } {1 {string or blob too big}} |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 } $fsize | 566 } $fsize |
| 561 do_test sqllimits1-7.7.4 { | 567 do_test sqllimits1-7.7.4 { |
| 562 execsql { | 568 execsql { |
| 563 DROP TABLE abc; | 569 DROP TABLE abc; |
| 564 } | 570 } |
| 565 } {} | 571 } {} |
| 566 | 572 |
| 567 #-------------------------------------------------------------------- | 573 #-------------------------------------------------------------------- |
| 568 # Test cases sqllimits1-8.* test the SQLITE_MAX_COLUMN limit. | 574 # Test cases sqllimits1-8.* test the SQLITE_MAX_COLUMN limit. |
| 569 # | 575 # |
| 576 # EVIDENCE-OF: R-43996-29471 SQLITE_LIMIT_COLUMN The maximum number of |
| 577 # columns in a table definition or in the result set of a SELECT or the |
| 578 # maximum number of columns in an index or in an ORDER BY or GROUP BY |
| 579 # clause. |
| 580 # |
| 570 set SQLITE_LIMIT_COLUMN 200 | 581 set SQLITE_LIMIT_COLUMN 200 |
| 571 sqlite3_limit db SQLITE_LIMIT_COLUMN $SQLITE_LIMIT_COLUMN | 582 sqlite3_limit db SQLITE_LIMIT_COLUMN $SQLITE_LIMIT_COLUMN |
| 572 do_test sqllimits1-8.1 { | 583 do_test sqllimits1-8.1 { |
| 573 # Columns in a table. | 584 # Columns in a table. |
| 574 set cols [list] | 585 set cols [list] |
| 575 for {set i 0} {$i <= $SQLITE_LIMIT_COLUMN} {incr i} { | 586 for {set i 0} {$i <= $SQLITE_LIMIT_COLUMN} {incr i} { |
| 576 lappend cols "c$i" | 587 lappend cols "c$i" |
| 577 } | 588 } |
| 578 catchsql "CREATE TABLE t([join $cols ,])" | 589 catchsql "CREATE TABLE t([join $cols ,])" |
| 579 } {1 {too many columns on t}} | 590 } {1 {too many columns on t}} |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 } | 636 } |
| 626 catchsql "UPDATE t1 SET [join $cols ,];" | 637 catchsql "UPDATE t1 SET [join $cols ,];" |
| 627 } {1 {too many columns in set list}} | 638 } {1 {too many columns in set list}} |
| 628 | 639 |
| 629 do_test sqllimits1-8.8 { | 640 do_test sqllimits1-8.8 { |
| 630 # Columns in a view definition: | 641 # Columns in a view definition: |
| 631 set cols [list] | 642 set cols [list] |
| 632 for {set i 0} {$i <= $SQLITE_LIMIT_COLUMN} {incr i} { | 643 for {set i 0} {$i <= $SQLITE_LIMIT_COLUMN} {incr i} { |
| 633 lappend cols "c$i" | 644 lappend cols "c$i" |
| 634 } | 645 } |
| 635 catchsql "CREATE VIEW v1 AS SELECT [join $cols ,] FROM t1;" | 646 execsql "CREATE VIEW v1 AS SELECT [join $cols ,] FROM t1;" |
| 647 catchsql {SELECT * FROM v1} |
| 636 } {1 {too many columns in result set}} | 648 } {1 {too many columns in result set}} |
| 637 | 649 |
| 638 do_test sqllimits1-8.9 { | 650 do_test sqllimits1-8.9 { |
| 639 # Columns in a view definition (testing * expansion): | 651 # Columns in a view definition (testing * expansion): |
| 640 set cols [list] | 652 set cols [list] |
| 641 for {set i 0} {$i < $SQLITE_LIMIT_COLUMN} {incr i} { | 653 for {set i 0} {$i < $SQLITE_LIMIT_COLUMN} {incr i} { |
| 642 lappend cols "c$i" | 654 lappend cols "c$i" |
| 643 } | 655 } |
| 656 execsql {DROP VIEW IF EXISTS v1} |
| 644 catchsql "CREATE TABLE t2([join $cols ,])" | 657 catchsql "CREATE TABLE t2([join $cols ,])" |
| 645 catchsql "CREATE VIEW v1 AS SELECT *, c1 AS o FROM t2;" | 658 catchsql "CREATE VIEW v1 AS SELECT *, c1 AS o FROM t2;" |
| 659 catchsql "SELECT * FROM v1" |
| 646 } {1 {too many columns in result set}} | 660 } {1 {too many columns in result set}} |
| 661 |
| 647 do_test sqllimits1-8.10 { | 662 do_test sqllimits1-8.10 { |
| 648 # ORDER BY columns | 663 # ORDER BY columns |
| 649 set cols [list] | 664 set cols [list] |
| 650 for {set i 0} {$i <= $SQLITE_LIMIT_COLUMN} {incr i} { | 665 for {set i 0} {$i <= $SQLITE_LIMIT_COLUMN} {incr i} { |
| 651 lappend cols c | 666 lappend cols c |
| 652 } | 667 } |
| 653 set sql "SELECT c FROM t1 ORDER BY [join $cols ,]" | 668 set sql "SELECT c FROM t1 ORDER BY [join $cols ,]" |
| 654 catchsql $sql | 669 catchsql $sql |
| 655 } {1 {too many terms in ORDER BY clause}} | 670 } {1 {too many terms in ORDER BY clause}} |
| 656 do_test sqllimits1-8.11 { | 671 do_test sqllimits1-8.11 { |
| 657 # ORDER BY columns | 672 # ORDER BY columns |
| 658 set cols [list] | 673 set cols [list] |
| 659 for {set i 0} {$i <= $SQLITE_LIMIT_COLUMN} {incr i} { | 674 for {set i 0} {$i <= $SQLITE_LIMIT_COLUMN} {incr i} { |
| 660 lappend cols [expr {$i%3 + 1}] | 675 lappend cols [expr {$i%3 + 1}] |
| 661 } | 676 } |
| 662 set sql "SELECT c, c+1, c+2 FROM t1 UNION SELECT c-1, c-2, c-3 FROM t1" | 677 set sql "SELECT c, c+1, c+2 FROM t1 UNION SELECT c-1, c-2, c-3 FROM t1" |
| 663 append sql " ORDER BY [join $cols ,]" | 678 append sql " ORDER BY [join $cols ,]" |
| 664 catchsql $sql | 679 catchsql $sql |
| 665 } {1 {too many terms in ORDER BY clause}} | 680 } {1 {too many terms in ORDER BY clause}} |
| 666 | 681 |
| 667 | 682 |
| 668 #-------------------------------------------------------------------- | 683 #-------------------------------------------------------------------- |
| 669 # These tests - sqllimits1-9.* - test that the SQLITE_LIMIT_EXPR_DEPTH | 684 # These tests - sqllimits1-9.* - test that the SQLITE_LIMIT_EXPR_DEPTH |
| 670 # limit is enforced. The limit refers to the number of terms in | 685 # limit is enforced. The limit refers to the number of terms in |
| 671 # the expression. | 686 # the expression. |
| 672 # | 687 # |
| 688 # EVIDENCE-OF: R-12723-08526 SQLITE_LIMIT_EXPR_DEPTH The maximum depth |
| 689 # of the parse tree on any expression. |
| 690 # |
| 673 if {$SQLITE_MAX_EXPR_DEPTH==0} { | 691 if {$SQLITE_MAX_EXPR_DEPTH==0} { |
| 674 puts -nonewline stderr "WARNING: Compile with -DSQLITE_MAX_EXPR_DEPTH to run " | 692 puts -nonewline stderr "WARNING: Compile with -DSQLITE_MAX_EXPR_DEPTH to run " |
| 675 puts stderr "tests sqllimits1-9.X" | 693 puts stderr "tests sqllimits1-9.X" |
| 676 } else { | 694 } else { |
| 677 do_test sqllimits1-9.1 { | 695 do_test sqllimits1-9.1 { |
| 678 set max $::SQLITE_MAX_EXPR_DEPTH | 696 set max $::SQLITE_MAX_EXPR_DEPTH |
| 679 set expr "(1 [string repeat {AND 1 } $max])" | 697 set expr "(1 [string repeat {AND 1 } $max])" |
| 680 catchsql [subst { | 698 catchsql [subst { |
| 681 SELECT $expr | 699 SELECT $expr |
| 682 }] | 700 }] |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 722 # Test cases sqllimits1-10.* test that the SQLITE_MAX_VDBE_OP | 740 # Test cases sqllimits1-10.* test that the SQLITE_MAX_VDBE_OP |
| 723 # limit works as expected. The limit refers to the number of opcodes | 741 # limit works as expected. The limit refers to the number of opcodes |
| 724 # in a single VDBE program. | 742 # in a single VDBE program. |
| 725 # | 743 # |
| 726 # TODO | 744 # TODO |
| 727 | 745 |
| 728 #-------------------------------------------------------------------- | 746 #-------------------------------------------------------------------- |
| 729 # Test the SQLITE_LIMIT_FUNCTION_ARG limit works. Test case names | 747 # Test the SQLITE_LIMIT_FUNCTION_ARG limit works. Test case names |
| 730 # match the pattern "sqllimits1-11.*". | 748 # match the pattern "sqllimits1-11.*". |
| 731 # | 749 # |
| 750 # EVIDENCE-OF: R-59001-45278 SQLITE_LIMIT_FUNCTION_ARG The maximum |
| 751 # number of arguments on a function. |
| 752 # |
| 732 for {set max 5} {$max<=$SQLITE_MAX_FUNCTION_ARG} {incr max} { | 753 for {set max 5} {$max<=$SQLITE_MAX_FUNCTION_ARG} {incr max} { |
| 733 do_test sqllimits1-11.$max.1 { | 754 do_test sqllimits1-11.$max.1 { |
| 734 set vals [list] | 755 set vals [list] |
| 735 sqlite3_limit db SQLITE_LIMIT_FUNCTION_ARG $::max | 756 sqlite3_limit db SQLITE_LIMIT_FUNCTION_ARG $::max |
| 736 for {set i 0} {$i < $::max} {incr i} { | 757 for {set i 0} {$i < $::max} {incr i} { |
| 737 lappend vals $i | 758 lappend vals $i |
| 738 } | 759 } |
| 739 catchsql "SELECT max([join $vals ,])" | 760 catchsql "SELECT max([join $vals ,])" |
| 740 } "0 [expr {$::max - 1}]" | 761 } "0 [expr {$::max - 1}]" |
| 741 do_test sqllimits1-11.$max.2 { | 762 do_test sqllimits1-11.$max.2 { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 755 for {set i 0} {$i <= $::max} {incr i} { | 776 for {set i 0} {$i <= $::max} {incr i} { |
| 756 lappend vals $i | 777 lappend vals $i |
| 757 } | 778 } |
| 758 catchsql "SELECT myfunc([join $vals ,])" | 779 catchsql "SELECT myfunc([join $vals ,])" |
| 759 } {1 {too many arguments on function myfunc}} | 780 } {1 {too many arguments on function myfunc}} |
| 760 } | 781 } |
| 761 | 782 |
| 762 #-------------------------------------------------------------------- | 783 #-------------------------------------------------------------------- |
| 763 # Test cases sqllimits1-12.*: Test the SQLITE_MAX_ATTACHED limit. | 784 # Test cases sqllimits1-12.*: Test the SQLITE_MAX_ATTACHED limit. |
| 764 # | 785 # |
| 786 # EVIDENCE-OF: R-41778-26203 SQLITE_LIMIT_ATTACHED The maximum number of |
| 787 # attached databases. |
| 788 # |
| 765 ifcapable attach { | 789 ifcapable attach { |
| 766 do_test sqllimits1-12.1 { | 790 do_test sqllimits1-12.1 { |
| 767 set max $::SQLITE_MAX_ATTACHED | 791 set max $::SQLITE_MAX_ATTACHED |
| 768 for {set i 0} {$i < ($max)} {incr i} { | 792 for {set i 0} {$i < ($max)} {incr i} { |
| 769 forcedelete test${i}.db test${i}.db-journal | 793 forcedelete test${i}.db test${i}.db-journal |
| 770 } | 794 } |
| 771 for {set i 0} {$i < ($max)} {incr i} { | 795 for {set i 0} {$i < ($max)} {incr i} { |
| 772 execsql "ATTACH 'test${i}.db' AS aux${i}" | 796 execsql "ATTACH 'test${i}.db' AS aux${i}" |
| 773 } | 797 } |
| 774 catchsql "ATTACH 'test${i}.db' AS aux${i}" | 798 catchsql "ATTACH 'test${i}.db' AS aux${i}" |
| 775 } "1 {too many attached databases - max $::SQLITE_MAX_ATTACHED}" | 799 } "1 {too many attached databases - max $::SQLITE_MAX_ATTACHED}" |
| 776 do_test sqllimits1-12.2 { | 800 do_test sqllimits1-12.2 { |
| 777 set max $::SQLITE_MAX_ATTACHED | 801 set max $::SQLITE_MAX_ATTACHED |
| 778 for {set i 0} {$i < ($max)} {incr i} { | 802 for {set i 0} {$i < ($max)} {incr i} { |
| 779 execsql "DETACH aux${i}" | 803 execsql "DETACH aux${i}" |
| 780 } | 804 } |
| 781 } {} | 805 } {} |
| 782 } | 806 } |
| 783 | 807 |
| 784 #-------------------------------------------------------------------- | 808 #-------------------------------------------------------------------- |
| 785 # Test cases sqllimits1-13.*: Check that the SQLITE_MAX_VARIABLE_NUMBER | 809 # Test cases sqllimits1-13.*: Check that the SQLITE_MAX_VARIABLE_NUMBER |
| 786 # limit works. | 810 # limit works. |
| 787 # | 811 # |
| 812 # EVIDENCE-OF: R-42363-29104 SQLITE_LIMIT_VARIABLE_NUMBER The maximum |
| 813 # index number of any parameter in an SQL statement. |
| 814 # |
| 788 do_test sqllimits1-13.1 { | 815 do_test sqllimits1-13.1 { |
| 789 set max $::SQLITE_MAX_VARIABLE_NUMBER | 816 set max $::SQLITE_MAX_VARIABLE_NUMBER |
| 790 catchsql "SELECT ?[expr {$max+1}] FROM t1" | 817 catchsql "SELECT ?[expr {$max+1}] FROM t1" |
| 791 } "1 {variable number must be between ?1 and ?$::SQLITE_MAX_VARIABLE_NUMBER}" | 818 } "1 {variable number must be between ?1 and ?$::SQLITE_MAX_VARIABLE_NUMBER}" |
| 792 do_test sqllimits1-13.2 { | 819 do_test sqllimits1-13.2 { |
| 793 set max $::SQLITE_MAX_VARIABLE_NUMBER | 820 set max $::SQLITE_MAX_VARIABLE_NUMBER |
| 794 set vals [list] | 821 set vals [list] |
| 795 for {set i 0} {$i < ($max+3)} {incr i} { | 822 for {set i 0} {$i < ($max+3)} {incr i} { |
| 796 lappend vals ? | 823 lappend vals ? |
| 797 } | 824 } |
| 798 catchsql "SELECT [join $vals ,] FROM t1" | 825 catchsql "SELECT [join $vals ,] FROM t1" |
| 799 } "1 {too many SQL variables}" | 826 } "1 {too many SQL variables}" |
| 800 | 827 |
| 801 | 828 |
| 802 #-------------------------------------------------------------------- | 829 #-------------------------------------------------------------------- |
| 803 # Test cases sqllimits1-15.* verify that the | 830 # Test cases sqllimits1-15.* verify that the |
| 804 # SQLITE_MAX_LIKE_PATTERN_LENGTH limit is enforced. This limit only | 831 # SQLITE_MAX_LIKE_PATTERN_LENGTH limit is enforced. This limit only |
| 805 # applies to the built-in LIKE operator, supplying an external | 832 # applies to the built-in LIKE operator, supplying an external |
| 806 # implementation by overriding the like() scalar function bypasses | 833 # implementation by overriding the like() scalar function bypasses |
| 807 # this limitation. | 834 # this limitation. |
| 808 # | 835 # |
| 836 # EVIDENCE-OF: R-12940-37052 SQLITE_LIMIT_LIKE_PATTERN_LENGTH The |
| 837 # maximum length of the pattern argument to the LIKE or GLOB operators. |
| 838 # |
| 809 # These tests check that the limit is not incorrectly applied to | 839 # These tests check that the limit is not incorrectly applied to |
| 810 # the left-hand-side of the LIKE operator (the string being tested | 840 # the left-hand-side of the LIKE operator (the string being tested |
| 811 # against the pattern). | 841 # against the pattern). |
| 812 # | 842 # |
| 813 set SQLITE_LIMIT_LIKE_PATTERN 1000 | 843 set SQLITE_LIMIT_LIKE_PATTERN 1000 |
| 814 sqlite3_limit db SQLITE_LIMIT_LIKE_PATTERN_LENGTH $SQLITE_LIMIT_LIKE_PATTERN | 844 sqlite3_limit db SQLITE_LIMIT_LIKE_PATTERN_LENGTH $SQLITE_LIMIT_LIKE_PATTERN |
| 815 do_test sqllimits1-15.1 { | 845 do_test sqllimits1-15.1 { |
| 816 set max $::SQLITE_LIMIT_LIKE_PATTERN | 846 set max $::SQLITE_LIMIT_LIKE_PATTERN |
| 817 set ::pattern [string repeat "A%" [expr $max/2]] | 847 set ::pattern [string repeat "A%" [expr $max/2]] |
| 818 set ::string [string repeat "A" [expr {$max*2}]] | 848 set ::string [string repeat "A" [expr {$max*2}]] |
| (...skipping 18 matching lines...) Expand all Loading... |
| 837 set ::N [expr int(([expr pow(2,32)]/50) + 1)] | 867 set ::N [expr int(([expr pow(2,32)]/50) + 1)] |
| 838 expr (($::N*50) & 0xffffffff)<55 | 868 expr (($::N*50) & 0xffffffff)<55 |
| 839 } {1} | 869 } {1} |
| 840 do_test sqllimits1-16.2 { | 870 do_test sqllimits1-16.2 { |
| 841 set ::format "[string repeat A 60][string repeat "%J" $::N]" | 871 set ::format "[string repeat A 60][string repeat "%J" $::N]" |
| 842 catchsql { | 872 catchsql { |
| 843 SELECT strftime($::format, 1); | 873 SELECT strftime($::format, 1); |
| 844 } | 874 } |
| 845 } {1 {string or blob too big}} | 875 } {1 {string or blob too big}} |
| 846 | 876 |
| 877 do_catchsql_test sqllimits1.17.0 { |
| 878 SELECT *,*,*,*,*,*,*,* FROM ( |
| 879 SELECT *,*,*,*,*,*,*,* FROM ( |
| 880 SELECT *,*,*,*,*,*,*,* FROM ( |
| 881 SELECT *,*,*,*,*,*,*,* FROM ( |
| 882 SELECT *,*,*,*,*,*,*,* FROM ( |
| 883 SELECT 1,2,3,4,5,6,7,8,9,10 |
| 884 ) |
| 885 )))) |
| 886 } "1 {too many columns in result set}" |
| 887 |
| 847 | 888 |
| 848 foreach {key value} [array get saved] { | 889 foreach {key value} [array get saved] { |
| 849 catch {set $key $value} | 890 catch {set $key $value} |
| 850 } | 891 } |
| 851 finish_test | 892 finish_test |
| OLD | NEW |