You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2026/10/19 18:43:40 UTC
(superset) 03/03: Merge branch 'master' into hughhhh/pfm-6-explore-indicator
This is an automated email from the ASF dual-hosted git repository.
hughhhh pushed a commit to branch hughhhh/pfm-6-explore-indicator
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 677af5f834fe3ea7d20cacc763b79dd84449216c
Merge: 8c81b52f86e 99ecfe5801c
Author: Hugh A. Miles II <hu...@gmail.com>
AuthorDate: Mon Oct 19 18:33:09 2026 +0000
Merge branch 'master' into hughhhh/pfm-6-explore-indicator
Conflicts, and how they were resolved:
- `tests/unit_tests/commands/dataset/test_create.py`,
`tests/unit_tests/dashboards/datasets_test.py`: both sides appended tests
and added imports beside each other. Resolved as a union -- master's
editorship/template-params create tests and its ambiguous-semantic-view
test, plus this branch's partition-mapping tests and the three partition
fields it adds to the dashboard dataset field-set assertion.
- `superset/translations/messages.pot` and all 31 catalogs: both sides had
regenerated them from different trees. Took master's catalogs (they carry
the community translations that landed since the last merge; this branch's
catalog commits are pure regenerations with empty msgstrs) and re-ran
`scripts/translations/babel_update.sh` over the merged tree.
`check_pot_drift.py` reports the template matches a fresh extraction, and
`check_translation_regression.py --compare` against master reports +0 on
every language.
`superset/commands/dataset/create.py` auto-merged master's
`allow_editorship=False` / `template_params` access check against this
branch's partition-mapping validation; the merged pair is covered by the
united test file. `docs/static/resources/openapi.json` auto-merged to exactly
what `superset update-api-docs` regenerates on the pinned apispec 6.6.1.
Co-Authored-By: Claude Opus 5 (1M context) <no...@anthropic.com>
.github/workflows/bashlib.sh | 13 +
.github/workflows/bump-python-package.yml | 2 +-
.github/workflows/pre-commit.yml | 14 +
.github/workflows/python-nightly-canary.yml | 6 +
.github/workflows/superset-e2e.yml | 14 +
.github/workflows/superset-frontend.yml | 2 +-
.github/workflows/superset-helm-lint-test.yml | 2 +-
.../workflows/superset-python-unittest-report.yml | 2 +-
.github/workflows/superset-python-unittest.yml | 7 +
.gitignore | 2 +
.pre-commit-config.yaml | 39 +-
RELEASING/requirements.txt | 2 +-
UPDATING.md | 73 +-
docs/admin_docs/configuration/mcp-server.mdx | 5 +-
docs/developer_docs/semantic-query-errors.md | 43 +-
.../creating-your-first-dashboard.mdx | 22 +
docs/docs/using-superset/exploring-data.mdx | 36 +
.../using-superset/semantic-member-selections.mdx | 10 +
docs/docusaurus.config.ts | 53 +-
docs/package.json | 4 +-
docs/static/resources/openapi.json | 9 +-
docs/yarn.lock | 230 +-
pyproject.toml | 20 +-
requirements/base.txt | 10 +-
requirements/development.in | 2 +-
requirements/development.txt | 22 +-
superset-core/pyproject.toml | 2 +-
.../src/superset_core/semantic_layers/types.py | 22 +-
.../src/superset_core/semantic_layers/view.py | 17 +-
.../src/superset_extensions_cli/cli.py | 7 +-
.../templates/frontend/package.json.j2 | 8 +-
superset-extensions-cli/tests/test_cli_build.py | 4 +-
...runner.ts => playwright.storybook-ci.config.ts} | 32 +-
superset-frontend/.storybook/setup-stories.test.ts | 156 +
superset-frontend/.storybook/setup-stories.ts | 179 +
.../.storybook/{test-runner.ts => stories.spec.ts} | 24 +-
superset-frontend/jest.config.js | 3 +-
superset-frontend/package-lock.json | 34519 +++++++++----------
superset-frontend/package.json | 21 +-
.../packages/superset-ui-core/package.json | 2 +-
.../src/components/Loading/Loading.stories.tsx | 5 +-
.../playwright/helpers/api/semanticLayer.test.ts | 65 +
.../playwright/helpers/api/semanticLayer.ts | 136 +
.../playwright/helpers/fixtures/testAssets.ts | 25 +-
.../tests/dashboard/dashboard-test-helpers.ts | 20 +-
.../semantic-view/semantic-view-dashboard.spec.ts | 204 +
.../src/Timeseries/EchartsTimeseries.tsx | 4 +
.../test/Timeseries/EchartsTimeseries.test.tsx | 6 +
.../src/plugin/buildQuery.ts | 8 +-
.../src/plugin/transformProps.ts | 4 +-
.../src/plugin/utilities.ts | 42 +-
.../src/react-pivottable/Styles.ts | 98 +-
.../src/react-pivottable/TableRenderers.tsx | 97 +-
.../test/plugin/transformProps.test.ts | 2 +-
.../test/plugin/utilities.test.ts | 49 +-
.../test/react-pivottable/Styles.test.tsx | 328 +
.../test/react-pivottable/tableRenders.test.tsx | 22 +
.../plugin-chart-pivot-table/test/testData.ts | 68 +
.../src/SqlLab/actions/sqlLab.test.ts | 57 +
superset-frontend/src/SqlLab/actions/sqlLab.ts | 32 +-
.../src/components/Chart/Chart.test.tsx | 38 +
superset-frontend/src/components/Chart/Chart.tsx | 8 +
.../src/components/Chart/chartAction.ts | 34 +
.../src/components/Chart/chartActions.test.ts | 62 +
.../src/components/Datasource/utils/index.ts | 12 +-
.../src/components/Datasource/utils/utils.test.tsx | 28 +-
.../src/dashboard/actions/hydrate.test.ts | 43 +
superset-frontend/src/dashboard/actions/hydrate.ts | 32 +-
.../FilterBar/FilterControls/FilterValue.test.tsx | 53 +
.../FilterBar/FilterControls/FilterValue.tsx | 16 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 22 +-
.../FiltersConfigForm/getControlItemsMap.test.tsx | 19 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 1 +
.../FiltersConfigForm/utils.test.ts | 41 +
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 27 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 40 +
.../util/charts/getFormDataWithExtraFilters.ts | 7 +-
.../util/getFormDataWithExtraFilters.test.ts | 49 +
.../components/DateFunctionTooltip.tsx | 2 +-
...AdhocFilterEditPopoverSimpleTabContent.test.tsx | 69 +-
.../index.tsx | 38 +-
superset-frontend/src/explore/types.ts | 2 +
.../src/features/charts/ChartCard.test.tsx | 32 +
.../src/features/charts/ChartCard.tsx | 10 +-
.../src/features/dashboards/DashboardCard.test.tsx | 47 +-
.../src/features/dashboards/DashboardCard.tsx | 14 +-
.../src/features/home/DashboardTable.test.tsx | 58 +-
.../src/features/home/DashboardTable.tsx | 31 +-
.../versionHistory/RelatedUpdateRow.test.tsx | 27 +
.../features/versionHistory/RelatedUpdateRow.tsx | 5 +-
.../versionHistory/VersionHistoryPanel.test.tsx | 32 +
.../versionHistory/VersionHistoryPanel.tsx | 1 +
.../src/features/versionHistory/display.test.ts | 47 +
.../src/features/versionHistory/display.ts | 33 +-
.../filters/components/Range/RangeChart.test.tsx | 115 +
.../components/Range/RangeFilterPlugin.test.tsx | 475 +-
.../filters/components/Range/RangeFilterPlugin.tsx | 195 +-
.../filters/components/Range/buildQuery.test.ts | 50 +
.../src/filters/components/Range/buildQuery.ts | 4 +
.../src/filters/components/Range/index.ts | 2 +
.../filters/components/Range/isSemanticRange.ts} | 32 +-
.../src/filters/components/Range/transformProps.ts | 2 +-
.../pages/ChartList/ChartList.permissions.test.tsx | 27 +-
superset-frontend/src/pages/ChartList/index.tsx | 10 +-
.../DashboardList/DashboardList.cardview.test.tsx | 77 +-
.../DashboardList.permissions.test.tsx | 34 +-
.../src/pages/DashboardList/index.tsx | 31 +-
.../DatasetList/DatasetList.permissions.test.tsx | 30 +
superset-frontend/src/pages/DatasetList/index.tsx | 10 +-
.../src/utils/semanticViewStructure.test.ts | 50 +
.../src/utils/semanticViewStructure.ts | 2 +-
superset-websocket/README.md | 25 +
superset-websocket/config.example.json | 10 +-
superset-websocket/package-lock.json | 56 +-
superset-websocket/package.json | 2 +-
superset-websocket/spec/config.test.ts | 42 +
superset-websocket/spec/index.test.ts | 161 +-
superset-websocket/src/config.ts | 75 +
superset-websocket/src/index.ts | 93 +-
.../utils/client-ws-app/package-lock.json | 147 +-
.../utils/client-ws-app/package.json | 2 +-
superset/charts/api.py | 7 +-
superset/charts/data/api.py | 29 +-
superset/charts/schemas.py | 4 +-
superset/commands/chart/data/get_data_command.py | 37 +-
superset/commands/chart/exceptions.py | 4 +
superset/commands/dataset/create.py | 69 +-
superset/commands/dataset/duplicate.py | 48 +-
superset/commands/dataset/exceptions.py | 46 +
superset/commands/dataset/importers/v1/utils.py | 194 +-
superset/commands/dataset/update.py | 127 +-
superset/commands/importers/v1/examples.py | 8 +-
superset/commands/importers/v1/utils.py | 49 +-
superset/common/db_query_status.py | 6 +
superset/common/query_context_processor.py | 17 +-
superset/common/query_object_factory.py | 31 +-
superset/common/utils/time_range_utils.py | 32 +-
superset/constants.py | 1 +
superset/daos/query.py | 26 +-
superset/dashboards/api.py | 8 +-
superset/dashboards/schemas.py | 3 +
superset/databases/api.py | 7 +-
superset/datasets/api.py | 7 +-
superset/datasource/api.py | 86 +-
superset/db_engine_specs/README.md | 2 +
superset/db_engine_specs/base.py | 3 +
superset/db_engine_specs/impala.py | 48 +-
superset/db_engine_specs/trino.py | 35 +-
superset/exceptions.py | 27 +
superset/extensions/metadb.py | 3 +-
superset/importexport/api.py | 7 +-
superset/initialization/__init__.py | 27 +-
superset/jinja_context.py | 17 +
superset/mcp_service/chart/tool/get_chart_data.py | 53 +-
superset/mcp_service/dashboard/permalink.py | 6 +-
superset/models/dashboard.py | 13 +
superset/models/helpers.py | 89 +-
superset/models/slice.py | 23 +-
superset/queries/api.py | 15 +-
superset/queries/saved_queries/api.py | 7 +-
superset/security/manager.py | 65 +-
superset/semantic_layers/dimension_resolution.py | 117 +
superset/semantic_layers/exceptions.py | 11 +-
superset/semantic_layers/mapper.py | 226 +-
superset/semantic_layers/models.py | 175 +-
superset/sql/execution/celery_task.py | 466 +-
superset/sql/execution/executor.py | 24 +-
superset/sql/execution/utils.py | 260 +
superset/sql/parse.py | 38 +-
superset/sql_lab.py | 366 +-
superset/subjects/utils.py | 19 +-
superset/tasks/async_queries.py | 19 +-
superset/themes/api.py | 7 +-
superset/translations/ar/LC_MESSAGES/messages.po | 192 +-
superset/translations/ca/LC_MESSAGES/messages.po | 174 +-
superset/translations/cs/LC_MESSAGES/messages.po | 180 +-
superset/translations/de/LC_MESSAGES/messages.po | 174 +-
superset/translations/en/LC_MESSAGES/messages.po | 156 +-
superset/translations/es/LC_MESSAGES/messages.po | 174 +-
superset/translations/fa/LC_MESSAGES/messages.po | 168 +-
superset/translations/fi/LC_MESSAGES/messages.po | 168 +-
superset/translations/fr/LC_MESSAGES/messages.po | 174 +-
superset/translations/it/LC_MESSAGES/messages.po | 174 +-
superset/translations/ja/LC_MESSAGES/messages.po | 168 +-
superset/translations/ko/LC_MESSAGES/messages.po | 162 +-
superset/translations/lv/LC_MESSAGES/messages.po | 180 +-
superset/translations/messages.pot | 57 +-
superset/translations/mi/LC_MESSAGES/messages.po | 174 +-
superset/translations/nl/LC_MESSAGES/messages.po | 168 +-
superset/translations/pl/LC_MESSAGES/messages.po | 170 +-
superset/translations/pt/LC_MESSAGES/messages.po | 174 +-
.../translations/pt_BR/LC_MESSAGES/messages.po | 168 +-
superset/translations/ro/LC_MESSAGES/messages.po | 180 +-
superset/translations/ru/LC_MESSAGES/messages.po | 180 +-
superset/translations/sk/LC_MESSAGES/messages.po | 180 +-
superset/translations/sl/LC_MESSAGES/messages.po | 186 +-
superset/translations/sr/LC_MESSAGES/messages.po | 180 +-
.../translations/sr_Latn/LC_MESSAGES/messages.po | 180 +-
superset/translations/ta/LC_MESSAGES/messages.po | 174 +-
superset/translations/th/LC_MESSAGES/messages.po | 162 +-
superset/translations/tr/LC_MESSAGES/messages.po | 168 +-
superset/translations/uk/LC_MESSAGES/messages.po | 186 +-
superset/translations/zh/LC_MESSAGES/messages.po | 162 +-
.../translations/zh_TW/LC_MESSAGES/messages.po | 162 +-
superset/utils/error_sanitization.py | 38 +
superset/utils/schema.py | 60 +
superset/utils/screenshot_utils.py | 34 +-
superset/versioning/changes/shadow_queries.py | 9 +-
superset/versioning/diff.py | 56 +-
superset/views/api.py | 5 +
superset/views/datasource/views.py | 80 +-
.../src/superset_e2e_semantic_stub/__init__.py | 270 +
.../semantic_stub/dist/manifest.json | 10 +
tests/integration_tests/datasource/api_tests.py | 237 +-
tests/integration_tests/queries/api_tests.py | 29 +-
.../security/row_level_security_tests.py | 69 +
tests/integration_tests/security_tests.py | 113 +-
tests/integration_tests/sqllab_tests.py | 29 +-
.../superset_test_config_semantic.py | 34 +-
.../mypy_fixtures/__init__.py | 13 +-
tests/mypy_fixtures/uuid_mixin_nullable.py | 44 +
tests/testcontainers/db_engine_specs/test_mysql.py | 113 +
.../db_engine_specs/test_postgres.py | 690 +
.../charts/commands/data/test_get_data_command.py | 63 +-
tests/unit_tests/charts/test_schemas.py | 51 +-
tests/unit_tests/commands/dataset/test_create.py | 268 +-
.../unit_tests/commands/dataset/test_duplicate.py | 136 +-
tests/unit_tests/commands/dataset/update_test.py | 475 +-
.../commands/importers/v1/examples_test.py | 51 +
.../unit_tests/commands/importers/v1/utils_test.py | 143 +
.../common/test_query_context_processor.py | 69 +
tests/unit_tests/common/test_time_range_utils.py | 27 +
tests/unit_tests/conftest.py | 53 +-
tests/unit_tests/dao/queries_test.py | 30 +-
tests/unit_tests/dao/query_stop_isolation_test.py | 126 +
tests/unit_tests/dao/test_query_stop_race.py | 73 +-
tests/unit_tests/daos/test_query_dao.py | 619 +
tests/unit_tests/dashboards/datasets_test.py | 65 +
tests/unit_tests/databases/api_test.py | 47 +-
.../datasets/commands/importers/v1/import_test.py | 608 +-
tests/unit_tests/datasource/test_compatible_api.py | 85 +
.../db_engine_specs/test_impala_pending.py | 132 +-
tests/unit_tests/db_engine_specs/test_trino.py | 52 +
tests/unit_tests/exceptions_test.py | 46 +
tests/unit_tests/importexport/api_test.py | 42 +
.../mcp_service/chart/test_bullet_chart.py | 18 +-
.../mcp_service/chart/test_bullet_tool_paths.py | 21 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 322 +-
.../mcp_service/dashboard/test_permalink.py | 40 +-
.../mcp_service/dataset/tool/test_query_dataset.py | 44 +-
.../semantic_layer/tool/test_get_table.py | 27 +-
.../semantic_layer/tool/test_list_metrics.py | 8 +-
.../mcp_service/test_validation_contract.py | 2 +-
tests/unit_tests/models/slice_test.py | 87 +
tests/unit_tests/models/template_params_test.py | 68 +
.../scripts/translations/babel_update_test.py | 105 +-
tests/unit_tests/security/manager_test.py | 174 +
.../semantic_layers/dimension_resolution_test.py | 161 +
.../semantic_layers/e2e_stub_extension_test.py | 257 +
tests/unit_tests/semantic_layers/mapper_test.py | 745 +-
tests/unit_tests/semantic_layers/models_test.py | 229 +-
.../semantic_layers/query_errors_test.py | 229 +
.../semantic_layers/simple_cache_clear_test.py | 10 +-
.../semantic_layers/values_endpoint_test.py | 108 +
tests/unit_tests/sql/execution/conftest.py | 1 +
tests/unit_tests/sql/execution/test_celery_task.py | 2222 +-
tests/unit_tests/sql/execution/test_executor.py | 42 +-
tests/unit_tests/sql/execution/test_utils.py | 207 +
tests/unit_tests/sql/parse_tests.py | 95 +
tests/unit_tests/sql_lab_test.py | 1714 +
tests/unit_tests/tasks/test_async_queries.py | 44 +
tests/unit_tests/test_app_reinitialization.py | 114 +
tests/unit_tests/test_sqllab_error_stacktrace.py | 17 +-
tests/unit_tests/themes/api_test.py | 33 +
tests/unit_tests/utils/test_error_sanitization.py | 94 +
tests/unit_tests/utils/test_schema.py | 138 +
tests/unit_tests/utils/test_screenshot_utils.py | 134 +
.../versioning/test_dataset_child_extra.py | 148 +
tests/unit_tests/versioning/test_shadow_queries.py | 79 +
tests/unit_tests/views/datasource/views_test.py | 440 +-
tests/unit_tests/views/test_base.py | 72 +
281 files changed, 40003 insertions(+), 21360 deletions(-)
diff --cc superset/commands/dataset/create.py
index 438c2bf0fb7,cd366f5bf56..6f3b3291a58
--- a/superset/commands/dataset/create.py
+++ b/superset/commands/dataset/create.py
@@@ -30,13 -29,12 +30,16 @@@ from superset.commands.dataset.exceptio
DatasetExistsValidationError,
DatasetInvalidError,
DatasetSoftDeletedTwinExistsError,
+ DatasetSqlRenderValidationError,
TableNotFoundValidationError,
+ TEMPLATE_RENDER_ERRORS,
+ TemplateParamsInvalidValidationError,
)
from superset.commands.utils import populate_subjects
+from superset.connectors.sqla.partition_mapping import (
+ FEATURE_FLAG as PARTITION_FILTER_MAPPING,
+ validate_partition_mapping,
+)
from superset.daos.dataset import DatasetDAO
from superset.db_engine_specs.exceptions import (
SupersetDBAPIConnectionError,
diff --cc superset/commands/dataset/importers/v1/utils.py
index 6c6cc685b27,ea77b3a5f0b..efa26c6d9e9
--- a/superset/commands/dataset/importers/v1/utils.py
+++ b/superset/commands/dataset/importers/v1/utils.py
@@@ -255,134 -255,144 +262,253 @@@ def validate_catalog(config: dict[str,
raise MultiCatalogDisabledValidationError()
- def _get_template_params(dataset: SqlaTable) -> dict[str, Any]:
- """
- Return a dataset's template params as a dict for the access check.
+ def _readable_template_params(value: Any) -> dict[str, Any] | None:
+ """Template params as execution will read them, or ``None`` if it can't.
+
+ A config's params arrive as a dict, which the import stores as
+ ``json.dumps(value)`` (see ``JSON_KEYS``) and execution reads back with
+ ``json_to_dict``. That round trip can change values (``json_to_dict``
+ rewrites ``", }"`` even inside a string; ``NaN`` and dates serialize
+ differently), so a dict is put through the same round trip before it is
+ compared or rendered.
- Delegates to ``template_params_dict`` so the check reads the params the
- same way rendering does, but tolerates the two inputs that property does
- not guard: it raises on malformed JSON and passes non-dict JSON through.
- Either yields an empty dict so the check still runs against the raw SQL.
+ ``None`` never equals readable params, so unreadable params always count
+ as a change, and the binding check below refuses to render with them.
"""
try:
- params = dataset.template_params_dict
- except json.JSONDecodeError:
- logger.warning(
- "Unable to decode template_params for dataset %s", dataset.table_name
+ if isinstance(value, dict):
+ value = json.dumps(value)
+ return parse_template_params(value)
+ except (TypeError, ValueError):
+ return None
+
+
+ def _raise_for_import_binding_access(
+ config: dict[str, Any], existing: SqlaTable | None
+ ) -> None:
+ """Authorize the table binding a dataset import will apply.
+
+ Runs BEFORE ``import_from_dict`` mutates the row, against the *requested*
+ (``config``) binding rather than the stored dataset: the per-table lookup
+ would otherwise resolve the dataset being imported itself (whose ``perm``
+ is schema-blind), letting a ``datasource_access`` holder repoint it to
+ another schema and read it through chart-data. ``allow_editorship=False``
+ means editorship of a same-named dataset is not accepted -- defining or
+ repointing a dataset over a table requires real data access to that
+ table. Skipped when the binding is unchanged (a metadata-only re-import is
+ not a repoint), matching ``UpdateDatasetCommand``.
+ """
+ database = db.session.query(Database).filter_by(id=config["database_id"]).first()
+ if database is None:
+ # A missing database is reported downstream by import_from_dict; there
+ # is no table binding to authorize here.
+ return
+
+ # Resolve the requested binding by MERGING the config over the stored row:
+ # an overwrite only applies the keys the upload carries, so an omitted
+ # field keeps its stored value. Resolving in isolation would mis-authorize
+ # (e.g. omitted ``sql`` -> treat a virtual dataset as physical; omitted
+ # ``template_params`` -> render against ``{}`` while the stored params are
+ # kept).
+ requested_sql = (
+ config["sql"] if "sql" in config else (existing.sql if existing else None)
+ ) or None
+ requested_table_name = config.get("table_name") or (
+ existing.table_name if existing else None
+ )
+ requested_schema = config.get("schema", existing.schema if existing else None)
+ requested_catalog = config.get("catalog", existing.catalog if existing else None)
+ stored_params = (
+ _readable_template_params(existing.template_params) if existing else {}
+ )
+ if "template_params" in config:
+ requested_params = _readable_template_params(config["template_params"])
+ # Re-importing the value already stored is not a change, even when it
+ # is a legacy non-object value (``import_from_dict`` stores it as
+ # ``json.dumps(config[...])``), matching UpdateDatasetCommand's echo
+ # handling. Otherwise compared type-sensitively the way execution reads
+ # them: ``1`` and ``true`` differ even though the dicts are
+ # Python-equal; an unreadable value that is a real change fails closed.
+ config_stored_form = (
+ json.dumps(config["template_params"])
+ if config["template_params"] is not None
+ else None
+ )
+ params_unchanged = (
+ existing is not None and config_stored_form == existing.template_params
+ ) or (
+ requested_params is not None
+ and stored_params is not None
+ and template_params_equivalent(requested_params, stored_params)
+ )
+ else:
+ requested_params = stored_params
+ params_unchanged = True
+
+ if existing is not None and (
+ config["database_id"] == existing.database_id
+ and requested_sql == (existing.sql or None)
+ # A virtual dataset's table_name is only a label -- its SQL is the
+ # binding -- so renaming one is not a repoint, as with PUT and
+ # ``/datasource/save/``.
+ and (bool(requested_sql) or requested_table_name == existing.table_name)
+ and requested_schema == existing.schema
+ and requested_catalog == existing.catalog
+ and params_unchanged
+ ):
+ # Binding unchanged -- a metadata-only re-import, not a repoint.
+ # The database and template_params are part of the binding: an
+ # overwrite that keeps table/schema/catalog/sql but points at a
+ # different database, or changes the params a templated FROM renders
+ # against, still repoints the dataset and must be re-authorized
+ # (matching UpdateDatasetCommand).
+ return
+
+ if requested_sql:
+ if requested_params is None:
+ # Execution would read these params differently than any access
+ # decision made here could, so fail closed as a bad payload.
+ raise IncorrectFormatError("Invalid template_params: must be a JSON object")
+ try:
+ security_manager.raise_for_access(
+ database=database,
+ sql=requested_sql,
+ # Empty strings would qualify table names against a nonexistent
+ # catalog/schema, so they are normalized to None.
+ catalog=requested_catalog or None,
+ schema=requested_schema or None,
+ template_params=template_params_for_access_check(requested_params),
+ allow_editorship=False,
+ )
+ except TEMPLATE_RENDER_ERRORS as ex:
+ # SQL that can't be rendered with its params can't be
+ # access-checked: fail closed as a bad payload, not a 500.
+ raise IncorrectFormatError(
+ f"Invalid SQL: {get_template_render_error_msg(ex)}"
+ ) from ex
+ elif isinstance(requested_table_name, str):
+ # A physical dataset always carries a table_name (the import schema
+ # requires it); the guard also narrows the type for the check below.
+ security_manager.raise_for_access(
+ database=database,
+ table=Table(
+ requested_table_name,
+ requested_schema or None,
+ requested_catalog or None,
+ ),
+ allow_editorship=False,
)
- return {}
- return params if isinstance(params, dict) else {}
+def _default_omitted_monotonic_declarations(columns: list[dict[str, Any]]) -> None:
+ """
+ Materialize `partition_transform_is_monotonic` wherever a transform is set.
+
+ `ImportV1ColumnSchema` gives the declaration a `load_default` of False so a
+ bundle predating the field cannot claim its transform preserves ordering.
+ That default never reaches storage: the import pipeline validates the
+ payload and then applies the *raw* config, so on an overwrite an omitted key
+ keeps whatever is stored -- including a True left behind by the transform
+ this bundle is replacing. A non-monotonic transform declared monotonic
+ enables range mirrors that exclude rows the filter keeps.
+
+ Only columns that supply a transform are touched, so a re-import that says
+ nothing about a column stays idempotent.
+ """
+ for column in columns:
+ if column.get("partition_value_transform"):
+ column.setdefault("partition_transform_is_monotonic", False)
+
+
+def drop_unusable_partition_transforms(
+ config: dict[str, Any], database: Database | None = None
+) -> None:
+ """
+ Drop a partition value transform the save path would have rejected.
+
+ Import is the one door into this field that does not go through
+ `UpdateDatasetCommand`, so a bundle can carry a transform holding Jinja or
+ calling a non-deterministic function -- one that will never mirror a filter,
+ and that the editor can only report as broken after the fact. Dropping it on
+ the way in leaves the column with no transform, a state an owner can see and
+ fix, rather than a stored expression that looks configured and is not.
+
+ Deliberately sanitizes rather than raises. A bundle is imported as a whole,
+ and failing someone's entire dataset over one unusable expression is a worse
+ trade than importing the dataset without it. This is the same bargain
+ `DatasetDAO.clear_dangling_partition_mapping` already strikes for a mapping
+ whose column went away.
+
+ Two kinds of check, and only one of them answers to the feature flag. The
+ usability checks ask whether a transform will ever mirror a filter, which
+ is a question about a live feature; with the flag off nothing mirrors, so
+ rewriting the bundle would discard configuration for no gain. The
+ structural check asks whether the expression is one this product stores at
+ all, and that answer does not change with a flag -- an import written while
+ the flag was off would otherwise sit in the metadata DB fully armed,
+ waiting for an operator to turn the flag on.
+
+ ``database`` is accepted already resolved for the v0 importer, whose bundles
+ nest a dataset under the connection being imported and so carry no
+ ``database_id`` to look one up by. Resolving it here as before when the
+ caller passes nothing.
+ """
+ columns = config.get("columns")
+ if not columns:
+ return
+ if not any(column.get("partition_value_transform") for column in columns):
+ return
+
+ _default_omitted_monotonic_declarations(columns)
+
+ database = database or (
+ db.session.query(Database).filter_by(id=config["database_id"]).first()
+ )
+ if database is None:
+ return
+
+ check_usability = is_feature_enabled(PARTITION_FILTER_MAPPING)
+ catalog = config.get("catalog")
+ schema = config.get("schema")
+
+ for column in columns:
+ transform = column.get("partition_value_transform")
+ if not transform:
+ continue
+
+ reasons: list[str] = []
+ # Skipped only for a transform that is not SQL yet, which is the same
+ # condition `UpdateDatasetCommand` puts in front of this gate. A PUT
+ # stores a half-typed transform and reports the mapping inactive, and
+ # `stored_expression_error` fails closed on anything that does not
+ # parse -- as it must, for the probe's sake. Asking it here
+ # unconditionally made export-then-import discard configuration the
+ # editor keeps, flag on or off. Note this is narrower than "does not
+ # parse": a multi-statement transform also fails to parse as a
+ # statement, and it still has to be dropped.
+ if not is_unfinished(transform, database.backend):
+ if reason := stored_expression_error(database, catalog, schema, transform):
+ reasons.append(reason)
+ if check_usability:
+ reasons.extend(
+ str(issue.message)
+ for issue in validate_transform(transform, database.backend)
+ if issue.blocking
+ )
+
+ if reasons:
+ logger.warning(
+ "Dropping the partition value transform on %s.%s (dataset %s) "
+ "during import: %s",
+ config.get("table_name"),
+ column.get("column_name"),
+ config.get("uuid"),
+ "; ".join(reasons),
+ )
+ column["partition_value_transform"] = None
+ column["partition_transform_is_monotonic"] = False
+
+
def import_dataset( # noqa: C901
config: dict[str, Any],
overwrite: bool = False,
@@@ -752,80 -721,15 +891,61 @@@
if dataset.id is None:
db.session.flush()
+ # A bundle can name a mapped column and still carry transforms on other
+ # columns; the editor's client-side guard never runs here. Left in place, a
+ # transform on an unmirrored column is invisible and still stored, ready to
+ # go live the moment the mapped column resolves back to it.
+ DatasetDAO.clear_unmapped_partition_transforms(dataset)
+
+ # And repair a reference the import itself broke: a `sync` deletion can
+ # remove the column `partition_column` names, which otherwise leaves the
+ # dataset failing `UpdateDatasetCommand`'s validation on every later edit --
+ # including a description-only PUT, which carries no columns payload and so
+ # cannot reach the forgiveness branch that tolerates a stored-only dangle.
+ #
+ # Flushed and expired first: the `sync` deletion is still pending here, and
+ # reading the relationship without flushing loads the removed rows back and
+ # un-deletes them.
+ db.session.flush()
+ db.session.expire(dataset, ["columns"])
+ DatasetDAO.clear_dangling_partition_mapping(
+ dataset, {column.column_name for column in dataset.columns}
+ )
+
+ # The same repair for the other reference a bundle can leave unsaveable. A
+ # dangling reference is not the only mapping `UpdateDatasetCommand` refuses:
+ # an *explicit* self-mapping -- `partition_mapped_column` equal to
+ # `partition_column` -- is blocking there too. A bundle setting both to
+ # `event_time` imported happily and then failed every later edit, including
+ # a description-only PUT, until someone repaired the mapping by hand.
+ #
+ # Cleared rather than refused, which is the bargain the rest of this
+ # function strikes: a bundle is imported as a whole, and failing someone's
+ # dataset over one unusable reference is the worse trade. Dropping only the
+ # override leaves the mapping following `main_dttm_col`, which is the state
+ # a bundle that simply omitted the field would have produced.
+ if (
+ dataset.partition_mapped_column
+ and dataset.partition_mapped_column == dataset.partition_column
+ ):
+ logger.warning(
+ "Clearing the partition mapped column on %s (dataset %s) during "
+ "import: it names the partition column itself, which no later save "
+ "would accept",
+ config.get("table_name"),
+ config.get("uuid"),
+ )
+ dataset.partition_mapped_column = None
+
if not ignore_permissions:
+ # Object-level access to the dataset itself (editor/owner, #20382). A
+ # change to the table binding this dataset points at was authorized
+ # before the row was mutated, in ``_raise_for_import_binding_access``
+ # above.
try:
security_manager.raise_for_access(datasource=dataset)
- # For virtual datasets, also validate access to the tables the
- # SQL references, matching the create and update commands.
- if dataset.sql:
- security_manager.raise_for_access(
- database=dataset.database,
- sql=dataset.sql,
- # Empty strings would qualify table names against a
- # nonexistent catalog/schema, so they are normalized to
- # None to let the check fall back to the defaults.
- catalog=dataset.catalog or None,
- schema=dataset.schema or None,
- # Jinja-templated SQL only reveals the tables it really
- # references once the params are applied, so they are
- # forwarded rather than left to default to empty.
- template_params=_get_template_params(dataset),
- )
except SupersetSecurityException as ex:
raise DatasetAccessDeniedError() from ex
- # SQL that can't be parsed or rendered can't be access-checked, so fail
- # closed, but as an invalid payload (422) rather than an access denial
- # or a server error.
- except SupersetParseError as ex:
- raise IncorrectFormatError(f"Invalid SQL: {ex.error.message}") from ex
- except TemplateError as ex:
- raise IncorrectFormatError(f"Invalid SQL: {ex}") from ex
# `has_table` opens a live connection to the target database to run a
# schema-introspection query. Its result is only ever consulted below to
diff --cc superset/translations/ar/LC_MESSAGES/messages.po
index ee47f1ce240,b6e5f76c563..29d718130e7
--- a/superset/translations/ar/LC_MESSAGES/messages.po
+++ b/superset/translations/ar/LC_MESSAGES/messages.po
@@@ -24,7 -24,7 +24,7 @@@ msgid "
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2024-07-14 15:10+0300\n"
"Last-Translator: Abdalrahim G. Fakhouri <ab...@yahoo.com>\n"
"Language: ar\n"
@@@ -243,6 -243,6 +243,13 @@@ msgstr "النسبة المئوية م�
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1340,52 -1284,12 +1347,58 @@@ msgstr "سيتم إنشاء مخطط ج
msgid "A new dashboard will be created."
msgstr "سيتم إنشاء لوحة معلومات جديدة."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4189,6 -4069,6 +4205,10 @@@ msgstr "عنوان الرسم البي�
msgid "Chart type"
msgstr "عنوان الرسم البياني"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "تعذر حذف المخططات."
@@@ -5903,6 -5781,6 +5929,10 @@@ msgstr "عنوان لوحة المعل�
msgid "Dashboard updated %s"
msgstr "آخر تحديث %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "استخدام لوحة القيادة"
@@@ -6156,6 -6034,6 +6186,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "مخطط مجموعة البيانات غير صالح، بسبب ما يلي: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15525,6 -15330,6 +15607,12 @@@ msgstr "العروض الدلالية
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "طبقة التعليقات التوضيحية"
@@@ -17187,6 -16996,6 +17284,9 @@@ msgstr "
msgid "Template parameters"
msgstr "معايير القالب"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "خطأ: %(error)s"
@@@ -17976,15 -17775,9 +18076,18 @@@ msgstr[3] "المعاملات التا�
msgstr[4] "المعاملات التالية في استعلامك غير معرّفة: %(parameters)s."
msgstr[5] "المعاملات التالية في استعلامك غير معرّفة: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "كلمة المرور المقدمة لاسم المستخدم \"%(username)s\" غير صحيحة."
@@@ -19878,9 -19610,9 +19991,12 @@@ msgstr[5] "
msgid "Token Request URI"
msgstr "عنوان URI لطلب الرمز"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/ca/LC_MESSAGES/messages.po
index 65f65079349,f5a2c17bb90..ff4965105d6
--- a/superset/translations/ca/LC_MESSAGES/messages.po
+++ b/superset/translations/ca/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2025-06-27 12:56+0200\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: ca\n"
@@@ -236,6 -236,6 +236,13 @@@ msgstr "%% del total
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1203,52 -1147,12 +1210,58 @@@ msgstr "Es crearà un nou gràfic.
msgid "A new dashboard will be created."
msgstr "Es crearà un nou dashboard."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4018,6 -3898,6 +4034,10 @@@ msgstr "Títol del gràfic
msgid "Chart type"
msgstr "Títol del gràfic"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Els gràfics no s'han pogut eliminar."
@@@ -5684,6 -5562,6 +5710,10 @@@ msgstr "Títol del dashboard
msgid "Dashboard updated %s"
msgstr "Última Actualització %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Ús del dashboard"
@@@ -5934,6 -5812,6 +5964,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "L'esquema del conjunt de dades és invàlid, causat per: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15010,6 -14815,6 +15092,12 @@@ msgstr "Vistes semàntiques
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Capa d'anotació"
@@@ -16653,6 -16462,6 +16750,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Paràmetres de plantilla"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "Error d'anàlisi: %(error)s"
@@@ -17419,15 -17218,9 +17519,18 @@@ msgstr[1] "
"Els següents paràmetres a la teva consulta no estan definits: "
"%(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "La contrasenya proporcionada per l'usuari \"%(username)s\" és incorrecta."
@@@ -19304,9 -19036,9 +19417,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI de sol·licitud de testimoni"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/cs/LC_MESSAGES/messages.po
index 043b5a7287f,755851cf650..d8a8f76990c
--- a/superset/translations/cs/LC_MESSAGES/messages.po
+++ b/superset/translations/cs/LC_MESSAGES/messages.po
@@@ -18,7 -18,7 +18,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2016-05-02 08:49-0700\n"
"Last-Translator: Jan Šmejkal <ja...@orgis.cz>\n"
"Language: cs\n"
@@@ -226,6 -226,6 +226,13 @@@ msgstr "% z celku
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1209,52 -1153,12 +1216,58 @@@ msgstr "Bude vytvořen nový graf.
msgid "A new dashboard will be created."
msgstr "Bude vytvořena nová nástěnka."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3902,6 -3782,6 +3918,10 @@@ msgstr "Název grafu
msgid "Chart type"
msgstr "Typ grafu"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Graf byl uložen, ale se nepodařilo přidat do vybraného panelu."
@@@ -5498,6 -5376,6 +5524,10 @@@ msgstr "Název nástěnky
msgid "Dashboard updated %s"
msgstr "Naposledy aktualizováno %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Použití nástěnky"
@@@ -5745,6 -5623,6 +5775,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Schéma sady dat je neplatné, způsobeno: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14555,6 -14360,6 +14637,12 @@@ msgstr "Sémantické pohledy
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Vrstva anotací"
@@@ -16127,6 -15936,6 +16224,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parametry šablony"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "Chyba při vykonání šablony: %(error)s"
@@@ -16854,15 -16653,9 +16954,18 @@@ msgstr[0] "Parametr %(parameters)s ve v
msgstr[1] "Následující parametry ve vašem dotazu nejsou definovány: %(parameters)s."
msgstr[2] "Následující parametry ve vašem dotazu nejsou definovány: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Zadané heslo pro uživatelské jméno „%(username)s“ je nesprávné."
@@@ -18652,9 -18384,9 +18765,12 @@@ msgstr[2] "
msgid "Token Request URI"
msgstr "URI žádosti o token"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/de/LC_MESSAGES/messages.po
index d020ea90738,9ce7efe11fb..f1eed936cc2
--- a/superset/translations/de/LC_MESSAGES/messages.po
+++ b/superset/translations/de/LC_MESSAGES/messages.po
@@@ -18,7 -18,7 +18,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2023-04-07 19:45+0200\n"
"Last-Translator: Holger Bruch <ho...@wattbewerb.de>\n"
"Language: de\n"
@@@ -219,6 -219,6 +219,13 @@@ msgstr "% von Gesamtsumme
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1166,52 -1110,12 +1173,58 @@@ msgstr "Es wird ein neues Diagramm erst
msgid "A new dashboard will be created."
msgstr "Es wird ein neues Dashboard erstellt."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3841,6 -3721,6 +3857,10 @@@ msgstr "Diagrammtitel
msgid "Chart type"
msgstr "Diagrammtyp"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr ""
"Das Diagramm wurde gespeichert, konnte jedoch nicht zur ausgewählten "
@@@ -5424,6 -5302,6 +5450,10 @@@ msgstr "Dashboard Titel
msgid "Dashboard updated %s"
msgstr "Dashboard aktualisiert %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Dashboard-Nutzung"
@@@ -5666,6 -5544,6 +5696,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Das Datensatzschema ist ungültig, verursacht durch: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14199,6 -14004,6 +14281,12 @@@ msgstr "Semantische Sichten
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Semantische Schicht"
@@@ -15707,6 -15516,6 +15804,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Vorlagen-Parameter"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "Fehler bei der Verarbeitung der Vorlage: %(error)s"
@@@ -16464,15 -16263,9 +16564,18 @@@ msgstr[1] "
"Die folgenden Parameter in Ihrer Abfrage sind nicht definiert: "
"%(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Das für den Anmeldenamen \"%(username)s\" angegebene Kennwort ist falsch."
@@@ -18287,9 -18019,9 +18400,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI für die Token-Anfrage"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/en/LC_MESSAGES/messages.po
index c21c6ad6a6c,8ed5a76104a..aaad85a7dd1
--- a/superset/translations/en/LC_MESSAGES/messages.po
+++ b/superset/translations/en/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2016-05-02 08:49-0700\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: en\n"
@@@ -195,6 -195,6 +195,13 @@@ msgstr "
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1080,52 -1024,12 +1087,58 @@@ msgstr "
msgid "A new dashboard will be created."
msgstr ""
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3531,6 -3411,6 +3547,10 @@@ msgstr "
msgid "Chart type"
msgstr ""
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr ""
@@@ -5003,6 -4881,6 +5029,10 @@@ msgstr "
msgid "Dashboard updated %s"
msgstr ""
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr ""
@@@ -5227,6 -5105,6 +5257,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr ""
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -13266,6 -13071,6 +13348,12 @@@ msgstr "
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr ""
@@@ -14681,6 -14490,6 +14778,9 @@@ msgstr "
msgid "Template parameters"
msgstr ""
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr ""
@@@ -15286,15 -15085,9 +15386,18 @@@ msgid_plural "The following parameters
msgstr[0] ""
msgstr[1] ""
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr ""
@@@ -16842,9 -16574,9 +16955,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr ""
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
#, python-format
msgid ""
"Too many sub-slices requested. The maximum allowed is %(max)s, but "
diff --cc superset/translations/es/LC_MESSAGES/messages.po
index 12595c8e51a,4f2045017e6..3e49b26e99c
--- a/superset/translations/es/LC_MESSAGES/messages.po
+++ b/superset/translations/es/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2016-05-02 08:49-0700\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: es\n"
@@@ -231,6 -231,6 +231,13 @@@ msgstr "% del total
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1189,52 -1133,12 +1196,58 @@@ msgstr "Se creará un nuevo gráfico.
msgid "A new dashboard will be created."
msgstr "Se creará un nuevo panel de control."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3974,6 -3854,6 +3990,10 @@@ msgstr "Título del gráfico
msgid "Chart type"
msgstr "Título del gráfico"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "No se han podido eliminar los gráficos."
@@@ -5627,6 -5505,6 +5653,10 @@@ msgstr "Titulo del panel de control
msgid "Dashboard updated %s"
msgstr "Última actualización %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Uso del panel de control"
@@@ -5872,6 -5750,6 +5902,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "El esquema del conjunto de datos no es válido, debido a: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14895,6 -14700,6 +14977,12 @@@ msgstr "Vistas semánticas
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Capa semántica"
@@@ -16512,6 -16321,6 +16609,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parámetros de plantilla"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "Error de análisis: %(error)s"
@@@ -17292,15 -17091,9 +17392,18 @@@ msgstr[1] "
"Los siguientes parámetros de tu consulta no están definidos: "
"%(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr ""
@@@ -19191,9 -18923,9 +19304,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI de solicitud de token"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/fa/LC_MESSAGES/messages.po
index 8004cf4ed6c,7463e743207..da4deda75d5
--- a/superset/translations/fa/LC_MESSAGES/messages.po
+++ b/superset/translations/fa/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2024-10-20 00:07+0330\n"
"Last-Translator: Emad Rad <co...@gmail.com>\n"
"Language: fa\n"
@@@ -232,6 -232,6 +232,13 @@@ msgstr "% از کل
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1215,52 -1159,12 +1222,58 @@@ msgstr "یک نمودار جدید ای
msgid "A new dashboard will be created."
msgstr "یک داشبورد جدید ایجاد خواهد شد."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4015,6 -3895,6 +4031,10 @@@ msgstr "عنوان نمودار
msgid "Chart type"
msgstr "عنوان نمودار"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "نمودارها نمیتوانند حذف شوند."
@@@ -5703,6 -5581,6 +5729,10 @@@ msgstr "عنوان داشبورد
msgid "Dashboard updated %s"
msgstr "آخرین بروزرسانی %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "استفاده از داشبورد"
@@@ -5950,6 -5828,6 +5980,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "طرح داده نادرست است، به دلیل: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15107,6 -14912,6 +15189,12 @@@ msgstr "نماهای معنایی
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "لایه توضیحی"
@@@ -16762,6 -16571,6 +16859,9 @@@ msgstr "
msgid "Template parameters"
msgstr "پارامترهای الگو"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "خطای تجزیه: %(error)s"
@@@ -17524,15 -17323,9 +17624,18 @@@ msgid_plural "The following parameters
msgstr[0] "پارامتر %(parameters)s در پرسش شما تعریف نشده است."
msgstr[1] "پارامترهای زیر در پرسش شما تعریف نشدهاند: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "رمز عبور ارائه شده برای نام کاربری \"%(username)s\" نادرست است."
@@@ -19410,9 -19142,9 +19523,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI درخواست توکن"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/fi/LC_MESSAGES/messages.po
index cd6614716ff,b9816ea387e..ae0e8c5df9a
--- a/superset/translations/fi/LC_MESSAGES/messages.po
+++ b/superset/translations/fi/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: fi\n"
@@@ -288,6 -288,6 +288,13 @@@ msgstr "% kokonaismäärästä
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1672,52 -1616,12 +1679,58 @@@ msgstr "Uusi kaavio luodaan.
msgid "A new dashboard will be created."
msgstr "Uusi koontinäyttö luodaan."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -6086,6 -5966,6 +6102,10 @@@ msgstr "Kaavion otsikko
msgid "Chart type"
msgstr "Kaavion tyyppi"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ja, lv,
# ru, uk]
#, fuzzy
@@@ -8717,6 -8595,6 +8743,10 @@@ msgstr "Kojelautan otsikko
msgid "Dashboard updated %s"
msgstr "Päivitetty viimeksi %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk]
#, fuzzy
@@@ -9168,6 -9046,6 +9198,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Tietojoukon rakenne on virheellinen, syy: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -23576,6 -23381,6 +23658,12 @@@ msgstr "Semanttiset näkymät
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, it, ja, ko, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh,
# zh_TW]
@@@ -26157,6 -25966,6 +26254,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Malliparametrit"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja, lv, ru,
# uk]
#, fuzzy, python-format
@@@ -27202,15 -27001,9 +27302,18 @@@ msgid_plural "The following parameters
msgstr[0] "Parametri %(parameters)s kyselyssäsi on määrittelemätön."
msgstr[1] "Seuraavat parametrit kyselyssäsi ovat määrittelemättömiä: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
#, fuzzy, python-format
@@@ -29797,9 -29529,9 +29910,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "Tunnuspyyntö-URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/fr/LC_MESSAGES/messages.po
index 2ef8f79be83,c6143367d34..215a9f0553e
--- a/superset/translations/fr/LC_MESSAGES/messages.po
+++ b/superset/translations/fr/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2025-06-26 15:34+0200\n"
"Last-Translator: \n"
"Language: fr\n"
@@@ -233,6 -233,6 +233,13 @@@ msgstr "% du total
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr "%(alertType)s « %(alertName)s » déclenché avec succès"
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1188,52 -1132,12 +1195,58 @@@ msgstr "Un nouveau graphique va être c
msgid "A new dashboard will be created."
msgstr "Un nouveau tableau de bord va être créé."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3906,6 -3786,6 +3922,10 @@@ msgstr "Titre du graphique
msgid "Chart type"
msgstr "Type de graphique"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr ""
"Le graphique a été enregistré mais n'a pu être ajouté à l'knglet "
@@@ -5505,6 -5383,6 +5531,10 @@@ msgstr "Titre du tableau de bord
msgid "Dashboard updated %s"
msgstr "Tableau de bord mis à jour %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Utilisation du tableau de bord"
@@@ -5746,6 -5624,6 +5776,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Le schéma du jeu de données n'est pas valide : %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14438,6 -14243,6 +14520,12 @@@ msgstr "Vues sémantiques
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Couche sémantique"
@@@ -15985,6 -15794,6 +16082,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Paramètres du modèle"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "Erreur lors du traitement du modèle : %(error)s"
@@@ -16756,15 -16555,9 +16856,18 @@@ msgid_plural "The following parameters
msgstr[0] "Le paramètre %(parameters)s de votre requête est indéfini."
msgstr[1] "Les paramètres suivants de votre requête sont indéfinis : %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Le mot de passe fourni pour l'utilisateur « %(username)s » est incorrect."
@@@ -18620,9 -18352,9 +18733,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URL de requête du Token"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, python-format
msgid ""
diff --cc superset/translations/it/LC_MESSAGES/messages.po
index 6ff3927bb23,7630b72edce..6a2c66da0bd
--- a/superset/translations/it/LC_MESSAGES/messages.po
+++ b/superset/translations/it/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2018-02-11 22:26+0200\n"
"Last-Translator: Raffaele Spangaro <ra...@raffaelespangaro.it>\n"
"Language: it\n"
@@@ -246,6 -246,6 +246,13 @@@ msgstr "% del totale
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr "%(alertType)s \"%(alertName)s\" attivato con successo"
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1421,52 -1365,12 +1428,58 @@@ msgstr "Sarà creato un nuovo grafico.
msgid "A new dashboard will be created."
msgstr "Una nuova dashboard sarà creata."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4668,6 -4548,6 +4684,10 @@@ msgstr "Titolo grafico
msgid "Chart type"
msgstr "Tipo grafico"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Il grafico è stato salvato ma non può essere aggiunto al tab selezionato."
@@@ -6677,6 -6555,6 +6703,10 @@@ msgstr "Titolo dashboard
msgid "Dashboard updated %s"
msgstr "Dashboard aggiornata %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Utilizzo dashboard"
@@@ -6962,6 -6840,6 +6992,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Lo schema del set di dati non è valido, causato da: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -17764,6 -17569,6 +17846,12 @@@ msgstr "Viste semantiche
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Livello semantico"
@@@ -19676,6 -19485,6 +19773,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parametri template"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, ja, lv,
# ro, ru, sr, sr_Latn, uk]
#, python-format
@@@ -20593,15 -20392,9 +20693,18 @@@ msgid_plural "The following parameters
msgstr[0] "Il parametro %(parameters)s nella query non è definito."
msgstr[1] "I seguenti parametri nella query non sono definiti: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr,
# uk, zh, zh_TW]
@@@ -22820,9 -22552,9 +22933,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI Richiesta Token"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, python-format
msgid ""
diff --cc superset/translations/ja/LC_MESSAGES/messages.po
index cf88c839cb0,3026d80971c..7452d7fdf7c
--- a/superset/translations/ja/LC_MESSAGES/messages.po
+++ b/superset/translations/ja/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2024-05-14 13:30+0900\n"
"Last-Translator: Yuri Umezaki <bu...@gmail.com>\n"
"Language: ja\n"
@@@ -209,6 -209,6 +209,13 @@@ msgstr "合計に対する %
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr "%(alertType)s 「%(alertName)s」が正常に実行されました"
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1091,52 -1035,12 +1098,58 @@@ msgstr "新しいチャートが作成�
msgid "A new dashboard will be created."
msgstr "新しいダッシュボードが作成されます。"
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3557,6 -3437,6 +3573,10 @@@ msgstr "チャートタイトル
msgid "Chart type"
msgstr "チャート種類"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr "チャートは保存されましたが、選択したタブに追加できませんでした。"
@@@ -5031,6 -4909,6 +5057,10 @@@ msgstr "ダッシュボードタイト�
msgid "Dashboard updated %s"
msgstr "ダッシュボードが更新されました %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "ダッシュボードの利用状況"
@@@ -5255,6 -5133,6 +5285,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "データセットスキーマが無効です。原因: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -13296,6 -13101,6 +13378,12 @@@ msgstr "セマンティックビュー
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "セマンティックレイヤー"
@@@ -14715,6 -14524,6 +14812,9 @@@ msgstr "
msgid "Template parameters"
msgstr "テンプレートパラメータ"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "テンプレート処理エラー: %(error)s"
@@@ -15349,15 -15148,9 +15449,18 @@@ msgid "The parameter %(parameters)s in
msgid_plural "The following parameters in your query are undefined: %(parameters)s."
msgstr[0] "クエリ内のパラメータ %(parameters)s が定義されていません。"
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "ユーザー「%(username)s」のパスワードが正しくありません。"
@@@ -16925,9 -16657,9 +17038,12 @@@ msgstr[0] "
msgid "Token Request URI"
msgstr "トークンリクエスト URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
#, python-format
msgid ""
"Too many sub-slices requested. The maximum allowed is %(max)s, but "
diff --cc superset/translations/ko/LC_MESSAGES/messages.po
index 62064d3a424,2c995306ef8..ff704b7f110
--- a/superset/translations/ko/LC_MESSAGES/messages.po
+++ b/superset/translations/ko/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2019-02-02 22:28+0900\n"
"Last-Translator: \n"
"Language: ko\n"
@@@ -265,6 -265,6 +265,13 @@@ msgstr "컬럼 보기
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1529,52 -1473,12 +1536,58 @@@ msgstr "차트를 생성할 수 없습�
msgid "A new dashboard will be created."
msgstr "대시보드를 생성할 수 없습니다."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -5440,6 -5320,6 +5456,10 @@@ msgstr "차트 유형
msgid "Chart type"
msgstr "차트 유형"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "차트를 삭제할 수 없습니다."
@@@ -7792,6 -7670,6 +7818,10 @@@ msgstr "대시보드
msgid "Dashboard updated %s"
msgstr ""
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Dashboard usage"
msgstr "대시보드"
@@@ -8141,6 -8019,6 +8171,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "데이터셋 스키마가 유효하지 않습니다. 원인: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -21261,6 -21066,6 +21343,12 @@@ msgstr "시맨틱 뷰
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "주석 레이어"
@@@ -23576,6 -23385,6 +23673,9 @@@ msgstr "
msgid "Template parameters"
msgstr "템플릿 매개변수"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "부적절한 요청입니다 : %(error)s"
@@@ -24573,15 -24372,9 +24673,18 @@@ msgid "The parameter %(parameters)s in
msgid_plural "The following parameters in your query are undefined: %(parameters)s."
msgstr[0] "쿼리에서 다음 매개변수가 정의되지 않았습니다: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr,
# uk, zh, zh_TW]
@@@ -27026,9 -26758,9 +27139,12 @@@ msgstr[0] "
msgid "Token Request URI"
msgstr "토큰 요청 URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/lv/LC_MESSAGES/messages.po
index 84caf267be4,165e565458f..05c24dae144
--- a/superset/translations/lv/LC_MESSAGES/messages.po
+++ b/superset/translations/lv/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-03-27 14:01+0200\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: lv\n"
@@@ -231,6 -231,6 +231,13 @@@ msgstr "% no kopējā
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1208,52 -1152,12 +1215,58 @@@ msgstr "Tiks izveidota jauna diagramma.
msgid "A new dashboard will be created."
msgstr "Tiks izveidots jauns infopanelis."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3866,6 -3746,6 +3882,10 @@@ msgstr "Diagrammas virsraksts
msgid "Chart type"
msgstr "Diagrammas veids"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Diagramma tika saglabāta, bet to nevarēja pievienot izvēlētajai cilnei."
@@@ -5438,6 -5316,6 +5464,10 @@@ msgstr "Infopaneļa virsraksts
msgid "Dashboard updated %s"
msgstr "Pēdējo reizi atjaunināts %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Informācijas paneļa lietojums"
@@@ -5683,6 -5561,6 +5713,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Datu kopas shēma ir nederīga, iemesls: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14276,6 -14081,6 +14358,12 @@@ msgstr "Semantiskie skati
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Anotāciju slānis"
@@@ -15820,6 -15629,6 +15917,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Veidnes parametri"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "Veidnes apstrādes kļūda: %(error)s"
@@@ -16546,15 -16345,9 +16646,18 @@@ msgstr[0] "Parametrs %(parameters)s jū
msgstr[1] "Sekojoši parametri jūsu vaicājumā nav definēti: %(parameters)s."
msgstr[2] "Sekojoši parametri jūsu vaicājumā nav definēti: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Parole lietotājvārdam \"%(username)s\" ir nepareiza."
@@@ -18316,9 -18048,9 +18429,12 @@@ msgstr[2] "
msgid "Token Request URI"
msgstr "Talona pieprasījuma URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/messages.pot
index f4960aab1f6,5d7efef10fe..36b95c11970
--- a/superset/translations/messages.pot
+++ b/superset/translations/messages.pot
@@@ -25,7 -25,7 +25,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-15 17:43+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language-Team: LANGUAGE <LL...@li.org>\n"
@@@ -12481,6 -12308,12 +12500,10 @@@ msgstr "
msgid "Semantic cache"
msgstr ""
+ #, python-format
-msgid ""
-"Semantic dimension '%(name)s' has ambiguous variants for grain '%(grain)s'. "
-"Use one dimension per name and grain."
++msgid "Semantic dimension '%(name)s' has ambiguous variants for grain '%(grain)s'. Use one dimension per name and grain."
+ msgstr ""
+
msgid "Semantic layer"
msgstr ""
diff --cc superset/translations/mi/LC_MESSAGES/messages.po
index a23d6be97a5,e444b49c11b..24d751f70ee
--- a/superset/translations/mi/LC_MESSAGES/messages.po
+++ b/superset/translations/mi/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-01-25 16:09+1300\n"
"Last-Translator: karo.co.nz\n"
"Language: mi\n"
@@@ -240,6 -240,6 +240,13 @@@ msgstr "% o te katoa
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1207,52 -1151,12 +1214,58 @@@ msgstr "Ka hangaia he kauwhata hou.
msgid "A new dashboard will be created."
msgstr "Ka hangaia he papatohu hou."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3992,6 -3872,6 +4008,10 @@@ msgstr "Taitara kauwhata
msgid "Chart type"
msgstr "Taitara kauwhata"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Kāore i taea te muku i ngā kauwhata."
@@@ -5642,6 -5520,6 +5668,10 @@@ msgstr "Taitara papatohu
msgid "Dashboard updated %s"
msgstr "I Whakahouhia Whakamutunga %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Whakamahinga papatohu"
@@@ -5891,6 -5769,6 +5921,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "He muhu te hanga rārangi raraunga, nā: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14936,6 -14741,6 +15018,12 @@@ msgstr "Ngā Tirohanga Tikanga
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Papa tohu"
@@@ -16572,6 -16381,6 +16669,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Tawhā tauira"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr ""
@@@ -17324,15 -17123,9 +17424,18 @@@ msgid_plural "The following parameters
msgstr[0] "Kāore i tautuhia te tawhā %(parameters)s i tō pātai."
msgstr[1] "Kāore i tautuhia ēnei tawhā i tō pātai: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "He hē te kupuhipa kua tukuna mō te ingoa kaiwhakamahi \"%(username)s\"."
@@@ -19203,9 -18935,9 +19316,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI Tono Mōkihi"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/nl/LC_MESSAGES/messages.po
index 6a9db8023e8,3d46be017b2..0d18bc03e80
--- a/superset/translations/nl/LC_MESSAGES/messages.po
+++ b/superset/translations/nl/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
msgstr ""
"Project-Id-Version: superset-ds\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2024-05-08 14:41+0000\n"
"Last-Translator: \n"
"Language: nl\n"
@@@ -248,6 -248,6 +248,13 @@@ msgstr "Toon Totaal
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1219,52 -1163,12 +1226,58 @@@ msgstr "Er zal een nieuwe grafiek worde
msgid "A new dashboard will be created."
msgstr "Er zal een nieuw dashboard worden aangemaakt."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4101,6 -3981,6 +4117,10 @@@ msgstr "Titel grafiek
msgid "Chart type"
msgstr "Titel grafiek"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Grafieken konden niet worden verwijderd."
@@@ -5830,6 -5708,6 +5856,10 @@@ msgstr "Dashboard titel
msgid "Dashboard updated %s"
msgstr "Laatst bijgewerkt %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Dashboard gebruik"
@@@ -6088,6 -5966,6 +6118,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Dataset schema is ongeldig, veroorzaakt door: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15427,6 -15232,6 +15509,12 @@@ msgstr "Semantische weergaven
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Aantekeningenlaag"
@@@ -17094,6 -16903,6 +17191,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Sjabloon parameters"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "Fout: %(error)s"
@@@ -17917,15 -17716,9 +18017,18 @@@ msgstr[1] "
"De volgende parameters in uw zoekopdracht zijn ongedefinieerd: "
"%(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Het opgegeven wachtwoord voor gebruikersnaam “%(username)s” is onjuist."
@@@ -19857,9 -19589,9 +19970,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "Token-aanvraag-URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/pl/LC_MESSAGES/messages.po
index e8e1881aaa6,64a124a07dc..d95f49d39bb
--- a/superset/translations/pl/LC_MESSAGES/messages.po
+++ b/superset/translations/pl/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2021-11-16 17:33+0100\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: fr\n"
@@@ -249,6 -249,6 +249,13 @@@ msgstr "Pokaż całkowitą wartość
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1252,52 -1196,12 +1259,58 @@@ msgstr "Zostanie utworzony nowy wykres.
msgid "A new dashboard will be created."
msgstr "Zostanie utworzony nowy panel kontrolny."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4114,6 -3994,6 +4130,10 @@@ msgstr "Tytuł wykresu
msgid "Chart type"
msgstr "Tytuł wykresu"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Nie można usunąć wykresów."
@@@ -5898,6 -5776,6 +5924,10 @@@ msgstr "Tytuł pulpitu nawigacyjnego
msgid "Dashboard updated %s"
msgstr "Ostatnia aktualizacja %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Dashboard usage"
msgstr "Użycie pulpitu nawigacyjnego"
@@@ -6162,6 -6040,6 +6192,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Schemat zestawu danych jest nieprawidłowy: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15691,6 -15496,6 +15773,12 @@@ msgstr "Widoki semantyczne
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Warstwa adnotacji"
@@@ -17445,6 -17254,6 +17542,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parametry szablonu"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "Błąd parsowania: %(error)s"
@@@ -18240,15 -18039,9 +18340,18 @@@ msgstr[1] "
"Następujące parametry w twoim zapytaniu są niezdefiniowane: "
"%(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Podane hasło dla użytkownika „%(username)s” jest nieprawidłowe."
@@@ -20184,9 -19916,9 +20297,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI żądania tokenu"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/pt/LC_MESSAGES/messages.po
index c319c5873d7,da9883c79be..181250a6e82
--- a/superset/translations/pt/LC_MESSAGES/messages.po
+++ b/superset/translations/pt/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-07-17 14:21+0000\n"
"Last-Translator: José Teixeira <jo...@douroeci.com>\n"
"Language: pt\n"
@@@ -263,6 -263,6 +263,13 @@@ msgstr "porcentagem do total
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr "%(alertType)s \"%(alertName)s\" ativado com sucesso"
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1473,52 -1417,12 +1480,58 @@@ msgstr "Um novo gráfico será criado.
msgid "A new dashboard will be created."
msgstr "Um novo painel será criado."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4887,6 -4767,6 +4903,10 @@@ msgstr "Título do gráfico
msgid "Chart type"
msgstr "Tipo de gráfico"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr "O gráfico foi salvo, mas não pôde ser adicionado à guia selecionada."
@@@ -6885,6 -6763,6 +6911,10 @@@ msgstr "Título do painel
msgid "Dashboard updated %s"
msgstr "Painel atualizado%s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Uso do painel"
@@@ -7174,6 -7052,6 +7204,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Esquema do conjunto de dados inválido, causado por: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -18384,6 -18189,6 +18466,12 @@@ msgstr "Visualizações Semânticas
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Camada semântica"
@@@ -20385,6 -20194,6 +20482,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parâmetros do Modelo"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, ja, lv,
# ro, ru, sr, sr_Latn, uk]
#, python-format
@@@ -21311,15 -21110,9 +21411,18 @@@ msgstr[1] "
"Os seguintes parâmetros na sua consulta não estão definidos: "
"%(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr,
# uk, zh, zh_TW]
@@@ -23516,9 -23248,9 +23629,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI de solicitação de token"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, python-format
msgid ""
diff --cc superset/translations/pt_BR/LC_MESSAGES/messages.po
index 8ff507a75e4,679f9d38e99..bb025b0984c
--- a/superset/translations/pt_BR/LC_MESSAGES/messages.po
+++ b/superset/translations/pt_BR/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2023-05-22 08:04-0400\n"
"Last-Translator: \n"
"Language: pt_BR\n"
@@@ -233,6 -233,6 +233,13 @@@ msgstr "porcentagem do total
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr "%(alertType)s \"%(alertName)s\" ativado com sucesso"
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1208,52 -1152,12 +1215,58 @@@ msgstr "Um novo gráfico será criado.
msgid "A new dashboard will be created."
msgstr "Um novo painel será criado."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4086,6 -3966,6 +4102,10 @@@ msgstr "Título do gráfico
msgid "Chart type"
msgstr "Tipo de gráfico"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "O gráfico foi salvo, mas não pôde ser adicionado à guia selecionada."
@@@ -5843,6 -5721,6 +5869,10 @@@ msgstr "Título do painel
msgid "Dashboard updated %s"
msgstr "Painel atualizado%s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Uso do painel"
@@@ -6102,6 -5980,6 +6132,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Esquema do conjunto de dados inválido, causado por: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15571,6 -15376,6 +15653,12 @@@ msgstr "Visualizações Semânticas
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Camada semântica"
@@@ -17243,6 -17052,6 +17340,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parâmetros do Modelo"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "Erro de processamento do modelo:%(error)s"
@@@ -18053,15 -17852,9 +18153,18 @@@ msgid_plural "The following parameters
msgstr[0] "O parâmetro %(parameters)s em sua consulta é indefinido."
msgstr[1] ""
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "A senha fornecida para o nome de usuário \"%(username)s\" está incorreta."
@@@ -19962,9 -19694,9 +20075,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "URI de solicitação de token"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/ro/LC_MESSAGES/messages.po
index ac463bb2df4,f14bd8a2fcf..7d442fd940e
--- a/superset/translations/ro/LC_MESSAGES/messages.po
+++ b/superset/translations/ro/LC_MESSAGES/messages.po
@@@ -22,7 -22,7 +22,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: ro\n"
@@@ -234,6 -234,6 +234,13 @@@ msgstr "Afișează total
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1266,52 -1210,12 +1273,58 @@@ msgstr "Un grafic nou va fi creat.
msgid "A new dashboard will be created."
msgstr "Un panou de control va fi creat."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4080,6 -3960,6 +4096,10 @@@ msgstr "Titlu grafic
msgid "Chart type"
msgstr "Tip grafic"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, fr, it,
# ja, lv, ru, sr, sr_Latn, uk]
#, fuzzy
@@@ -5760,6 -5638,6 +5786,10 @@@ msgstr "Titlu panou de control
msgid "Dashboard updated %s"
msgstr "Tabloul de bord actualizat %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Utilizare panou de control"
@@@ -6019,6 -5897,6 +6049,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Schema setului de date este invalidă, cauzată de: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15186,6 -14991,6 +15268,12 @@@ msgstr "Vizualizări semantice
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, it, ja,
# sr, sr_Latn]
#, fuzzy
@@@ -16842,6 -16651,6 +16939,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parametri șablon"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "Eroare procesare șablon: %(error)s"
@@@ -17611,15 -17410,9 +17711,18 @@@ msgstr[0] "Parametrul %(parameters)s di
msgstr[1] "Următorii parametri din interogarea dvs. sunt nedefiniți: %(parameters)s."
msgstr[2] "Următorii parametri din interogarea dvs. sunt nedefiniți: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr ""
@@@ -19511,9 -19243,9 +19624,12 @@@ msgstr[2] "
msgid "Token Request URI"
msgstr "URI de solicitare a tokenului"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/ru/LC_MESSAGES/messages.po
index a8d945b617a,96fe7c9724f..1dc6d8df628
--- a/superset/translations/ru/LC_MESSAGES/messages.po
+++ b/superset/translations/ru/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-07-17 09:44+0100\n"
"Last-Translator: Daniel Checheta\n"
"Language: ru\n"
@@@ -223,6 -223,6 +223,13 @@@ msgstr "% итого
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1194,52 -1138,12 +1201,58 @@@ msgstr "Не удалось созда�
msgid "A new dashboard will be created."
msgstr "Новый дашборд будет создан"
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3810,6 -3690,6 +3826,10 @@@ msgstr "Заголовок диагра
msgid "Chart type"
msgstr "Тип диаграммы"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Диаграмма сохранена, но не может быть добавлена на выбранную вкладку."
@@@ -5355,6 -5233,6 +5381,10 @@@ msgstr "Название дашборд
msgid "Dashboard updated %s"
msgstr "Дата изменения %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Использование в дашбордах"
@@@ -5593,6 -5471,6 +5623,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Схема датасета невалидна, причина: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14036,6 -13841,6 +14118,12 @@@ msgstr "Представления ан
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Слой аннотаций"
@@@ -15535,6 -15344,6 +15632,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Параметры шаблона"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "Ошибка обработки шаблона: %(error)s"
@@@ -16247,15 -16046,9 +16347,18 @@@ msgstr[0] "Параметр %(parameter
msgstr[1] "Следующие параметры в запросе не определены: %(parameters)s"
msgstr[2] "Следующие параметры в запросе не определены: %(parameters)s"
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Неверный пароль для пользователя \"%(username)s\""
@@@ -18009,9 -17741,9 +18122,12 @@@ msgstr[2] "
msgid "Token Request URI"
msgstr "URI запроса токена"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
#, python-format
msgid ""
"Too many sub-slices requested. The maximum allowed is %(max)s, but "
diff --cc superset/translations/sk/LC_MESSAGES/messages.po
index 83c53aea78c,231bf2710a6..a50c233d15d
--- a/superset/translations/sk/LC_MESSAGES/messages.po
+++ b/superset/translations/sk/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-05-18 15:42+0200\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: sk\n"
@@@ -224,6 -224,6 +224,13 @@@ msgstr "% z celku
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1202,52 -1146,12 +1209,58 @@@ msgstr "Bude vytvorený nový graf.
msgid "A new dashboard will be created."
msgstr "Bude vytvorená nová nástenka."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3903,6 -3783,6 +3919,10 @@@ msgstr "Názov grafu
msgid "Chart type"
msgstr "Typ grafu"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Graf bol uložený, ale sa nepodarilo pridať do vybraného panela."
@@@ -5501,6 -5379,6 +5527,10 @@@ msgstr "Názov nástenky
msgid "Dashboard updated %s"
msgstr "Naposledy aktualizované %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Použití nástenky"
@@@ -5748,6 -5626,6 +5778,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Schéma sady dat je neplatné, spôsobené: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14554,6 -14359,6 +14636,12 @@@ msgstr "Sémantické pohľady
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Vrstva anotací"
@@@ -16126,6 -15935,6 +16223,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parametre šablony"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "Chyba pri vykonanie šablony: %(error)s"
@@@ -16858,15 -16657,9 +16958,18 @@@ msgstr[0] "Parameter %(parameters)s vo
msgstr[1] "Následující parametre vo vašom dotazu nesú definovány: %(parameters)s."
msgstr[2] "Následující parametre vo vašom dotazu nesú definovány: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Zadané heslo pre používateľské meno „%(username)s“ je nesprávné."
@@@ -18662,9 -18394,9 +18775,12 @@@ msgstr[2] "
msgid "Token Request URI"
msgstr "URI žádosti o token"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/sl/LC_MESSAGES/messages.po
index 63ab4c03b1c,db1459375de..22682581c66
--- a/superset/translations/sl/LC_MESSAGES/messages.po
+++ b/superset/translations/sl/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset\n"
"Report-Msgid-Bugs-To: dkrat7 @github.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-07-29 16:16+0200\n"
"Last-Translator: lapor-kris <la...@github.com>\n"
"Language: sl_SI\n"
@@@ -228,6 -228,6 +228,13 @@@ msgstr "% celote
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr "%(alertType)s »%(alertName)s« je bil uspešno sprožen"
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1240,52 -1184,12 +1247,58 @@@ msgstr "Ustvarjen bo nov grafikon.
msgid "A new dashboard will be created."
msgstr "Ustvarjena bo nova nadzorna plošča."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3918,6 -3798,6 +3934,10 @@@ msgstr "Naslov grafikona
msgid "Chart type"
msgstr "Vrsta grafikona"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr ""
"Grafikon je bil shranjen, vendar ga ni bilo mogoče dodati na izbrani "
@@@ -5511,6 -5389,6 +5537,10 @@@ msgstr "Ime nadzorne plošče
msgid "Dashboard updated %s"
msgstr "Nadzorna plošča posodobljena %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Uporaba nadzorne plošče"
@@@ -5750,6 -5628,6 +5780,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Shema podatkovnega seta ni veljavna, zaradi napake: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14441,6 -14246,6 +14523,12 @@@ msgstr "Semantični pogledi
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Semantična plast"
@@@ -15986,6 -15795,6 +16083,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parametri predlog"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "Napaka pri obdelavi predloge: %(error)s"
@@@ -16731,15 -16530,9 +16831,18 @@@ msgstr[1] "V vaši poizvedbi ni definir
msgstr[2] "V vaši poizvedbi ni definiranih naslednjih parametrov: %(parameters)s."
msgstr[3] "V vaši poizvedbi ni definiranih naslednjih parametrov: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Geslo za uporabniško ime \"%(username)s\" je napačno."
@@@ -18530,9 -18262,9 +18643,12 @@@ msgstr[3] "
msgid "Token Request URI"
msgstr "URI zahteve žetona"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, python-format
msgid ""
diff --cc superset/translations/sr/LC_MESSAGES/messages.po
index 446ddf5e441,54a752d1dfd..a4662d23bcb
--- a/superset/translations/sr/LC_MESSAGES/messages.po
+++ b/superset/translations/sr/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-06-14 13:20+0200\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: sr\n"
@@@ -251,6 -251,6 +251,13 @@@ msgstr "% од укупног
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1375,52 -1319,12 +1382,58 @@@ msgstr "Биће креиран нов�
msgid "A new dashboard will be created."
msgstr "Биће креирана нова контролна табла."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4608,6 -4488,6 +4624,10 @@@ msgstr "Наслов графикона
msgid "Chart type"
msgstr "Тип графикона"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
# ru, uk]
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Графикон је сачуван, али није могао бити додат на изабрану картицу."
@@@ -6519,6 -6397,6 +6545,10 @@@ msgstr "Наслов контролн�
msgid "Dashboard updated %s"
msgstr "Контролна табла ажурирана %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
# de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk]
msgid "Dashboard usage"
msgstr "Коришћење контролне табле"
@@@ -6840,6 -6718,6 +6870,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Шема скупа података није ваљана, узрок: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -17257,6 -17062,6 +17339,12 @@@ msgstr "Семантички погле
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Семантички слој"
@@@ -19096,6 -18905,6 +19193,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Параметри шаблона"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
# uk]
#, python-format
msgid "Template processing error: %(error)s"
@@@ -19917,15 -19716,9 +20017,18 @@@ msgstr[0] "Параметар %(paramet
msgstr[1] "Следећи параметри у вашем упиту нису дефинисани: %(parameters)s."
msgstr[2] "Следећи параметри у вашем упиту нису дефинисани: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
# de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
@@@ -21954,9 -21686,9 +22067,12 @@@ msgstr[2] "
msgid "Token Request URI"
msgstr "URI захтева за токен"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/sr_Latn/LC_MESSAGES/messages.po
index 813d49c1130,17242d9effb..2d37ba9e825
--- a/superset/translations/sr_Latn/LC_MESSAGES/messages.po
+++ b/superset/translations/sr_Latn/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-06-14 13:20+0200\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: sr_Latn\n"
@@@ -251,6 -251,6 +251,13 @@@ msgstr "% od ukupnog
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1375,52 -1319,12 +1382,58 @@@ msgstr "Biće kreiran novi grafikon.
msgid "A new dashboard will be created."
msgstr "Biće kreirana nova kontrolna tabla."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4611,6 -4491,6 +4627,10 @@@ msgstr "Naslov grafikona
msgid "Chart type"
msgstr "Tip grafikona"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
# ru, uk]
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Grafikon je sačuvan, ali nije mogao biti dodat na izabranu karticu."
@@@ -6522,6 -6400,6 +6548,10 @@@ msgstr "Naslov kontrolne table
msgid "Dashboard updated %s"
msgstr "Kontrolna tabla ažurirana %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
# de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk]
msgid "Dashboard usage"
msgstr "Korišćenje kontrolne table"
@@@ -6843,6 -6721,6 +6873,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Šema skupa podataka nije valjana, uzrok: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -17264,6 -17069,6 +17346,12 @@@ msgstr "Semantički pogledi
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "Semantički sloj"
@@@ -19104,6 -18913,6 +19201,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Parametri šablona"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
# uk]
#, python-format
msgid "Template processing error: %(error)s"
@@@ -19925,15 -19724,9 +20025,18 @@@ msgstr[0] "Parametar %(parameters)s u v
msgstr[1] "Sledeći parametri u vašem upitu nisu definisani: %(parameters)s."
msgstr[2] "Sledeći parametri u vašem upitu nisu definisani: %(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
# de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
@@@ -21971,9 -21703,9 +22084,12 @@@ msgstr[2] "
msgid "Token Request URI"
msgstr "URI zahteva za token"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/ta/LC_MESSAGES/messages.po
index 23c7b6e1f32,472029f8ec6..44a68d25622
--- a/superset/translations/ta/LC_MESSAGES/messages.po
+++ b/superset/translations/ta/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-03-31 02:00-0700\n"
"Last-Translator: Maazin Ahamed\n"
"Language: ta\n"
@@@ -228,6 -228,6 +228,13 @@@ msgstr "மொத்தத்தில�
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1168,52 -1112,12 +1175,58 @@@ msgstr "ஒரு புதிய ச�
msgid "A new dashboard will be created."
msgstr "ஒரு புதிய டேஷ்போர்டு உருவாக்கப்படும்."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3818,6 -3698,6 +3834,10 @@@ msgstr "சார்ட் தலைப
msgid "Chart type"
msgstr "சார்ட் வகை"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr ""
"சார்ட் சேமிக்கப்பட்டது, ஆனால் தேர்ந்தெடுக்கப்பட்ட தாவலில் (tab) சேர்க்க "
@@@ -5395,6 -5273,6 +5421,10 @@@ msgstr "டேஷ்போர்டு
msgid "Dashboard updated %s"
msgstr ""
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "டேஷ்போர்டு பயன்பாடு"
@@@ -5630,6 -5508,6 +5660,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "தரவுத்தொகுப்பு ஸ்கீமா செல்லாது, காரணம்: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -13984,6 -13789,6 +14066,12 @@@ msgstr "
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "சிறுகுறிப்பு அடுக்கு"
@@@ -15489,6 -15298,6 +15586,9 @@@ msgstr "செல் தலைப்ப
msgid "Template parameters"
msgstr "டெம்ப்ளேட் அளவுருக்கள்"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "டெம்ப்ளேட் செயலாக்க பிழை: %(error)s"
@@@ -16146,15 -15945,9 +16246,18 @@@ msgstr[1] "
"உங்கள் வினவலில் உள்ள பின்வரும் அளவுருக்கள் வரையறுக்கப்படவில்லை: "
"%(parameters)s."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "பயனர் பெயர் \"%(username)s\" க்காக வழங்கப்பட்ட கடவுச்சொல் தவறானது."
@@@ -17816,9 -17548,9 +17929,12 @@@ msgstr[1] "
msgid "Token Request URI"
msgstr "டோக்கன் கோரிக்கை URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
#, python-format
msgid ""
"Too many sub-slices requested. The maximum allowed is %(max)s, but "
diff --cc superset/translations/th/LC_MESSAGES/messages.po
index 5780a523ff5,3c29d0393c5..72bc51d5f79
--- a/superset/translations/th/LC_MESSAGES/messages.po
+++ b/superset/translations/th/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: th\n"
@@@ -278,6 -278,6 +278,13 @@@ msgstr "% ของทั้งหม�
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1621,52 -1565,12 +1628,58 @@@ msgstr "แผนภูมิใหม�
msgid "A new dashboard will be created."
msgstr "แดชบอร์ดใหม่จะถูกสร้างขึ้น"
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -5970,6 -5850,6 +5986,10 @@@ msgstr "ชื่อแผนภูม�
msgid "Chart type"
msgstr "ประเภทแผนภูมิ"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ja, lv,
# ru, uk]
#, fuzzy
@@@ -8570,6 -8448,6 +8596,10 @@@ msgstr "ชื่อแดชบอร�
msgid "Dashboard updated %s"
msgstr "อัปเดตล่าสุด %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk]
#, fuzzy
@@@ -9018,6 -8896,6 +9048,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "สคีมาชุดข้อมูลไม่ถูกต้อง เกิดจาก: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -23326,6 -23131,6 +23408,12 @@@ msgstr "มุมมองเชิง�
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, it, ja, ko, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh,
# zh_TW]
@@@ -25890,6 -25699,6 +25987,9 @@@ msgstr "
msgid "Template parameters"
msgstr "พารามิเตอร์เทมเพลต"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja, lv, ru,
# uk]
#, fuzzy, python-format
@@@ -26905,15 -26704,9 +27005,18 @@@ msgid "The parameter %(parameters)s in
msgid_plural "The following parameters in your query are undefined: %(parameters)s."
msgstr[0] "พารามิเตอร์ %(parameters)s ในคิวรีของคุณยังไม่ได้ถูกกำหนด"
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
#, fuzzy, python-format
@@@ -29451,9 -29183,9 +29564,12 @@@ msgstr[0] "
msgid "Token Request URI"
msgstr "Token Request URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/tr/LC_MESSAGES/messages.po
index d2015e412e7,89cfd38bd5c..bd8b07fc05d
--- a/superset/translations/tr/LC_MESSAGES/messages.po
+++ b/superset/translations/tr/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: avsarcoteli@gmail.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2024-02-25 14:00+0300\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: tr\n"
@@@ -221,6 -221,6 +221,13 @@@ msgstr "% o Toplamı göster
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1177,52 -1121,12 +1184,58 @@@ msgstr "Yeni bir grafik oluşturulacakt
msgid "A new dashboard will be created."
msgstr "Yeni bir pano oluşturulacak."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3975,6 -3855,6 +3991,10 @@@ msgstr "Grafik başlığı
msgid "Chart type"
msgstr "Grafik başlığı"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Grafikler silinemedi."
@@@ -5634,6 -5512,6 +5660,10 @@@ msgstr "Gösterim Paneli başlığı
msgid "Dashboard updated %s"
msgstr "Pano güncellendi %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Gösterim Paneli kullanımı"
@@@ -5892,6 -5770,6 +5922,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Dataset şeması geçersizdir, neden: %(error)s "
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14904,6 -14709,6 +14986,12 @@@ msgstr "Semantik Görünümler
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, sr,
# sr_Latn]
#, fuzzy
@@@ -16536,6 -16345,6 +16633,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Şablon parametreleri"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "Hata: %(error)s"
@@@ -17267,15 -17066,9 +17367,18 @@@ msgid "The parameter %(parameters)s in
msgid_plural "The following parameters in your query are undefined: %(parameters)s."
msgstr[0] "Parametre %(parameters)s in your query is undefined."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Kullanıcı adı \" %(username)s \" için sağlanan şifre yanlış."
@@@ -19097,9 -18829,9 +19210,12 @@@ msgstr[0] "
msgid "Token Request URI"
msgstr "Hediye İste URIRIRI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/uk/LC_MESSAGES/messages.po
index 36c7bc7c0cf,bd100e210fe..d7eb36d9d85
--- a/superset/translations/uk/LC_MESSAGES/messages.po
+++ b/superset/translations/uk/LC_MESSAGES/messages.po
@@@ -18,7 -18,7 +18,7 @@@ msgid "
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: ted.korostiled@gmail.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2026-04-30 22:04+0300\n"
"Last-Translator: Danylo Korostil\n"
"Language: uk\n"
@@@ -224,6 -224,6 +224,13 @@@ msgstr "% всього
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1232,52 -1176,12 +1239,58 @@@ msgstr "Створиться нова �
msgid "A new dashboard will be created."
msgstr "Створиться новий звіт."
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3873,6 -3753,6 +3889,10 @@@ msgstr "Назва діаграми
msgid "Chart type"
msgstr "Тип діаграми"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr "Діаграму збережено, але не вдалося додати її до вибраної вкладки."
@@@ -5443,6 -5321,6 +5469,10 @@@ msgstr "Заголовок звіту
msgid "Dashboard updated %s"
msgstr "Востаннє оновлено %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "Використання звіту"
@@@ -5691,6 -5569,6 +5721,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "Схема набору даних некоректна, через помилку: %(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14278,6 -14083,6 +14360,12 @@@ msgstr "Семантичні вигля
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "Анотаційний шар"
@@@ -15828,6 -15637,6 +15925,9 @@@ msgstr "
msgid "Template parameters"
msgstr "Параметри шаблону"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, python-format
msgid "Template processing error: %(error)s"
msgstr "Помилка опрацювання шаблону: %(error)s"
@@@ -16550,15 -16349,9 +16650,18 @@@ msgstr[1] "Параметри, які �
msgstr[2] "Параметри, які не визначено, у вашому запиті: %(parameters)s."
msgstr[3] "Параметр %(parameters)s у вашому запиті не визначено."
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "Неправильний пароль для користувача «%(username)s»."
@@@ -18324,9 -18056,9 +18437,12 @@@ msgstr[3] "
msgid "Token Request URI"
msgstr "Посилання запиту жетону"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/translations/zh/LC_MESSAGES/messages.po
index 599ec2b1633,5bfa33ea3c5..21158bd5ac5
--- a/superset/translations/zh/LC_MESSAGES/messages.po
+++ b/superset/translations/zh/LC_MESSAGES/messages.po
@@@ -18,7 -18,7 +18,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Apache Superset 0.22.1\n"
"Report-Msgid-Bugs-To: zhouyao94@qq.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2019-01-04 22:19+0800\n"
"Last-Translator: cdmikechen\n"
"Language: zh\n"
@@@ -229,6 -229,6 +229,13 @@@ msgstr "总计的 %
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr "%(alertType)s \"%(alertName)s\" 触发成功"
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1219,52 -1163,12 +1226,58 @@@ msgstr "将会创建一个新图表
msgid "A new dashboard will be created."
msgstr "将创建一个新看板。"
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3920,6 -3800,6 +3936,10 @@@ msgstr "图表标题
msgid "Chart type"
msgstr "图表类型"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
msgid "Chart was saved but could not be added to the selected tab."
msgstr "图表已保存,但无法添加到所选标签页。"
@@@ -5560,6 -5438,6 +5586,10 @@@ msgstr "看板标题
msgid "Dashboard updated %s"
msgstr "仪表板已更新 %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
msgid "Dashboard usage"
msgstr "看板使用情况"
@@@ -5807,6 -5685,6 +5837,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "数据集模式无效,原因:%(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14740,6 -14545,6 +14822,12 @@@ msgstr "语义视图
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
msgid "Semantic layer"
msgstr "语义层"
@@@ -16324,6 -16133,6 +16421,9 @@@ msgstr "单元格标题的模板。使�
msgid "Template parameters"
msgstr "模板参数"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "错误:%(error)s"
@@@ -17035,15 -16834,9 +17135,18 @@@ msgid "The parameter %(parameters)s in
msgid_plural "The following parameters in your query are undefined: %(parameters)s."
msgstr[0] "查询中的以下参数未定义:%(parameters)s 。"
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "用户名 \"%(username)s\" 提供的密码不正确。"
@@@ -18765,9 -18497,9 +18878,12 @@@ msgstr[0] "
msgid "Token Request URI"
msgstr "令牌请求URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, python-format
msgid ""
diff --cc superset/translations/zh_TW/LC_MESSAGES/messages.po
index 238ae0a3730,b95ab36f472..b4d8127991c
--- a/superset/translations/zh_TW/LC_MESSAGES/messages.po
+++ b/superset/translations/zh_TW/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
msgstr ""
"Project-Id-Version: Apache Superset 0.22.1\n"
"Report-Msgid-Bugs-To: bestlong168@gmail.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
-"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
"PO-Revision-Date: 2019-01-04 22:19+0800\n"
"Last-Translator: Shao Yu-Lung <be...@gmail.com>\n"
"Language: zh_TW\n"
@@@ -227,6 -227,6 +227,13 @@@ msgstr "% 顯示總計
msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
msgstr ""
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
#, python-format
msgid "%(count)s %(label)s"
msgstr ""
@@@ -1238,52 -1182,12 +1245,58 @@@ msgstr "將會創建一個新圖表
msgid "A new dashboard will be created."
msgstr "將會創建一個新看板"
+#, python-format
+msgid "A partition value transform cannot be longer than %(limit)d characters."
+msgstr ""
+
+#, python-format
+msgid "A partition value transform cannot call %(functions)s."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot change data. It is evaluated against "
+"the database to check that it mirrors, so it has to be a read."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot contain a MySQL executable comment, "
+"which the database executes and every validator reads as a comment."
+msgstr ""
+
+msgid "A partition value transform cannot contain a sub-query."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot name anything through a U&\"...\" "
+"escape sequence, which the database decodes and every validator reads "
+"literally."
+msgstr ""
+
+msgid ""
+"A partition value transform cannot read a sequence. NEXTVAL advances the "
+"sequence every time it is evaluated, and the transform is evaluated on a "
+"cache schedule."
+msgstr ""
+
+msgid ""
+"A partition value transform must be a single SQL expression, with no "
+"FROM, WHERE or other clause."
+msgstr ""
+
+msgid "A partition value transform must parse as a single SQL expression."
+msgstr ""
+
+msgid ""
+"A partition value transform must use the :value placeholder where the "
+"engine will evaluate it, not inside a string literal or a comment."
+msgstr ""
+
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+
msgid ""
"A polar coordinate chart where the circle is broken into wedges of equal "
"angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4119,6 -3999,6 +4135,10 @@@ msgstr "圖表標題
msgid "Chart type"
msgstr "圖表標題"
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Chart was saved but could not be added to the selected tab."
msgstr "圖表無法删除。"
@@@ -5887,6 -5765,6 +5913,10 @@@ msgstr "看板
msgid "Dashboard updated %s"
msgstr "最後更新 %s"
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
#, fuzzy
msgid "Dashboard usage"
msgstr "看板"
@@@ -6150,6 -6028,6 +6180,10 @@@ msgstr "
msgid "Dataset schema is invalid, caused by: %(error)s"
msgstr "資料集結構描述無效,原因:%(error)s"
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
#, python-format
msgid "Dataset used by %s chart updated: %s"
msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15679,6 -15484,6 +15761,12 @@@ msgstr "語義視圖
msgid "Semantic cache"
msgstr ""
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
#, fuzzy
msgid "Semantic layer"
msgstr "注释層"
@@@ -17375,6 -17184,6 +17472,9 @@@ msgstr "
msgid "Template parameters"
msgstr "模板参數"
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
#, fuzzy, python-format
msgid "Template processing error: %(error)s"
msgstr "錯誤:%(error)s"
@@@ -18135,15 -17934,9 +18235,18 @@@ msgid "The parameter %(parameters)s in
msgid_plural "The following parameters in your query are undefined: %(parameters)s."
msgstr[0] "查詢中的以下参數未定義:%(parameters)s 。"
+#, python-format
+msgid ""
+"The partition column cannot be mapped onto itself. %(name)s is both the "
+"partition column and the mapped column."
+msgstr ""
+
+msgid "The partition filter mapping was cleared: its column is gone"
+msgstr ""
+
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+
#, python-format
msgid "The password provided for username \"%(username)s\" is incorrect."
msgstr "用戶名 \"%(username)s\" 提供的密碼不正確。"
@@@ -19971,9 -19703,9 +20084,12 @@@ msgstr[0] "
msgid "Token Request URI"
msgstr "權杖請求 URI"
+msgid "Too many preview requests for this dataset. Wait a moment and try again."
+msgstr ""
+
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
#, fuzzy, python-format
msgid ""
diff --cc superset/views/datasource/views.py
index 3b4f2fe1f49,2d7a56e22cf..eb5205f82df
--- a/superset/views/datasource/views.py
+++ b/superset/views/datasource/views.py
@@@ -30,14 -29,10 +30,16 @@@ from superset import db, event_logger,
from superset.commands.dataset.exceptions import (
DatasetForbiddenError,
DatasetNotFoundError,
+ get_template_render_error_msg,
+ TEMPLATE_RENDER_ERRORS,
)
from superset.connectors.sqla.models import SqlaTable
+from superset.connectors.sqla.partition_mapping import (
+ drop_unmapped_value_transforms,
+ stored_expression_error,
+ validate_partition_mapping,
+ validate_transform,
+)
from superset.connectors.sqla.utils import get_physical_table_metadata
from superset.daos.dashboard import DashboardDAO
from superset.daos.dataset import DatasetDAO
diff --cc tests/unit_tests/commands/dataset/test_create.py
index 8f2134462de,ddc2856cc88..8dfeba1ebe1
--- a/tests/unit_tests/commands/dataset/test_create.py
+++ b/tests/unit_tests/commands/dataset/test_create.py
@@@ -31,7 -36,7 +36,8 @@@ from superset.exceptions import
SupersetTimeoutException,
)
from superset.models.core import Database
+ from superset.sql.parse import Table
+from tests.unit_tests.conftest import with_feature_flags
def _validate_virtual_dataset(
diff --cc tests/unit_tests/commands/dataset/update_test.py
index c40e5ac80fd,27a878ac554..f907bb6dc9e
--- a/tests/unit_tests/commands/dataset/update_test.py
+++ b/tests/unit_tests/commands/dataset/update_test.py
@@@ -95,8 -96,8 +97,9 @@@ def test_update_dataset_sql_authorized_
mock_dataset.catalog = "catalog"
mock_dataset.schema = "public"
mock_dataset.table_name = "test_table"
+ mock_dataset.template_params = None
mock_dataset.editors = [] # No editors to avoid computation issues
+ mock_dataset.partition_column = None # No partition filter mapping
mock_dataset_dao.find_by_id.return_value = mock_dataset
mock_dataset_dao.get_database_by_id.return_value = mock_database
@@@ -141,8 -152,8 +154,9 @@@ def test_update_dataset_sql_unauthorize
mock_dataset.catalog = "catalog"
mock_dataset.schema = "public"
mock_dataset.table_name = "test_table"
+ mock_dataset.template_params = None
mock_dataset.editors = [] # No editors to avoid computation issues
+ mock_dataset.partition_column = None # No partition filter mapping
mock_dataset_dao.find_by_id.return_value = mock_dataset
mock_dataset_dao.get_database_by_id.return_value = mock_database
@@@ -205,8 -268,9 +271,10 @@@ def test_update_dataset_database_id_cha
mock_dataset.catalog = "catalog"
mock_dataset.schema = "public"
mock_dataset.table_name = "test_table"
+ mock_dataset.sql = None # physical dataset
+ mock_dataset.template_params = None
mock_dataset.editors = [] # No editors to avoid computation issues
+ mock_dataset.partition_column = None # No partition filter mapping
mock_dataset_dao.find_by_id.return_value = mock_dataset
mock_dataset_dao.get_database_by_id.return_value = mock_new_database
@@@ -262,8 -330,9 +334,10 @@@ def test_update_dataset_database_id_cha
mock_dataset.catalog = "catalog"
mock_dataset.schema = "public"
mock_dataset.table_name = "test_table"
+ mock_dataset.sql = None # physical dataset
+ mock_dataset.template_params = None
mock_dataset.editors = [] # No editors to avoid computation issues
+ mock_dataset.partition_column = None # No partition filter mapping
mock_dataset_dao.find_by_id.return_value = mock_dataset
mock_dataset_dao.get_database_by_id.return_value = mock_new_database
diff --cc tests/unit_tests/dashboards/datasets_test.py
index ab416128ead,0c81cd1a549..1f2a85f4e80
--- a/tests/unit_tests/dashboards/datasets_test.py
+++ b/tests/unit_tests/dashboards/datasets_test.py
@@@ -359,112 -358,64 +361,175 @@@ def test_dashboard_table_serialization_
dashboard.datasets_trimmed_for_slices()
+ @pytest.mark.parametrize("can_access_ambiguous", [True, False])
+ def test_dashboard_datasets_isolate_ambiguous_view(
+ client: Any,
+ full_api_access: None,
+ semantic_view: SemanticView,
+ can_access_ambiguous: bool,
+ ) -> None:
+ """One ambiguous view cannot hide healthy metadata or leak it without access."""
+ ambiguous: SemanticView = SemanticView(
+ id=2,
+ name="Ambiguous view",
+ semantic_layer=semantic_view.semantic_layer,
+ )
+ implementation: MagicMock = MagicMock()
+ implementation.get_dimensions.return_value = {
+ Dimension("one", "event_time", pa.timestamp("us"), grain=Grains.MONTH),
+ Dimension("two", "event_time", pa.timestamp("us"), grain=Grains.MONTH),
+ }
+ implementation.get_metrics.return_value = []
+ implementation.features = frozenset()
+ implementation.uid.return_value = "provider-ambiguous"
+ ambiguous.__dict__["implementation"] = implementation
+ broken_chart: Slice = Slice(datasource_id=2, datasource_type="semantic_view")
+ broken_chart.semantic_view = ambiguous
+ healthy_chart: Slice = Slice(
+ datasource_id=semantic_view.id, datasource_type="semantic_view"
+ )
+ healthy_chart.semantic_view = semantic_view
+ dashboard: Dashboard = Dashboard(id=17, slices=[broken_chart, healthy_chart])
+ with (
+ patch(
+ "superset.daos.dashboard.DashboardDAO.get_by_id_or_slug",
+ return_value=dashboard,
+ ),
+ patch(
+ "superset.models.dashboard.security_manager.can_access_datasource",
+ side_effect=lambda datasource: datasource is semantic_view
+ or can_access_ambiguous,
+ ),
+ patch(
+ "superset.dashboards.schemas.security_manager.is_guest_user",
+ return_value=False,
+ ),
+ ):
+ response: Any = client.get("/api/v1/dashboard/17/datasets")
+ assert response.status_code == 200
+ datasets: dict[str, dict[str, Any]] = {
+ item["uid"]: item for item in response.json["result"]
+ }
+ assert set(datasets) == {"1__semantic_view", "2__semantic_view"}
+ assert datasets["1__semantic_view"]["columns"]
+ assert "metadata_error" not in datasets["1__semantic_view"]
+ assert "columns" not in datasets["2__semantic_view"]
+ if can_access_ambiguous:
+ assert datasets["2__semantic_view"]["metadata_error"] == (
+ "Semantic dimension 'event_time' has ambiguous variants for grain 'P1M'. "
+ "Use one dimension per name and grain."
+ )
+ else:
+ assert "metadata_error" not in datasets["2__semantic_view"]
+ implementation.get_dimensions.assert_not_called()
++
++
+@pytest.mark.parametrize("can_access", [True, False])
+def test_an_inaccessible_dashboard_dataset_hides_its_partition_mapping(
+ can_access: bool,
+) -> None:
+ """
+ The mapping names two of the dataset's columns and carries the raw value
+ transform in `evaluated_transform`, so it belongs with `columns` and
+ `main_dttm_col` in `DASHBOARD_DATASET_INACCESSIBLE_FIELDS`. Without it,
+ `GET /api/v1/dashboard/<id>/datasets` handed all three to a Gamma user with
+ dashboard access and no grant on the dataset.
+ """
+ table: SqlaTable = SqlaTable(id=7, table_name="orders")
+ chart: Slice = Slice(datasource_id=7, datasource_type="table")
+ chart.table = table
+ dashboard: Dashboard = Dashboard(slices=[chart])
+ payload = {
+ "id": 7,
+ "uid": "7__table",
+ "table_name": "orders",
+ "partition_column": "dt_epoch",
+ "partition_mapped_column": "event_time",
+ "partition_filter_mapping": {
+ "partition_column": "dt_epoch",
+ "mapped_column": "event_time",
+ "evaluated_transform": "unix_timestamp(:value)",
+ },
+ }
+ with (
+ patch.object(SqlaTable, "data_for_slices", return_value=payload),
+ patch(
+ "superset.dashboards.api.security_manager.can_access_datasource",
+ return_value=can_access,
+ ),
+ patch(
+ "superset.dashboards.schemas.security_manager.is_guest_user",
+ return_value=False,
+ ),
+ ):
+ serialized: dict[str, Any] = DashboardRestApi()._serialize_dashboard_dataset(
+ *dashboard.datasets_trimmed_for_slices()[0]
+ )
+
+ fields = ("partition_column", "partition_mapped_column", "partition_filter_mapping")
+ if can_access:
+ assert all(field in serialized for field in fields)
+ assert (
+ serialized["partition_filter_mapping"]["evaluated_transform"]
+ == "unix_timestamp(:value)"
+ )
+ else:
+ assert not any(field in serialized for field in fields)
+
+
+def test_a_guest_token_dashboard_dataset_hides_its_partition_mapping() -> None:
+ """
+ Same reasoning as the inaccessible case, through the guest narrowing:
+ `evaluated_transform` is a SQL expression, which is what puts `sql` in that
+ list. Neither the dataset editor nor Explore's pruning indicator is a guest
+ surface, so nothing is lost.
+ """
+ token: GuestToken = {
+ "iat": 0,
+ "exp": 1,
+ "user": {"username": "embedded-guest"},
+ "resources": [],
+ "rls_rules": [],
+ }
+ guest: GuestUser = GuestUser(token, roles=[])
+ with (
+ patch.object(g, "user", guest, create=True),
+ # `is_guest_user` is gated on EMBEDDED_SUPERSET, as the sibling guest
+ # test above does it.
+ patch("superset.is_feature_enabled", return_value=True),
+ ):
+ payload: dict[str, Any] = DashboardDatasetSchema().dump(
+ {
+ "id": 7,
+ "uid": "7__table",
+ "partition_column": "dt_epoch",
+ "partition_mapped_column": "event_time",
+ "partition_filter_mapping": {"evaluated_transform": "lower(:value)"},
+ }
+ )
+
+ assert "partition_column" not in payload
+ assert "partition_mapped_column" not in payload
+ assert "partition_filter_mapping" not in payload
+
+
+def test_a_dataset_without_a_mapping_serializes_its_null_partition_fields() -> None:
+ """
+ `SqlaTable.data` includes all three unconditionally, and the first two are
+ `None` on any dataset without a mapping. Declared non-nullable, the
+ generated spec rejected that ordinary response under strict client
+ validation.
+ """
+ payload: dict[str, Any] = DashboardDatasetSchema().dump(
+ {
+ "id": 7,
+ "uid": "7__table",
+ "partition_column": None,
+ "partition_mapped_column": None,
+ "partition_filter_mapping": None,
+ }
+ )
+
+ assert payload["partition_column"] is None
+ assert payload["partition_mapped_column"] is None
+ assert payload["partition_filter_mapping"] is None
diff --cc tests/unit_tests/views/datasource/views_test.py
index 72bbedcce1a,47b643a3fa3..9083b1f4a21
--- a/tests/unit_tests/views/datasource/views_test.py
+++ b/tests/unit_tests/views/datasource/views_test.py
@@@ -27,9 -27,11 +27,12 @@@ from unittest.mock import ANY, call, Ma
import pytest
from flask import Flask
- from superset.commands.dataset.exceptions import DatasetForbiddenError
+ from superset.commands.dataset.exceptions import (
+ DatasetForbiddenError,
+ DatasetSamplesFailedError,
+ )
from superset.connectors.sqla.models import SqlaTable
+from superset.connectors.sqla.partition_mapping import MAX_TRANSFORM_LENGTH
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.exceptions import SupersetSecurityException
from superset.sql.parse import Table