JSON_MERGE_REPLACE.md 1.58 KB

JSON_MERGE_REPLACE (function)

如果2中的值1中存在,提供1胡

  • Type: FUNCTION
  • Returns: json
  • Deterministic: NO
  • SQL data access: CONTAINS SQL

Parameters

# Mode Name Type
1 IN sJonsOne json
2 IN sJsonTwo json

Body

Body is not pre-cached. To inspect: mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE FUNCTIONJSONMERGE_REPLACE'._

Narrative

Business context: Polyfill for MySQL 8's JSON_MERGE_PATCH semantics on MySQL 5.7 — given two JSON objects, returns object 1 with object 2's keys overlaying it (each key from 2 replaces the same key from 1, instead of stacking into an array like the built-in JSON_MERGE does). Used by the dynamic-column-config layer that overlays per-user column-display tweaks on top of the system default config.

What it does: validates both inputs are JSON. Iterates JSON_KEYS(sJsonTwo); for each key, extracts its value from sJsonTwo, removes the same key from sJonsOne if present, then JSON_MERGEs the single-key object back in. Returns the rebuilt object. Loop body strips surrounding quotes from the extracted value unless it contains { (preserves nested objects).

Invocation: referenced by Fun_get_show_config_basic — the baseline column-config resolver in the dynamic-report-column family (Fun_get_show_config*). Also surfaced in xly-src script/标版/upgrade/动态配置返回函数/. Header comment 如果2中的值1中存在,提供1胡 is truncated/garbled — function actually does the opposite (keys from 2 win over keys from 1).