diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bin/psql/common.c | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 4027f77be23..72115f8ae65 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -1388,8 +1388,20 @@ command_no_begin(const char *query)  			return true;  	} +	/* DISCARD ALL isn't allowed in xacts, but other variants are allowed. */  	if (wordlen == 7 && pg_strncasecmp(query, "discard", 7) == 0) -		return true; +	{ +		query += wordlen; + +		query = skip_white_space(query); + +		wordlen = 0; +		while (isalpha((unsigned char) query[wordlen])) +			wordlen += PQmblen(&query[wordlen], pset.encoding); + +		if (wordlen == 3 && pg_strncasecmp(query, "all", 3) == 0) +			return true; +	}  	return false;  }  | 
