fix: fix DocumentSegment.keywords can not a valid json (#36715)

This commit is contained in:
wangxiaolei 2026-05-27 16:42:48 +08:00 committed by GitHub
parent 50face5760
commit 6464255d33
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -169,9 +169,12 @@ class DatasetDocumentSegmentListApi(Resource):
# Use database-specific methods for JSON array search
if dify_config.SQLALCHEMY_DATABASE_URI_SCHEME == "postgresql":
# PostgreSQL: Use jsonb_array_elements_text to properly handle Unicode/Chinese text
# Guard with jsonb_typeof to avoid "cannot extract elements from a scalar" error
# when keywords is null or a non-array JSON value.
keywords_condition = func.array_to_string(
func.array(
select(func.jsonb_array_elements_text(cast(DocumentSegment.keywords, JSONB)))
.where(func.jsonb_typeof(cast(DocumentSegment.keywords, JSONB)) == "array")
.correlate(DocumentSegment)
.scalar_subquery()
),