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).