Skip to content

Commit

Permalink
Merge branch 'main' into node/integ_cyip10_bitpos
Browse files Browse the repository at this point in the history
Signed-off-by: James Xin <james.xin@improving.com>
  • Loading branch information
jamesx-improving committed Sep 23, 2024
2 parents 4daa3f0 + 4f7c72c commit 80c35ab
Show file tree
Hide file tree
Showing 19 changed files with 2,060 additions and 3,560 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
* Java, Node, Python: Add NOSCORES option to ZSCAN & NOVALUES option to HSCAN (Valkey-8) ([#2174](https://github.com/valkey-io/valkey-glide/pull/2174))
* Node: Add SCAN command ([#2257](https://github.com/valkey-io/valkey-glide/pull/2257))
* Java: Add Script commands ([#2261](https://github.com/valkey-io/valkey-glide/pull/2261))
* Python: Replace google-api-python-client with protobuf ([#2304](https://github.com/valkey-io/valkey-glide/pull/2304))

#### Breaking Changes
* Java: Update INFO command ([#2274](https://github.com/valkey-io/valkey-glide/pull/2274))
Expand Down
16 changes: 8 additions & 8 deletions glide-core/THIRD_PARTY_LICENSES_RUST
Original file line number Diff line number Diff line change
Expand Up @@ -3045,7 +3045,7 @@ For more information, please refer to <http://unlicense.org/>

----

Package: bytes:1.7.1
Package: bytes:1.7.2

The following copyrights and licenses were found in the source code of this package:

Expand Down Expand Up @@ -10269,7 +10269,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

----

Package: iana-time-zone:0.1.60
Package: iana-time-zone:0.1.61

The following copyrights and licenses were found in the source code of this package:

Expand Down Expand Up @@ -18826,7 +18826,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----

Package: redox_syscall:0.5.3
Package: redox_syscall:0.5.4

The following copyrights and licenses were found in the source code of this package:

Expand Down Expand Up @@ -21027,7 +21027,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

----

Package: security-framework-sys:2.11.1
Package: security-framework-sys:2.12.0

The following copyrights and licenses were found in the source code of this package:

Expand Down Expand Up @@ -22817,7 +22817,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

----

Package: thiserror:1.0.63
Package: thiserror:1.0.64

The following copyrights and licenses were found in the source code of this package:

Expand Down Expand Up @@ -23046,7 +23046,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

----

Package: thiserror-impl:1.0.63
Package: thiserror-impl:1.0.64

The following copyrights and licenses were found in the source code of this package:

Expand Down Expand Up @@ -25397,7 +25397,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

----

Package: unicode-ident:1.0.12
Package: unicode-ident:1.0.13

The following copyrights and licenses were found in the source code of this package:

Expand Down Expand Up @@ -25687,7 +25687,7 @@ authorization of the copyright holder.

----

Package: unicode-normalization:0.1.23
Package: unicode-normalization:0.1.24

The following copyrights and licenses were found in the source code of this package:

Expand Down
1 change: 1 addition & 0 deletions go/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ lib.h
# benchmarking results
benchmarks/results/**
benchmarks/gobenchmarks.json
benchmarks/benchmarks
174 changes: 144 additions & 30 deletions go/api/base_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
// BaseClient defines an interface for methods common to both [GlideClient] and [GlideClusterClient].
type BaseClient interface {
StringCommands
HashCommands

// Close terminates the client by closing all associated resources.
Close()
Expand Down Expand Up @@ -102,7 +103,13 @@ func (client *baseClient) executeCommand(requestType C.RequestType, args []strin
return nil, &ClosingError{"ExecuteCommand failed. The client is closed."}
}

cArgs, argLengths := toCStrings(args)
var cArgsPtr *C.uintptr_t = nil
var argLengthsPtr *C.ulong = nil
if len(args) > 0 {
cArgs, argLengths := toCStrings(args)
cArgsPtr = &cArgs[0]
argLengthsPtr = &argLengths[0]
}

resultChannel := make(chan payload)
resultChannelPtr := uintptr(unsafe.Pointer(&resultChannel))
Expand All @@ -112,8 +119,8 @@ func (client *baseClient) executeCommand(requestType C.RequestType, args []strin
C.uintptr_t(resultChannelPtr),
uint32(requestType),
C.size_t(len(args)),
&cArgs[0],
&argLengths[0],
cArgsPtr,
argLengthsPtr,
)
payload := <-resultChannel
if payload.error != nil {
Expand All @@ -140,71 +147,71 @@ func (client *baseClient) Set(key string, value string) (string, error) {
if err != nil {
return "", err
}
return handleStringResponse(result), nil

return handleStringResponse(result)
}

func (client *baseClient) SetWithOptions(key string, value string, options *SetOptions) (string, error) {
result, err := client.executeCommand(C.Set, append([]string{key, value}, options.toArgs()...))
if err != nil {
return "", err
}
return handleStringOrNullResponse(result), nil

return handleStringOrNullResponse(result)
}

func (client *baseClient) Get(key string) (string, error) {
result, err := client.executeCommand(C.Get, []string{key})
if err != nil {
return "", err
}
return handleStringOrNullResponse(result), nil

return handleStringOrNullResponse(result)
}

func (client *baseClient) MSet(keyValueMap map[string]string) (string, error) {
flat := []string{}
for key, value := range keyValueMap {
flat = append(flat, key, value)
}
result, err := client.executeCommand(C.MSet, flat)
result, err := client.executeCommand(C.MSet, utils.MapToString(keyValueMap))
if err != nil {
return "", err
}
return handleStringResponse(result), nil

return handleStringResponse(result)
}

func (client *baseClient) MSetNX(keyValueMap map[string]string) (bool, error) {
flat := []string{}
for key, value := range keyValueMap {
flat = append(flat, key, value)
}
result, err := client.executeCommand(C.MSetNX, flat)
result, err := client.executeCommand(C.MSetNX, utils.MapToString(keyValueMap))
if err != nil {
return false, err
}
return handleBooleanResponse(result), nil

return handleBooleanResponse(result)
}

func (client *baseClient) MGet(keys []string) ([]string, error) {
result, err := client.executeCommand(C.MGet, keys)
if err != nil {
return nil, err
}
return handleStringArrayResponse(result), nil

return handleStringArrayResponse(result)
}

func (client *baseClient) Incr(key string) (int64, error) {
result, err := client.executeCommand(C.Incr, []string{key})
if err != nil {
return 0, err
}
return handleLongResponse(result), nil

return handleLongResponse(result)
}

func (client *baseClient) IncrBy(key string, amount int64) (int64, error) {
result, err := client.executeCommand(C.IncrBy, []string{key, utils.IntToString(amount)})
if err != nil {
return 0, err
}
return handleLongResponse(result), nil

return handleLongResponse(result)
}

func (client *baseClient) IncrByFloat(key string, amount float64) (float64, error) {
Expand All @@ -215,63 +222,71 @@ func (client *baseClient) IncrByFloat(key string, amount float64) (float64, erro
if err != nil {
return 0, err
}
return handleDoubleResponse(result), nil

return handleDoubleResponse(result)
}

func (client *baseClient) Decr(key string) (int64, error) {
result, err := client.executeCommand(C.Decr, []string{key})
if err != nil {
return 0, err
}
return handleLongResponse(result), nil

return handleLongResponse(result)
}

func (client *baseClient) DecrBy(key string, amount int64) (int64, error) {
result, err := client.executeCommand(C.DecrBy, []string{key, utils.IntToString(amount)})
if err != nil {
return 0, err
}
return handleLongResponse(result), nil

return handleLongResponse(result)
}

func (client *baseClient) Strlen(key string) (int64, error) {
result, err := client.executeCommand(C.Strlen, []string{key})
if err != nil {
return 0, err
}
return handleLongResponse(result), nil

return handleLongResponse(result)
}

func (client *baseClient) SetRange(key string, offset int, value string) (int64, error) {
result, err := client.executeCommand(C.SetRange, []string{key, strconv.Itoa(offset), value})
if err != nil {
return 0, err
}
return handleLongResponse(result), nil

return handleLongResponse(result)
}

func (client *baseClient) GetRange(key string, start int, end int) (string, error) {
result, err := client.executeCommand(C.GetRange, []string{key, strconv.Itoa(start), strconv.Itoa(end)})
if err != nil {
return "", err
}
return handleStringResponse(result), nil

return handleStringResponse(result)
}

func (client *baseClient) Append(key string, value string) (int64, error) {
result, err := client.executeCommand(C.Append, []string{key, value})
if err != nil {
return 0, err
}
return handleLongResponse(result), nil

return handleLongResponse(result)
}

func (client *baseClient) LCS(key1 string, key2 string) (string, error) {
result, err := client.executeCommand(C.LCS, []string{key1, key2})
if err != nil {
return "", err
}
return handleStringResponse(result), nil

return handleStringResponse(result)
}

func (client *baseClient) GetDel(key string) (string, error) {
Expand All @@ -284,5 +299,104 @@ func (client *baseClient) GetDel(key string) (string, error) {
return "", err
}

return handleStringOrNullResponse(result), nil
return handleStringOrNullResponse(result)
}

func (client *baseClient) HGet(key string, field string) (string, error) {
result, err := client.executeCommand(C.HGet, []string{key, field})
if err != nil {
return "", err
}

return handleStringOrNullResponse(result)
}

func (client *baseClient) HGetAll(key string) (map[string]string, error) {
result, err := client.executeCommand(C.HGetAll, []string{key})
if err != nil {
return nil, err
}

return handleStringToStringMapResponse(result)
}

func (client *baseClient) HMGet(key string, fields []string) ([]string, error) {
result, err := client.executeCommand(C.HMGet, append([]string{key}, fields...))
if err != nil {
return nil, err
}

return handleStringArrayResponse(result)
}

func (client *baseClient) HSet(key string, values map[string]string) (int64, error) {
result, err := client.executeCommand(C.HSet, utils.ConvertMapToKeyValueStringArray(key, values))
if err != nil {
return 0, err
}

return handleLongResponse(result)
}

func (client *baseClient) HSetNX(key string, field string, value string) (bool, error) {
result, err := client.executeCommand(C.HSetNX, []string{key, field, value})
if err != nil {
return false, err
}

return handleBooleanResponse(result)
}

func (client *baseClient) HDel(key string, fields []string) (int64, error) {
result, err := client.executeCommand(C.HDel, append([]string{key}, fields...))
if err != nil {
return 0, err
}

return handleLongResponse(result)
}

func (client *baseClient) HLen(key string) (int64, error) {
result, err := client.executeCommand(C.HLen, []string{key})
if err != nil {
return 0, err
}

return handleLongResponse(result)
}

func (client *baseClient) HVals(key string) ([]string, error) {
result, err := client.executeCommand(C.HVals, []string{key})
if err != nil {
return nil, err
}

return handleStringArrayResponse(result)
}

func (client *baseClient) HExists(key string, field string) (bool, error) {
result, err := client.executeCommand(C.HExists, []string{key, field})
if err != nil {
return false, err
}

return handleBooleanResponse(result)
}

func (client *baseClient) HKeys(key string) ([]string, error) {
result, err := client.executeCommand(C.HKeys, []string{key})
if err != nil {
return nil, err
}

return handleStringArrayResponse(result)
}

func (client *baseClient) HStrLen(key string, field string) (int64, error) {
result, err := client.executeCommand(C.HStrlen, []string{key, field})
if err != nil {
return 0, err
}

return handleLongResponse(result)
}
Loading

0 comments on commit 80c35ab

Please sign in to comment.