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:
Try to add new rule:
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:
How to reproduce the bug
Preconditions: have RBAC enabled in your Superset config. 1. Install example dashboards (in this example "USA Births Names") 2. Go to Datasets section and make sure that the datasets exists: birth_names, birth_france_by_region. 3. Go to RLS and press the + button to create a new rule. 4. In the new pop-up, there will be the dataset drop-down. Click it, and enter "birth". Make sure the pop-up list is empty 6. Now place the cursor in the datasets field and scroll pop-up list all the way down. Make sure birth_names and birth_france_by_region datasets available. 7. Now enter again "birth" in the dataset search box. Birth_names and birth_france_by_region datasets will be available to the dataset drop-down.
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
This does not work when searching in the Dashboards section.
Checklist
- [X] I have searched Superset docs and Slack and didn't find a solution to my problem.
- [X] I have searched the GitHub issue tracker and didn't find a similar bug report.
- [ ] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.
Comment From: dosubot[bot]
@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.
Comment From: rusackas
I'm assuming this is still valid in 4.1.2/5.0.0, but this thread has gone silent for quite a while. I suspect it's just an edge case that isn't rising to the top of any Committer's TODO list. Any volunteers here on the thread willing to dig into it? If not, it might be closed as stale/inactive.
Comment From: rusackas
5.0 is out now, would love to know if this is still an issue there. if not, this will be closed as inactive/not-planned