platform icon indicating copy to clipboard operation
platform copied to clipboard

Search for Data Contract Documents partially not working

Open owl352 opened this issue 1 year ago • 9 comments

When trying to retrieve documents for contract date withdrawals with where, I get an empty array, also sort works only in asc order, desc not working

Expected Behavior

If I specify ['transactionIndex', '==', 2] or ['transactionIndex', '>=', 2] or ['transactionIndex', '>', 2], then I should get an array with documents whose index matches the condition in the response

Current Behavior

At any specified value for transactionIndex, I get an empty array in response. Also, if you specify another condition for status as a range, the search will also return an empty array. However, if at least one condition requires a strict comparison, everything will work

Possible Solution

Steps to Reproduce (for bugs)

  1. use this json for data contract object
  2. Here you get empty response
const query = {
  where: [
    ['transactionIndex', 'in', [0,1,2,3,4,5]],
    ['status', '>', 0]
  ],
  orderBy: [
    ['status', order],
    ['transactionIndex', order],
  ]
}

const { documents } = await this.dapi.platform.getDocuments(Identifier.from(dataContractObject.id), type, query) 
  1. Here you get some documents
const query = {
  where: [
    ['transactionIndex', 'in', [0,1,2,3,4,5]],
    ['status', '=', 3]
  ],
  orderBy: [
    ['status', order],
    ['transactionIndex', order],
  ]
}

const { documents } = await this.dapi.platform.getDocuments(Identifier.from(dataContractObject.id), type, query) 

Context

Your Environment

  • 'dashpay/drive:1.7'
  • 'dashpay/dapi:1.7.1'
  • node: v20.16.0
  • dapi-client: from fork which made already after the latest updates of the getDocuments method

owl352 avatar Dec 29 '24 12:12 owl352

@owl352 Can you please provide a sample grpcurl queries for each request?

pshenmic avatar Feb 27 '25 13:02 pshenmic

@pshenmic

command:

 grpcurl -insecure -proto ./platform.proto -d @ 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments < quer.json

ORDER BY transactionIndex ASC

{
  "v0": {
    "data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=",
    "document_type":"withdrawal",
    "limit": 5,
    "orderBy": "gYJwdHJhbnNhY3Rpb25JbmRleGNhc2M="
  }
}
{
  "v0": {
    "documents": {
      "documents": [
        "AHhe7sKtgtdcpajfOGae2s4Pz2NsAXjVnV8UOr/vxelNUtQ195Q84w5+oJMTC0v4Xuqkqt/yjbJK0pyueiVF+b0EAAMAAAGSbu8X2gAAAZJvdJP7AQAAAAAAAAAAAQAAAAAAEQ6JAAAAC6Q7dAAAAAAAAAAAAQAAAAAAAAAAGXapFKBTWF4yIYd8BhlGjPer47jGn9cJiKwAAAAAAAAAAw==",
        "AG/KzuW7iPuYc1q5YGBhPIu0nnU8hv7CKO8N3TM7Jf7HWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGScmkcVwAAAZJ12XqmAQAAAAAAAAABAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AMXvBAbPs4XHFB7f4dxqLYiu+/VGE6wqM4MsLeVd7sUtWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGScm9ExQAAAZJ12XqmAQAAAAAAAAACAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AG6DMT1WjsfepIHQxn2l2EK6hUDBCySn8o46bEafO97lWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdEn98wAAAZJ12XqmAQAAAAAAAAADAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw==",
        "AERUOVp8Qb3e3bXkaDCWaL5qZc2CuiNf2bYdECD/L3IXWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdEsn3wAAAZJ12XqmAQAAAAAAAAAEAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw=="
      ]
    },
    "metadata": {
      "height": "107562",
      "coreChainLockedHeight": 1204011,
      "epoch": 5364,
      "timeMs": "1740666789549",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

ORDER BY transactionIndex DESC

{
  "v0": {
    "data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=",
    "document_type":"withdrawal",
    "limit": 5,
    "orderBy": "gYJwdHJhbnNhY3Rpb25JbmRleGRkZXNj"
  }
}
{
  "v0": {
    "documents": {
      "documents": [
        "AHhe7sKtgtdcpajfOGae2s4Pz2NsAXjVnV8UOr/vxelNUtQ195Q84w5+oJMTC0v4Xuqkqt/yjbJK0pyueiVF+b0EAAMAAAGSbu8X2gAAAZJvdJP7AQAAAAAAAAAAAQAAAAAAEQ6JAAAAC6Q7dAAAAAAAAAAAAQAAAAAAAAAAGXapFKBTWF4yIYd8BhlGjPer47jGn9cJiKwAAAAAAAAAAw==",
        "AG/KzuW7iPuYc1q5YGBhPIu0nnU8hv7CKO8N3TM7Jf7HWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGScmkcVwAAAZJ12XqmAQAAAAAAAAABAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AMXvBAbPs4XHFB7f4dxqLYiu+/VGE6wqM4MsLeVd7sUtWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGScm9ExQAAAZJ12XqmAQAAAAAAAAACAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AG6DMT1WjsfepIHQxn2l2EK6hUDBCySn8o46bEafO97lWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdEn98wAAAZJ12XqmAQAAAAAAAAADAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw==",
        "AERUOVp8Qb3e3bXkaDCWaL5qZc2CuiNf2bYdECD/L3IXWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdEsn3wAAAZJ12XqmAQAAAAAAAAAEAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw=="
      ]
    },
    "metadata": {
      "height": "107563",
      "coreChainLockedHeight": 1204012,
      "epoch": 5364,
      "timeMs": "1740666970789",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

As result, we have the same results


Match status == 3 and order desc for transactionIndex

{
  "v0": {
    "data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=",
    "document_type":"withdrawal",
    "limit": 5,
    "where": "gYNmc3RhdHVzYj09Aw==",
    "orderBy": "gYJwdHJhbnNhY3Rpb25JbmRleGRkZXNj"
  }
}
{
  "v0": {
    "documents": {
      "documents": [
        "AHhe7sKtgtdcpajfOGae2s4Pz2NsAXjVnV8UOr/vxelNUtQ195Q84w5+oJMTC0v4Xuqkqt/yjbJK0pyueiVF+b0EAAMAAAGSbu8X2gAAAZJvdJP7AQAAAAAAAAAAAQAAAAAAEQ6JAAAAC6Q7dAAAAAAAAAAAAQAAAAAAAAAAGXapFKBTWF4yIYd8BhlGjPer47jGn9cJiKwAAAAAAAAAAw==",
        "AG/KzuW7iPuYc1q5YGBhPIu0nnU8hv7CKO8N3TM7Jf7HWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGScmkcVwAAAZJ12XqmAQAAAAAAAAABAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AMXvBAbPs4XHFB7f4dxqLYiu+/VGE6wqM4MsLeVd7sUtWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGScm9ExQAAAZJ12XqmAQAAAAAAAAACAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AG6DMT1WjsfepIHQxn2l2EK6hUDBCySn8o46bEafO97lWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdEn98wAAAZJ12XqmAQAAAAAAAAADAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw==",
        "AERUOVp8Qb3e3bXkaDCWaL5qZc2CuiNf2bYdECD/L3IXWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdEsn3wAAAZJ12XqmAQAAAAAAAAAEAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw=="
      ]
    },
    "metadata": {
      "height": "107565",
      "coreChainLockedHeight": 1204015,
      "epoch": 5365,
      "timeMs": "1740667333088",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

Match [['transactionIndex', 'in', [0,1,2,3,4,5]], ['status', '>=', 0]] and order [['status', 'desc'],['transactionIndex', 'desc']]

{
  "v0": {
    "data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=",
    "document_type":"withdrawal",
    "limit": 5,
    "where": "goNwdHJhbnNhY3Rpb25JbmRleGJpboYAAQIDBAWDZnN0YXR1c2I+PQA=",
    "orderBy": "goJmc3RhdHVzZGRlc2OCcHRyYW5zYWN0aW9uSW5kZXhkZGVzYw=="
  }
}
{
  "v0": {
    "documents": {},
    "metadata": {
      "height": "107567",
      "coreChainLockedHeight": 1204019,
      "epoch": 5365,
      "timeMs": "1740667696379",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

Match [['transactionIndex', 'in', [0,1,2,3,4,5]], ['status', '==', 3]] and order [['status', 'desc'],['transactionIndex', 'desc']]

{
  "v0": {
    "data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=",
    "document_type":"withdrawal",
    "limit": 5,
    "where": "goNwdHJhbnNhY3Rpb25JbmRleGJpboYAAQIDBAWDZnN0YXR1c2I9PQM=",
    "orderBy": "goJmc3RhdHVzZGRlc2OCcHRyYW5zYWN0aW9uSW5kZXhkZGVzYw=="
  }
}
{
  "v0": {
    "documents": {
      "documents": [
        "AOpEmI3j3HvFn1CjYWXwSGXDmEXdTWhPjgkitGwSUP7oWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdFSjSgAAAZJ12XqmAQAAAAAAAAAFAQAAAAAAERGKAAAAIuyyXAAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw==",
        "AERUOVp8Qb3e3bXkaDCWaL5qZc2CuiNf2bYdECD/L3IXWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdEsn3wAAAZJ12XqmAQAAAAAAAAAEAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw==",
        "AG6DMT1WjsfepIHQxn2l2EK6hUDBCySn8o46bEafO97lWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdEn98wAAAZJ12XqmAQAAAAAAAAADAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFEj6O7OW/AxDpb3qk2xFx0L2LRR+iKwAAAAAAAAAAw==",
        "AMXvBAbPs4XHFB7f4dxqLYiu+/VGE6wqM4MsLeVd7sUtWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGScm9ExQAAAZJ12XqmAQAAAAAAAAACAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AG/KzuW7iPuYc1q5YGBhPIu0nnU8hv7CKO8N3TM7Jf7HWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGScmkcVwAAAZJ12XqmAQAAAAAAAAABAQAAAAAAERGKAAAAAACYloAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw=="
      ]
    },
    "metadata": {
      "height": "107568",
      "coreChainLockedHeight": 1204019,
      "epoch": 5365,
      "timeMs": "1740667877569",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

Match [['transactionIndex', 'in', [0,1,2,3,4,5]], ['status', 'in', [0,1,2,3]]] and order [['status', 'desc'],['transactionIndex', 'desc']]

{
  "error": "Max retries reached: drive error: query: multiple in clauses error: There should only be one in clause"
}

As result: order by works in desc only with match [['transactionIndex', 'in', [0,1,2,3,4,5]], ['status', '==', 3]]and order [['status', 'desc'],['transactionIndex', 'desc']]. If we want to get order by desc without strict rule for another index, it will not work, but we can get asc sorting in any case

I also noticed that when using an empty match, order by asc and then cutting off the document via startAfter, we will get an empty array, while with startAt everything will work fine

owl352 avatar Feb 27 '25 14:02 owl352

one line commands:

grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"orderBy":"gYJwdHJhbnNhY3Rpb25JbmRleGNhc2M="}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments
grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"orderBy":"gYJwdHJhbnNhY3Rpb25JbmRleGRkZXNj"}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments
grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"where":"gYNmc3RhdHVzYj09Aw==","orderBy":"gYJwdHJhbnNhY3Rpb25JbmRleGRkZXNj"}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments
grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"where":"goNwdHJhbnNhY3Rpb25JbmRleGJpboYAAQIDBAWDZnN0YXR1c2I+PQA=","orderBy":"goJmc3RhdHVzZGRlc2OCcHRyYW5zYWN0aW9uSW5kZXhkZGVzYw=="}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments
grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"where":"goNwdHJhbnNhY3Rpb25JbmRleGJpboYAAQIDBAWDZnN0YXR1c2I9PQM=","orderBy":"goJmc3RhdHVzZGRlc2OCcHRyYW5zYWN0aW9uSW5kZXhkZGVzYw=="}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments

owl352 avatar Feb 27 '25 15:02 owl352

Hello! Our indexes work very similarly to other compound index implementations such as MongoDb or MySQL.

  1. You can't use second indexed field without using the first one
  2. You can do ranges only on the last field in you query

shumkov avatar Feb 28 '25 01:02 shumkov

@shumkov Hm.. and how is this related to the fact that startAt works under any conditions, and startAfter returns an empty array with sorting enabled? I also didn't really understand how this is related to the fact that sorting in asc order works under almost any conditions, and in desc order only under strict equals, which I described at the very beginning of the issue?

owl352 avatar Feb 28 '25 02:02 owl352

I've been trying for months to make it clear to you that it doesn't work at all as described, but for some reason you persistently ignore it, and I get the impression that none of my bug reports have been read all the way through.

owl352 avatar Feb 28 '25 02:02 owl352

At the moment, any attempt to implement pagination on documents of the same withdrawals contract results in some crazy crutches and no normal sorting on documents by index. Is this how it should work?

owl352 avatar Feb 28 '25 02:02 owl352

About startAt and startAfter.


no sort startAt MV4xg8XPUXL87T1b8mnUC2S3tdPRHJUnjXuoxFHuBsY document id

grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"startAt":"BT9aY3od7iaqcVxCgE2o4aTSVDZ9EDk15PVuAu3SOXs="}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments
{
  "v0": {
    "documents": {
      "documents": [
        "AAU/WmN6He4mqnFcQoBNqOGk0lQ2fRA5NeT1bgLt0jl7/2UOb6gicKPeEMeNobmLMssPiz1laS1UawlaaWjlKCMEAAMAAAGTDxhbYAAAAZMRW244AQAAAAAAAABgAQAAAAAAEVpFAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAF6kUZP90nNjl3VyALTt3O28MuFHYlG2HAAAAAAAAAAM=",
        "AAhUZgs62jkPwlQHtShlyJynPXDblwjFZt2XgcLBNOMkWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdIiUFgAAAZJ12XqmAQAAAAAAAAAMAQAAAAAAERGKAAAAHvdq8gAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AAmt3Ck70+Q3v3JomoFQBvXSya6bch2UbCuh6qQ85Cot/GfIFdPFc0n4BYx1om8NoBBZFWaFOanM3Z5sK33PjIcEAAMAAAGTTeustAAAAZNN+fJMAQAAAAAAAACNAQAAAAAAEXZKAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAF6kUq+vrzeDjUm8Z6lxS7vzYHcCLNoaHAAAAAAAAAAM=",
        "AAsrj55k5WtyEVNWs2jePBpv+Z7C4Gb0DBvaUd0m6AVEhHUz3wc18cwBXRt/xD8Sx1RMihHvEEI6e+en1JJP9H8EAAMAAAGTH7/ehgAAAZMgVq5kAQAAAAAAAABpAQAAAAAAEWEjAAABAB0b+AAAAAAAAAAAAQAAAAAAAAAAGXapFPcXqd2G6vCLk+kvrFJuQwpIm0OziKwAAAAAAAAAAw==",
        "AA6XY18E3Wjfc3eisk53zjhYgU0nInDO29Gl6En0sL1a/GfIFdPFc0n4BYx1om8NoBBZFWaFOanM3Z5sK33PjIcEAAMAAAGTTfcgGQAAAZNN+fJMAQAAAAAAAACXAQAAAAAAEXZKAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAF6kU6f8VZObepIjyuzPx+1ut8ItE9muHAAAAAAAAAAM="
      ]
    },
    "metadata": {
      "height": "108061",
      "coreChainLockedHeight": 1204629,
      "epoch": 5389,
      "timeMs": "1740755545513",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

documents ids:

  • MV4xg8XPUXL87T1b8mnUC2S3tdPRHJUnjXuoxFHuBsY
  • ZWuSXVGxS3HGx3WhAkzaGQa2iQ8C5VbL6iDrXs236X5
  • enS45R5gSAXBJAb7aqCQCNcxPd3KYuiEHsEY9kT1tTW
  • and others

startAfter

grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"startAfter":"BT9aY3od7iaqcVxCgE2o4aTSVDZ9EDk15PVuAu3SOXs="}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments
{
  "v0": {
    "documents": {
      "documents": [
        "AAhUZgs62jkPwlQHtShlyJynPXDblwjFZt2XgcLBNOMkWyRggLpkNQaF/jAtPXkPW7I4y2GZINRiMMhE8HmUSiMEAAMAAAGSdIiUFgAAAZJ12XqmAQAAAAAAAAAMAQAAAAAAERGKAAAAHvdq8gAAAAAAAAAAAQAAAAAAAAAAGXapFMaaC9p9qq5IG+je+V5fNHodAKS0iKwAAAAAAAAAAw==",
        "AAmt3Ck70+Q3v3JomoFQBvXSya6bch2UbCuh6qQ85Cot/GfIFdPFc0n4BYx1om8NoBBZFWaFOanM3Z5sK33PjIcEAAMAAAGTTeustAAAAZNN+fJMAQAAAAAAAACNAQAAAAAAEXZKAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAF6kUq+vrzeDjUm8Z6lxS7vzYHcCLNoaHAAAAAAAAAAM=",
        "AAsrj55k5WtyEVNWs2jePBpv+Z7C4Gb0DBvaUd0m6AVEhHUz3wc18cwBXRt/xD8Sx1RMihHvEEI6e+en1JJP9H8EAAMAAAGTH7/ehgAAAZMgVq5kAQAAAAAAAABpAQAAAAAAEWEjAAABAB0b+AAAAAAAAAAAAQAAAAAAAAAAGXapFPcXqd2G6vCLk+kvrFJuQwpIm0OziKwAAAAAAAAAAw==",
        "AA6XY18E3Wjfc3eisk53zjhYgU0nInDO29Gl6En0sL1a/GfIFdPFc0n4BYx1om8NoBBZFWaFOanM3Z5sK33PjIcEAAMAAAGTTfcgGQAAAZNN+fJMAQAAAAAAAACXAQAAAAAAEXZKAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAF6kU6f8VZObepIjyuzPx+1ut8ItE9muHAAAAAAAAAAM=",
        "AA79nDSS05FiuLSfMQyuD4bBK67qEIpiMWpeDvhUAIgv/GfIFdPFc0n4BYx1om8NoBBZFWaFOanM3Z5sK33PjIcEAAMAAAGTTeustAAAAZNN+fJMAQAAAAAAAACOAQAAAAAAEXZKAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAF6kU6pcUh1a44i9ncQ0gSMdV0kZJusCHAAAAAAAAAAM="
      ]
    },
    "metadata": {
      "height": "108061",
      "coreChainLockedHeight": 1204629,
      "epoch": 5389,
      "timeMs": "1740755545513",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

documents ids:

  • ZWuSXVGxS3HGx3WhAkzaGQa2iQ8C5VbL6iDrXs236X5
  • enS45R5gSAXBJAb7aqCQCNcxPd3KYuiEHsEY9kT1tTW
  • kc1bVgbqtu8TM6Qr2chWwxosmPiv2iJAJsqnqRUWqu5
  • and others

sortBy transactionIndex asc startAt

grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"orderBy":"gYJwdHJhbnNhY3Rpb25JbmRleGNhc2M=","startAt":"BT9aY3od7iaqcVxCgE2o4aTSVDZ9EDk15PVuAu3SOXs="}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments
{
  "v0": {
    "documents": {
      "documents": [
        "AAU/WmN6He4mqnFcQoBNqOGk0lQ2fRA5NeT1bgLt0jl7/2UOb6gicKPeEMeNobmLMssPiz1laS1UawlaaWjlKCMEAAMAAAGTDxhbYAAAAZMRW244AQAAAAAAAABgAQAAAAAAEVpFAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAF6kUZP90nNjl3VyALTt3O28MuFHYlG2HAAAAAAAAAAM=",
        "AB7lPInUZK6WeNBrCXuNkBIT5WmtYHhEe73gn3FvJf1I/2UOb6gicKPeEMeNobmLMssPiz1laS1UawlaaWjlKCMEAAMAAAGTFRAGXAAAAZMWcAIgAQAAAAAAAABhAQAAAAAAEVyWAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAGXapFJRaGiEgxW9c900g7WKNtbUPckg0iKwAAAAAAAAAAw==",
        "APS6mSZU0zJ1YFJE9WPBTyhhwxUmbyi90yh9M2YswZ6u/2UOb6gicKPeEMeNobmLMssPiz1laS1UawlaaWjlKCMEAAMAAAGTFRAtugAAAZMWcAIgAQAAAAAAAABiAQAAAAAAEVyWAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAGXapFKSY6b2poVVY9Wjw/neTNqIV7jmBiKwAAAAAAAAAAw==",
        "AG+0FTLxmEpGaRQ3/FbDIJvcZh353NU5G64YQ44Hr9lb/2UOb6gicKPeEMeNobmLMssPiz1laS1UawlaaWjlKCMEAAMAAAGTFRB7AwAAAZMWcAIgAQAAAAAAAABjAQAAAAAAEVyWAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAF6kUHx8fwPPz1uXY2hB9lBQJy+Geu9CHAAAAAAAAAAM=",
        "AK9jjYDxu72f00p6QEG2Fvo3rfvfDwtsb9QXeMa9pr/p/2UOb6gicKPeEMeNobmLMssPiz1laS1UawlaaWjlKCMEAAMAAAGTFRCiYAAAAZMWcAIgAQAAAAAAAABkAQAAAAAAEVyWAAAAAAAEk+AAAAAAAAAAAQAAAAAAAAAAGXapFAcnARxlhYAmDE4YqShTspSbeQ9KiKwAAAAAAAAAAw=="
      ]
    },
    "metadata": {
      "height": "108061",
      "coreChainLockedHeight": 1204629,
      "epoch": 5389,
      "timeMs": "1740755545513",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

documents ids:

  • MV4xg8XPUXL87T1b8mnUC2S3tdPRHJUnjXuoxFHuBsY
  • 35byCAZcxkYoLwMGzYfDkNLqKL7HDz458gQf29kcTvPy
  • HUKWPVA7Y5QrxKo61ozpYM2kdk5ViMrpUyLVSF6rA2ku
  • and others

sortBy transactionIndex asc startAfter

grpcurl -insecure -proto ./platform.proto -d '{"v0":{"data_contract_id":"NmK7YeF/rj6ilM9gMZf7CqttURgL2LYQTElEpi/i2X8=","document_type":"withdrawal","limit":5,"orderBy":"gYJwdHJhbnNhY3Rpb25JbmRleGNhc2M=","startAfter":"BT9aY3od7iaqcVxCgE2o4aTSVDZ9EDk15PVuAu3SOXs="}}' 127.0.0.1:1443 org.dash.platform.dapi.v0.Platform/getDocuments
{
  "v0": {
    "documents": {},
    "metadata": {
      "height": "108062",
      "coreChainLockedHeight": 1204631,
      "epoch": 5389,
      "timeMs": "1740755726772",
      "protocolVersion": 8,
      "chainId": "dash-testnet-51"
    }
  }
}

And that's still correct behavior?

owl352 avatar Feb 28 '25 15:02 owl352

The first one is not working as intended. It should work, I will look into why it isn't.

QuantumExplorer avatar Mar 01 '25 00:03 QuantumExplorer