Details
-
Bug
-
Resolution: Duplicate
-
Major
-
7.1.0
-
Untriaged
-
1
-
Unknown
Description
This might be a DUP of MB-49824 but I am not so sure.
I had opened MB-49766 but was told to try the below mechanism until MB-49766 is fixed.
This still doesn't work. Here is a very detailed repro. I have taken only the first 5 lines of the actual doDelivery() function from tpcc.
This is with Enterprise Edition 7.1.0 build 1828
1.Create a bucket test |
2.create scope test.scope1 |
3.create collection test.scope1.neworder |
4.insert into test.scope1.neworder values (uuid(), |
{ "NO_D_ID": 1, "NO_O_ID": 2538, "NO_W_ID": 1 } |
);
|
5.insert into test.scope1.neworder values (uuid(), |
{ "NO_D_ID": 1, "NO_O_ID": 2539, "NO_W_ID": 1 } |
);
|
6.CREATE INDEX `NO_D_ID_W_ID` ON `test`.`scope1`.`neworder`(`NO_O_ID`,`NO_D_ID`,`NO_W_ID`); |
7.SELECT NO_O_ID FROM test.scope1.neworder WHERE NO_D_ID = 1 AND NO_W_ID = 1 AND NO_O_ID > -1 LIMIT 1; |
This should return
[
{ "NO_O_ID": 2538 }]
All works so far.
8. Now create a JS function for the above select stmt:
function doDelivery(w_id){
|
var d_id = 1; |
var query1=PREPARE DELIVERY_getNewOrder_k3 as SELECT NO_O_ID FROM default:default.tpcc.NEW_ORDER WHERE NO_D_ID = $1 AND NO_W_ID = $2 AND NO_O_ID > -1 LIMIT 1; |
var params = [d_id,w_id];
|
var query= N1QL('EXECUTE DELIVERY_getNewOrder_k3',params); |
var newOrder = [];
|
for (const row of query) |
{ newOrder.push(row); }
|
|
var no_o_id = newOrder;
|
|
return no_o_id; |
|
}
|
9.
curl -k -X POST http://localhost:8093/evaluator/v1/libraries/n1qltpcc3 -u Administrator:password --data-binary @shortdeliverywithN1QL1.js |
10.In CBQ
CREATE OR REPLACE FUNCTION doDelivery (w_id) LANGUAGE JAVASCRIPT AS "doDelivery" AT "n1qltpcc3" ; |
|
11. |
|
cbq> execute function doDelivery(1); |
|
{
|
|
"requestID": "4dbef190-cbc4-4099-ad5f-4c192f04eac4", |
|
"results": [ |
|
[]
|
|
],
|
|
"status": "success", |
|
}
|
instead of 2538
If changed to:
function doDelivery(w_id){
|
|
var d_id = 1; |
|
var query1=PREPARE DELIVERY_getNewOrder_k3 as SELECT NO_O_ID FROM default:default.tpcc.NEW_ORDER WHERE NO_D_ID = 1 AND NO_W_ID = 1 AND NO_O_ID > -1 LIMIT 1; |
|
var query= N1QL('EXECUTE DELIVERY_getNewOrder_k3'); |
|
var newOrder = [];
|
|
for (const row of query) { newOrder.push(row); } |
var no_o_id = newOrder;
|
return no_o_id; |
}
|
get it all correctly.
cbq> execute function doDelivery(1); |
{
|
"results": [ |
[
|
{
|
"NO_O_ID": 2538 |
}
|
]
|
],
|
"status": "success", |
"}
|
This is blocking py-tpcc scripts,
o/p of this query is being used as input to the next query and so on.
I also tried to use:
PREPARE DELIVERY_getNewOrder_k3 as SELECT NO_O_ID FROM default:default.tpcc.NEW_ORDER WHERE NO_D_ID = $2 AND NO_W_ID = $3 AND NO_O_ID > -1 LIMIT 1; |
as was suggested in the workaround of MB-49824, but no results even then.