Open calvad0s opened 1 month ago
@calvad0s Hello! I'm here to help you with your Superset issues. I can assist with bug-solving, answer questions, and guide you on becoming a contributor.
To resolve the issue where the dataset drop-down in the RLS rule creation pop-up in Superset does not show all available datasets when a search value is entered, ensure that the AsyncSelect
component's loadOptions
function is correctly fetching and filtering the datasets based on the search input.
Here is the relevant part of the code that handles the dataset fetching and filtering:
const loadDatasetOptions = async (
search: string,
page: number,
pageSize: number,
) => {
const query = rison.encode({
columns: ['id', 'table_name', 'database.database_name', 'schema'],
filters: [{ col: 'table_name', opr: 'ct', value: search }],
page,
page_size: pageSize,
order_column: 'table_name',
order_direction: 'asc',
});
return cachedSupersetGet({
endpoint: `/api/v1/dataset/?q=${query}`,
})
.then((response: JsonResponse) => {
const list: {
customLabel: ReactNode;
label: string;
value: string | number;
}[] = response.json.result.map((item: Dataset) => ({
customLabel: DatasetSelectLabel(item),
label: item.table_name,
value: item.id,
}));
return {
data: list,
totalCount: response.json.count,
};
})
.catch(async error => {
const errorMessage = getErrorMessage(await getClientErrorObject(error));
throw new Error(errorMessage);
});
};
Ensure that the AsyncSelect
component is configured to use these functions:
<AsyncSelect
ariaLabel={t('Dataset')}
value={value}
options={loadDatasetOptions}
onChange={onChange}
notFoundContent={t('No compatible datasets found')}
placeholder={t('Select a dataset')}
/>
This setup ensures that the datasets are fetched and filtered based on the search input, and the results are displayed in the drop-down field [1][2].
To continue talking to Dosu, mention @dosu.
Bug description
When trying to create a new RLS rule, in the rule pop-up there is the drop-down field for datasets. If you start filling this field with a search value, the results will display in the drop-down menu with incomplete list of all available values.
An example of this behavior can be seen with the public dashboard "USA Births Names". Two datasets are used: birth_names and birth_france_by_region. Try to find this datasets in the Datasets section:![image](https://github.com/user-attachments/assets/3da9a818-73cd-4700-837b-2f9f16f3679c)
Try to add new rule:![image](https://github.com/user-attachments/assets/e5a82916-146e-43f8-8d8d-1f25a8bbc19a)
If, when creating a new RLS rule, at first place the cursor in the datasets field and scroll all available values from the drop-down list all the way down (without filling out the search field). And then fill out the dataset search form again, all available datasets will be displayed:![image](https://github.com/user-attachments/assets/c820a7db-814e-443a-a986-ae5e951b2453)
How to reproduce the bug
Preconditions: have RBAC enabled in your Superset config.
Screenshots/recordings
No response
Superset version
master / latest-dev
Python version
3.9
Node version
16
Browser
Chrome
Additional context
Superset version 4.0.1
Note: The dashboard will be successfully found if you enter its ID in the search field![image](https://github.com/user-attachments/assets/31ba2e16-a0db-48e8-a0d0-f352dc2c0064)
This does not work when searching in the Dashboards section.
Checklist