Move timeout decrement to the end so we don't assert if we succeed in
the last second (looks like this was the case in the recent regression
test failure on CI)
Clarify the comment of await_synced
Signed-off-by: ashotland <ari@dragonflydb.io>
* fix: ZINTERSTORE bug
When a shard only contains the dest key, it returned an empty map which causes the resulting intersection to be empty
* chore(vscode): Add gdb launch setting
* feat: Implement ZINTERCARD
Initial implementation without LIMIT
* feat: Implement limit for ZINTERCARD
* feat: Handle sets in ZINTER* commands
1. Load flow reorganized - most of the logic is now in InferLoadFile function.
S3 read is not yet supported.
2. Write path is implemented. Specifically, you can use undocumented (by design) option to save like:
`SAVE rdb s3://bucket/path/file`.
3. When using `--dir=s3://bucket/path/` it also saves into s3 on shutdown.
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
1. Incorporate StreamAppendItem into c++ codebase and stop using t_stream implementation.
2. Change its signature to accept CmdArgList instead of array of robj*.
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
Redis supports a MKSTREAM option to dynamically create
a stream for "xgroup create" command if the stream for
the given key doesn't exist. Dragonfly, though instructs
users to use MKSTREAM if a key doesn't exist, doesn't
have the option.
Support MKSTREAM option for "xgroup create" command to
dynamically create a stream for given key, if not already
created.
Signed-off-by: Abhradeep Chakraborty <chakrabortyabhradeep79@gmail.com>
Along the way, performs small cleanups in command handling code.
XGROUP HELP is special because it falls out of Dragonfly command taxonomy design,
where a command name determines where its key is located. All other XGROUP subcommands
expect to see XGROUP <subcmd> <key> and this one obviously does not need any key.
I fix it by working around the issue and introduce a dedicated dummy command for this combination.
Fixes#854.
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
* feat(server): Add support for PFADD and PFCOUNT
This version does not create sparse-encoded HLLs, however it is fully compatible with such ones created by Redis as it converts them to the dense encoding.
Note that PFMERGE is not yet implemented.
* Set small string optimization to be 2^13 instead of 2^15.
This will allow dense-encoded HLL to *not* fit within the small string,
which will make it contiguous in memory, thus GetSlice() will not
allocate.
---------
Signed-off-by: chakaz <chakaz@chakaz>
Co-authored-by: chakaz <chakaz@chakaz>
feat: ignore MULTI/EXEC if the transaction consists of EVAL commands.
Together with `default_lua_config` solves #781.
Signed-off-by: Roman Gershman <roman@dragonflydb.io>