Question: ```c
#include <stdio.h>

int func()
{
    int a = 3, b = 4;
    int c = a * b;
    return c;
}

int main()
{
    const int N = 10;
    int arr[N];
    printf("size = %ld\n", sizeof(arr));

    int x = 10;
    const int SIZE = x;
    int buf[SIZE];
    printf("size = %ld\n", sizeof(buf));

    const int FN = func();
    int buf2[FN];
    printf("size = %ld\n", sizeof(buf2));

    return 0;
}

```

ubuntu 20 5.4.0-42-generic  

gcc 9.3.0

compile:

```
gcc const_create_arr.c -Wall

```

show no warning

output:

```
size = 40
size = 40
size = 48

```

output corret

the last one FN is init by func(). we know that func() return vlaue should be computed in runtime. But an array definition should provide the true length of this array to compiler to help compiler allocate space. So I think the last one should not be passed at compiling. But it seems corret. I want to know how it works. Whether my gcc has optimise it and compute the func return when it compiling.

Answer: 
I have found the cause for this issue. What documentation neglects to mention is that `mini_batch_size` only works if your tabular dataset comprise of multiple files e.g., multiple parquet files with `X` number of rows per file. If you have one gigantic file that contains all rows, the `mini_batch_size` is unable to extract only partial data from it to be processed in parallel. I have solved the problem by configuring Azure Synapse Workspace data pipeline to only store few rows per file.
It works on CSV but not Parquet now. You can batch a CSV file, e.g. <https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/machine-learning-pipelines/parallel-run/tabular-dataset-inference-iris.ipynb>

The documentation does not make it clear that certain file types are treated differently