1*c5c4113dSnw141292 2*c5c4113dSnw141292#pragma ident "%Z%%M% %I% %E% SMI" 3*c5c4113dSnw141292 4*c5c4113dSnw141292# 2001 September 15 5*c5c4113dSnw141292# 6*c5c4113dSnw141292# The author disclaims copyright to this source code. In place of 7*c5c4113dSnw141292# a legal notice, here is a blessing: 8*c5c4113dSnw141292# 9*c5c4113dSnw141292# May you do good and not evil. 10*c5c4113dSnw141292# May you find forgiveness for yourself and forgive others. 11*c5c4113dSnw141292# May you share freely, never taking more than you give. 12*c5c4113dSnw141292# 13*c5c4113dSnw141292#*********************************************************************** 14*c5c4113dSnw141292# This file implements regression tests for SQLite library. The 15*c5c4113dSnw141292# focus of this file is the ability to specify table and column names 16*c5c4113dSnw141292# as quoted strings. 17*c5c4113dSnw141292# 18*c5c4113dSnw141292# $Id: quote.test,v 1.3 2002/05/21 13:43:04 drh Exp $ 19*c5c4113dSnw141292 20*c5c4113dSnw141292set testdir [file dirname $argv0] 21*c5c4113dSnw141292source $testdir/tester.tcl 22*c5c4113dSnw141292 23*c5c4113dSnw141292# Create a table with a strange name and with strange column names. 24*c5c4113dSnw141292# 25*c5c4113dSnw141292do_test quote-1.0 { 26*c5c4113dSnw141292 set r [catch { 27*c5c4113dSnw141292 execsql {CREATE TABLE '@abc' ( '#xyz' int, '!pqr' text );} 28*c5c4113dSnw141292 } msg] 29*c5c4113dSnw141292 lappend r $msg 30*c5c4113dSnw141292} {0 {}} 31*c5c4113dSnw141292 32*c5c4113dSnw141292# Insert, update and query the table. 33*c5c4113dSnw141292# 34*c5c4113dSnw141292do_test quote-1.1 { 35*c5c4113dSnw141292 set r [catch { 36*c5c4113dSnw141292 execsql {INSERT INTO '@abc' VALUES(5,'hello')} 37*c5c4113dSnw141292 } msg] 38*c5c4113dSnw141292 lappend r $msg 39*c5c4113dSnw141292} {0 {}} 40*c5c4113dSnw141292do_test quote-1.2 { 41*c5c4113dSnw141292 set r [catch { 42*c5c4113dSnw141292 execsql {SELECT * FROM '@abc'} 43*c5c4113dSnw141292 } msg ] 44*c5c4113dSnw141292 lappend r $msg 45*c5c4113dSnw141292} {0 {5 hello}} 46*c5c4113dSnw141292do_test quote-1.3 { 47*c5c4113dSnw141292 set r [catch { 48*c5c4113dSnw141292 execsql {SELECT '@abc'.'!pqr', '@abc'.'#xyz'+5 FROM '@abc'} 49*c5c4113dSnw141292 } msg ] 50*c5c4113dSnw141292 lappend r $msg 51*c5c4113dSnw141292} {0 {hello 10}} 52*c5c4113dSnw141292do_test quote-1.3.1 { 53*c5c4113dSnw141292 catchsql { 54*c5c4113dSnw141292 SELECT '!pqr', '#xyz'+5 FROM '@abc' 55*c5c4113dSnw141292 } 56*c5c4113dSnw141292} {0 {!pqr 5}} 57*c5c4113dSnw141292do_test quote-1.3.2 { 58*c5c4113dSnw141292 catchsql { 59*c5c4113dSnw141292 SELECT "!pqr", "#xyz"+5 FROM '@abc' 60*c5c4113dSnw141292 } 61*c5c4113dSnw141292} {0 {hello 10}} 62*c5c4113dSnw141292do_test quote-1.3 { 63*c5c4113dSnw141292 set r [catch { 64*c5c4113dSnw141292 execsql {SELECT '@abc'.'!pqr', '@abc'.'#xyz'+5 FROM '@abc'} 65*c5c4113dSnw141292 } msg ] 66*c5c4113dSnw141292 lappend r $msg 67*c5c4113dSnw141292} {0 {hello 10}} 68*c5c4113dSnw141292do_test quote-1.4 { 69*c5c4113dSnw141292 set r [catch { 70*c5c4113dSnw141292 execsql {UPDATE '@abc' SET '#xyz'=11} 71*c5c4113dSnw141292 } msg ] 72*c5c4113dSnw141292 lappend r $msg 73*c5c4113dSnw141292} {0 {}} 74*c5c4113dSnw141292do_test quote-1.5 { 75*c5c4113dSnw141292 set r [catch { 76*c5c4113dSnw141292 execsql {SELECT '@abc'.'!pqr', '@abc'.'#xyz'+5 FROM '@abc'} 77*c5c4113dSnw141292 } msg ] 78*c5c4113dSnw141292 lappend r $msg 79*c5c4113dSnw141292} {0 {hello 16}} 80*c5c4113dSnw141292 81*c5c4113dSnw141292# Drop the table with the strange name. 82*c5c4113dSnw141292# 83*c5c4113dSnw141292do_test quote-1.6 { 84*c5c4113dSnw141292 set r [catch { 85*c5c4113dSnw141292 execsql {DROP TABLE '@abc'} 86*c5c4113dSnw141292 } msg ] 87*c5c4113dSnw141292 lappend r $msg 88*c5c4113dSnw141292} {0 {}} 89*c5c4113dSnw141292 90*c5c4113dSnw141292 91*c5c4113dSnw141292finish_test 92