--- [EMAIL PROTECTED] wrote:
> Joe Wilson <[EMAIL PROTECTED]> wrote:
> > --- John Stanton <[EMAIL PROTECTED]> wrote:
> > > Sqlite3 will get into a tangle with certain sequences where it does not
> > > accept a semicolon as a terminator or obey a CTL c.
> >
> > To reproduce:
> >
> > 1. build sqlite3 without readline support.
> > 2. run sqlite3 in an xterm
> > 3. at the prompt, press cursor up
> > 4. hit return
> >
> > Nothing you do at this point will work except for Ctrl-\ to kill the
> > process.
> >
> > SQLite version 3.4.1
> > Enter ".help" for instructions
> > sqlite> ^[[A
> > ...> .q
> > ...> ;
> > ...> select 1;
>
> SQLite allows identifiers to be quoted using square brackets.
> Like this: CREATE TABLE [alpha]([beta],[gamma]);
>
> In the input above, SQLite sees the beginning of a quoted
> identifier in the "[A" but it never sees the terminating "]"
> so it keeps asking for more input. It things the semicolons
> you are feeding it are part of the identifier.
>
> To break out of the loop, enter "];".
>
> Works as designed....
It makes sense in hindsight. Even though [] would be an illegal first
token in any shell or SQL command, you only attempt to tokenize/parse the
line when you get to the end of statement ";". Would incremental
tokenizing/parsing be easy to implement to catch this case?
Lucky in this case I happened to be running in an xterm that echoed
the ^[[A characters. Other terminal programs I've used (such as rxvt on
cygwin) doesn't print the ^[[A to the screen at all, but instead moves
the cursor up one line. In that case it is not obvious what is going on,
or that ]; will take you out of that mode. I guess the user just has to
know a little about terminal ascii escape sequences and sqlite token syntax.
____________________________________________________________________________________Ready
for the edge of your seat?
Check out tonight's top picks on Yahoo! TV.
http://tv.yahoo.com/
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------