But the shell is not told when a command is complete. When accepting input that is not a meta-command's single line, it relies on the lexer and parser to help spot the end of the arbitrary SQL construct. Distinguishing between a semicolon that happens to be embedded in one of the quoted token types and a semicolon that is properly at the end of a line **outside of** any (other) token would require replicating the lexical analyzer's logic. This is not really the shell's job. True, it *could* be done, but separation of concerns and modularity considerations weigh against *doing* it.