Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
f74c32ca
Unverified
Commit
f74c32ca
authored
Dec 13, 2020
by
Wen Hui
Committed by
GitHub
Dec 13, 2020
Browse files
redis-cli prompt: show transaction state, and fix db number on aborted EXEC (#6728)
parent
ab60dcf5
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/redis-cli.c
View file @
f74c32ca
...
...
@@ -252,6 +252,8 @@ static struct config {
clusterManagerCommand
cluster_manager_command
;
int
no_auth_warning
;
int
resp3
;
int
in_multi
;
int
pre_multi_dbnum
;
}
config
;
/* User preferences. */
...
...
@@ -307,6 +309,10 @@ static void cliRefreshPrompt(void) {
if
(
config
.
dbnum
!=
0
)
prompt
=
sdscatfmt
(
prompt
,
"[%i]"
,
config
.
dbnum
);
/* Add TX if in transaction state*/
if
(
config
.
in_multi
)
prompt
=
sdscatlen
(
prompt
,
"(TX)"
,
4
);
/* Copy the prompt in the static buffer. */
prompt
=
sdscatlen
(
prompt
,
"> "
,
2
);
snprintf
(
config
.
prompt
,
sizeof
(
config
.
prompt
),
"%s"
,
prompt
);
...
...
@@ -1396,13 +1402,32 @@ static int cliSendCommand(int argc, char **argv, long repeat) {
return
REDIS_ERR
;
}
else
{
/* Store database number when SELECT was successfully executed. */
if
(
!
strcasecmp
(
command
,
"select"
)
&&
argc
==
2
&&
config
.
last_cmd_type
!=
REDIS_REPLY_ERROR
)
{
if
(
!
strcasecmp
(
command
,
"select"
)
&&
argc
==
2
&&
config
.
last_cmd_type
!=
REDIS_REPLY_ERROR
)
{
config
.
dbnum
=
atoi
(
argv
[
1
]);
cliRefreshPrompt
();
}
else
if
(
!
strcasecmp
(
command
,
"auth"
)
&&
(
argc
==
2
||
argc
==
3
))
{
}
else
if
(
!
strcasecmp
(
command
,
"auth"
)
&&
(
argc
==
2
||
argc
==
3
))
{
cliSelect
();
}
}
else
if
(
!
strcasecmp
(
command
,
"multi"
)
&&
argc
==
1
&&
config
.
last_cmd_type
!=
REDIS_REPLY_ERROR
)
{
config
.
in_multi
=
1
;
config
.
pre_multi_dbnum
=
config
.
dbnum
;
cliRefreshPrompt
();
}
else
if
(
!
strcasecmp
(
command
,
"exec"
)
&&
argc
==
1
&&
config
.
in_multi
)
{
config
.
in_multi
=
0
;
if
(
config
.
last_cmd_type
==
REDIS_REPLY_ERROR
)
{
config
.
dbnum
=
config
.
pre_multi_dbnum
;
}
cliRefreshPrompt
();
}
else
if
(
!
strcasecmp
(
command
,
"discard"
)
&&
argc
==
1
&&
config
.
last_cmd_type
!=
REDIS_REPLY_ERROR
)
{
config
.
in_multi
=
0
;
config
.
dbnum
=
config
.
pre_multi_dbnum
;
cliRefreshPrompt
();
}
}
if
(
config
.
cluster_reissue_command
){
/* If we need to reissue the command, break to prevent a
...
...
@@ -8139,6 +8164,7 @@ int main(int argc, char **argv) {
config
.
verbose
=
0
;
config
.
set_errcode
=
0
;
config
.
no_auth_warning
=
0
;
config
.
in_multi
=
0
;
config
.
cluster_manager_command
.
name
=
NULL
;
config
.
cluster_manager_command
.
argc
=
0
;
config
.
cluster_manager_command
.
argv
=
NULL
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment