Azure / Azurite

A lightweight server clone of Azure Storage that simulates most of the commands supported by it with minimal dependencies
MIT License
1.83k stars 325 forks source link

Azurite doesn't support use SAS with RowKeyStart and RowKeyEnd property on Storage Table #726

Open zzhxiaofeng opened 3 years ago

zzhxiaofeng commented 3 years ago

Error Description: Azurite doesn't support use SAS with RowKeyStart and RowKeyEnd property on Storage Table. For example, in the following demo. The number of query result is 1 in Azure because the srk(RowKeyStart) and erk(RowKeyEnd) is 01, but In Azurite, the number of query result is 2.

To Reproduce:

import { TableClient, TableEntity } from "@azure/data-tables"
import { assert } from "chai";

async function main() {
    const entitys: TableEntity<object>[] = [
        {
            partitionKey: "somPartition",
            rowKey: "01"
        },
        {
            partitionKey: "somPartition",
            rowKey: "02"
        }
    ];

    const client = TableClient.fromConnectionString("<Azurite-https-connectionString>", "<tablename>");
    await client.create();
    const client2 = TableClient.fromConnectionString("DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;TableEndpoint=https://127.0.0.1:10002/devstoreaccount1;SharedAccessSignature=tn=testtablemxa9m9x0&spk=somPartition&epk=somPartition&srk=01&erk=01&sv=2019-02-02&se=2040-01-01T01%3A01%3A00Z&sp=raud&sig=NqWwzp5gk1JfE2cpkIVHgoi4EHnfGL4LEyxhkz8n%2BYM%3D", "<tablename>");
    for (var entity of entitys) {
        await client.createEntity(entity);
    }
    const listResults = client2.listEntities<object>();
    let i = 0
    for await (const product of listResults) {
        i++;
    }
    assert.equal(i, 1);
    await client.delete();
}

main();

Error Track: In Azurite, it doesn't have the filter with RowKeyStart and RowKeyEnd. The process code is shown as following: https://github.com/Azure/Azurite/blob/table/src/table/persistence/LokiTableMetadataStore.ts#L436 image

Expected Behavior: In Azurite, it can support use SAS with RowKeyStart and RowKeyEnd property on Storage Table.

@jongio for notification.

v-xuto commented 3 years ago

azsdk-azurite

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.