DiceDB / dice

DiceDB is a redis-compliant, reactive, scalable, highly-available, unified cache optimized for modern hardware.
https://dicedb.io/
Other
6.83k stars 1.08k forks source link

#1100: Fix LPOP to support multiple arguments #1231

Closed tren03 closed 1 week ago

tren03 commented 2 weeks ago

This pull request addresses issue https://github.com/DiceDB/dice/issues/1100, where the LPOP command needed to support an additional argument to specify the number of elements to pop from the left side of the list.

Changes: Modified the LPOP command to accept either 1 or 2 arguments: LPOP key: Pops a single element from the list (default behavior). LPOP key count: Pops up to count elements from the list.

Validation: If count is 0, an empty response is returned.

If count is negative, an "out of range" error is returned. If count exceeds the number of available elements, it pops as many elements as available without error. Invalid count (non-integer values) returns an appropriate error. Popping from a non-existent or empty list returns nil.

Behavior: Returns a single element if one element is popped. Returns a list of elements if multiple elements are popped.

Added the unit test and integration test, added integration tests for http too. Currently working on adding the websockets tests

JyotinderSingh commented 2 weeks ago

There are a few conflicts, please rebase on master.

tren03 commented 2 weeks ago

Yep done

tren03 commented 2 weeks ago

I have implemented the changes. Any other modifications?

JyotinderSingh commented 1 week ago

There is a segfault in one of the tests, could you please take a look?

JyotinderSingh commented 1 week ago

Looks like the test failure is unrelated to this PR. Merging this for now.