Cli command line utility can not get a "specific bin" for a record


#1

Problem : It appears that the knob to get just a particular bin (cli … -b …) is broken.

Here is an example to reproduce it. STEP 1 : Get the record with key 9

$cli -h 127.0.0.1 -p 5000 -n somenamespace -o get -s some_profile -k 8 {‘user_privacy’: ‘{block_public_search:false,…}’, ‘player’: ‘{parent_fname:somename,…}’, ‘user’: ‘{user_login:somelogin}’}

STEP 2 : Get only the bin “user_login”

$cli -h 127.0.0.1 -p 5000 -n somenamespace -o get -s some_profile -b user_login -k 8 {‘user_privacy’: ‘{block_public_search:false,…}’, ‘player’: ‘{parent_fname:somename,…}’, ‘user’: ‘{user_login:somelogin}’}

Here in Step 2 it returns all the bins in the record with key = 8, it should have returned only “user_login” bin like shown below

$cli -h 127.0.0.1 -p 5000 -n somenamespace -o get -s some_profile -b user_login -k 8 user_login:somelogin


#2

The cli command will not honor bins. For this you will need to use aql.

EXAMPLE:

aql> SELECT * FROM test.some_profile WHERE PK = '8’ ±----------------±-------+ | user_login | bin3 | ±----------------±-------+ | “petterolsson4” | “val3” | ±----------------±-------+ 1 row in set (0.000 secs)

aql> SELECT user_login FROM test.some_profile ±----------------+ | user_login | ±----------------+ | “petterolsson4” | ±----------------+ 1 row in set (0.068 secs)


#3

The cli command will not honor bins. <=That is not correct.

I know very well regarding aql, my point is that cli as per its definition/documentation should support access to a particular bin (details above) which seems to be broken in AeroSpike Community Edition build 3.3.12

Here is the out put of help ->

$ cli usage: cli [-h HOST] [-p PORT] [-U USER] [-P [PASSWORD]] [-t TARGET] [-o {get,set,delete}] [-n NAMESPACE] [-s SET] [-k KEY] [-d DIGEST] [-b BIN] [-v VALUE] [-e RECORDTTL] [-i] [–verbose] [-u]

optional arguments: -h HOST, --host HOST server host name (default: 127.0.0.1) -p PORT, --port PORT server port (default: 3000) -U USER, --user USER user name -P [PASSWORD], --password [PASSWORD] password -t TARGET, --target TARGET a cluster node to query, host:port (default: 127.0.0.1:3000) -o {get,set,delete}, --operand {get,set,delete} database operator (default: get) -n NAMESPACE, --namespace NAMESPACE the namespace to operate on (default: test) -s SET, --set SET the set the key belongs in -k KEY, --key KEY record key -d DIGEST, --digest DIGEST hash digest to use instead of key

-b BIN, --bin BIN bin name -v VALUE, --value VALUE bin value -e RECORDTTL, --recordttl RECORDTTL record TTL -i, --integer-key True if key is a integer –verbose make the request verbose -u, --usage show program usage


#4

The cli “-b” option is currently only useful for adding a bin name to a record with a “set” command using cli tool. Currently this option is not supported for “get” commands. I’m opening a bug internally to either have this error out when using a “get” command on cli, or add functionality to support specific bin gets command in cli.

-Lucien


#5

Thanks for the response Lucien. As I evaluate AeroSpike for our use I will make sure AeroSpike’s DevOps know these issues so we can improve the quality of AeroSpike’s code.

Thanks, Deepak Jain