DiceDB / dice

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

Fix LPOP to support multiple arguments #1100 #1105

Closed tren03 closed 4 weeks ago

tren03 commented 1 month ago

This pull request addresses issue #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.

This is the dicedb output dice-output

This is the output for redis over the same commands redis-output

tren03 commented 1 month ago

Thanks for the fix! It would be great to have unit and integration tests validating these changes.

Thanks :), Yep I am on it.

tren03 commented 1 month ago

this is the unit-tests unittest

this is the integration tests integrationtest

any changes to make?

tren03 commented 1 month ago

Hey, Its been a while since I heard back. I saw that there was a slight conflict with my branch, so i fixed it with a merge. Would love to get some updates on this issue.

JyotinderSingh commented 1 month ago

Hey, Its been a while since I heard back. I saw that there was a slight conflict with my branch, so i fixed it with a merge. Would love to get some updates on this issue.

whoops, didn't realise the comments were addressed. Going through this PR.