Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: third_party/sqlite/src/test/sqllimits1.test

Issue 1610963002: Import SQLite 3.10.2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/sqlite/src/test/sqldiff1.test ('k') | third_party/sqlite/src/test/sqllog.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/sqldiff1.test ('k') | third_party/sqlite/src/test/sqllog.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698