Skip to content
/ server Public

MDEV-30124: Add format validation for JSON Schema#4750

Open
varundeepsaini wants to merge 1 commit intoMariaDB:mainfrom
varundeepsaini:MDEV-30124-json-schema-format-validation
Open

MDEV-30124: Add format validation for JSON Schema#4750
varundeepsaini wants to merge 1 commit intoMariaDB:mainfrom
varundeepsaini:MDEV-30124-json-schema-format-validation

Conversation

@varundeepsaini
Copy link
Contributor

Summary

Implements optional format validation for the JSON_SCHEMA_VALID() function per JSON Schema Draft 2020-12.

  • Adds a new session variable json_schema_format_validation (default OFF)
  • When OFF, the format keyword is treated as annotation only (existing behavior)
  • When ON, validates strings against 18 format types: date-time, date, time, duration, email, idn-email, hostname, idn-hostname, ipv4, ipv6, uri, uri-reference, iri, iri-reference, uuid, json-pointer, relative-json-pointer, regex
  • Unknown format values always pass validation

Test plan

  • Existing format annotation tests continue to pass unchanged
  • New tests cover all 18 formats with valid/invalid inputs when json_schema_format_validation=ON
  • Verified non-string types always pass regardless of format
  • Verified unknown format values are treated as annotation

@varundeepsaini varundeepsaini marked this pull request as draft March 7, 2026 05:22
@varundeepsaini varundeepsaini force-pushed the MDEV-30124-json-schema-format-validation branch 3 times, most recently from 293b984 to e5142f5 Compare March 7, 2026 08:22
@varundeepsaini varundeepsaini marked this pull request as ready for review March 7, 2026 09:34
@varundeepsaini varundeepsaini force-pushed the MDEV-30124-json-schema-format-validation branch from e5142f5 to 5a6ab32 Compare March 7, 2026 09:34
Implement optional format validation for the JSON_SCHEMA_VALID() function,
as specified by JSON Schema Draft 2020-12. The format keyword is treated as
an annotation by default (validation disabled). A new session variable
json_schema_format_validation enables actual format validation when set to ON.

Supported formats: date-time, date, time, duration, email, idn-email,
hostname, idn-hostname, ipv4, ipv6, uri, uri-reference, iri, iri-reference,
uuid, json-pointer, relative-json-pointer, regex.

Signed-off-by: Varun Deep Saini <varun.23bcs10048@ms.sst.scaler.com>
@varundeepsaini varundeepsaini force-pushed the MDEV-30124-json-schema-format-validation branch from 5a6ab32 to 602a323 Compare March 7, 2026 16:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant