{
  "status": "prepared_not_executed",
  "scope": "explicit_five_columns_readonly_candidate",
  "actual_schema": "AIZHCT_APP",
  "table": "YOSHOP_USER_GIFT_LOG",
  "max_rows": 5,
  "cache_enabled": false,
  "consumer_boundary": {
    "allowed": [
      "fetch(PDO::FETCH_ASSOC)",
      "fetchAll(PDO::FETCH_ASSOC)",
      "fetchColumn(visible_index)"
    ],
    "forbidden": [
      "PDOStatement foreach",
      "public rawStatement escape",
      "write/DDL",
      "cache/S3"
    ]
  },
  "schema_contract": {
    "version": "gift-columns-20261010-v1",
    "table": "yoshop_user_gift_log",
    "source": "approved local MySQL56 and nonproduction DM5238 metadata only",
    "source_metadata_sha256": "70f76ac2218805a7f4fe7a7aa2f8ee220b27e7bcb7dc921b03d91ecfb4b474d3",
    "target_metadata_sha256": "71b67951ac2de95c2112523683e86fc3d042cd176c603cab7ced25c59a87c7ee",
    "star_allowed": false,
    "columns": [
      {
        "ordinal": 1,
        "name": "log_id",
        "native_type": "bigint",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 2,
        "name": "user_id",
        "native_type": "bigint",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 3,
        "name": "scene",
        "native_type": "smallint",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 4,
        "name": "money",
        "native_type": "decimal(10,2)",
        "rule": {
          "kind": "decimal_text",
          "precision": 10,
          "scale": 2
        },
        "source_present": true
      },
      {
        "ordinal": 5,
        "name": "balance_before",
        "native_type": "decimal(10,2)",
        "rule": {
          "kind": "decimal_text",
          "precision": 10,
          "scale": 2
        },
        "source_present": true
      },
      {
        "ordinal": 6,
        "name": "balance_after",
        "native_type": "decimal(10,2)",
        "rule": {
          "kind": "decimal_text",
          "precision": 10,
          "scale": 2
        },
        "source_present": true
      },
      {
        "ordinal": 7,
        "name": "biz_type",
        "native_type": "varchar",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 8,
        "name": "biz_order_id",
        "native_type": "decimal(20,0)",
        "rule": {
          "kind": "unsigned_integer",
          "precision": 0,
          "scale": 0
        },
        "source_present": true
      },
      {
        "ordinal": 9,
        "name": "biz_order_no",
        "native_type": "varchar",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 10,
        "name": "idempotency_key",
        "native_type": "varchar",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 11,
        "name": "describe",
        "native_type": "varchar",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 12,
        "name": "remark",
        "native_type": "varchar",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 13,
        "name": "operator_id",
        "native_type": "varchar",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 14,
        "name": "operator_name",
        "native_type": "varchar",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 15,
        "name": "store_id",
        "native_type": "bigint",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 16,
        "name": "is_delete",
        "native_type": "smallint",
        "rule": null,
        "source_present": false
      },
      {
        "ordinal": 17,
        "name": "create_by",
        "native_type": "varchar",
        "rule": null,
        "source_present": false
      },
      {
        "ordinal": 18,
        "name": "create_time",
        "native_type": "datetime",
        "rule": null,
        "source_present": true
      },
      {
        "ordinal": 19,
        "name": "update_time",
        "native_type": "datetime",
        "rule": null,
        "source_present": false
      }
    ],
    "limitations": [
      "target_extra_columns_and_order",
      "create_time_integer_vs_datetime",
      "source_unsigned_log_id_vs_target_signed_bigint"
    ]
  },
  "native": {
    "sql": "SELECT g.log_id,g.biz_order_id,g.money,g.balance_before,g.balance_after FROM yoshop_user_gift_log g WHERE  g.log_id >= :owned_min ORDER BY g.log_id DESC LIMIT 5  ",
    "field_fragment": "g.log_id,g.biz_order_id,g.money,g.balance_before,g.balance_after",
    "bind": {
      "owned_min": [
        0,
        1
      ]
    }
  },
  "projected": {
    "sql": "SELECT g.log_id AS log_id,g.biz_order_id AS biz_order_id,g.money AS money,g.balance_before AS balance_before,g.balance_after AS balance_after,CAST(g.biz_order_id AS VARCHAR(128)) AS cdx_shadow_0,CAST(g.money AS VARCHAR(128)) AS cdx_shadow_1,CAST(g.balance_before AS VARCHAR(128)) AS cdx_shadow_2,CAST(g.balance_after AS VARCHAR(128)) AS cdx_shadow_3 FROM yoshop_user_gift_log g WHERE  g.log_id >= :owned_min ORDER BY g.log_id DESC LIMIT 5  ",
    "field_fragment": "g.log_id AS log_id,g.biz_order_id AS biz_order_id,g.money AS money,g.balance_before AS balance_before,g.balance_after AS balance_after,CAST(g.biz_order_id AS VARCHAR(128)) AS cdx_shadow_0,CAST(g.money AS VARCHAR(128)) AS cdx_shadow_1,CAST(g.balance_before AS VARCHAR(128)) AS cdx_shadow_2,CAST(g.balance_after AS VARCHAR(128)) AS cdx_shadow_3",
    "bind": {
      "owned_min": [
        0,
        1
      ]
    }
  },
  "statement_plan": {
    "sql": "SELECT g.log_id AS log_id,g.biz_order_id AS biz_order_id,g.money AS money,g.balance_before AS balance_before,g.balance_after AS balance_after,CAST(g.biz_order_id AS VARCHAR(128)) AS cdx_shadow_0,CAST(g.money AS VARCHAR(128)) AS cdx_shadow_1,CAST(g.balance_before AS VARCHAR(128)) AS cdx_shadow_2,CAST(g.balance_after AS VARCHAR(128)) AS cdx_shadow_3 FROM yoshop_user_gift_log g WHERE  g.log_id >= :owned_min ORDER BY g.log_id DESC LIMIT 5  ",
    "names": [
      "log_id",
      "biz_order_id",
      "money",
      "balance_before",
      "balance_after",
      "cdx_shadow_0",
      "cdx_shadow_1",
      "cdx_shadow_2",
      "cdx_shadow_3"
    ],
    "visible": [
      0,
      1,
      2,
      3,
      4
    ],
    "restore": {
      "1": {
        "shadow": 5,
        "rule": {
          "kind": "unsigned_integer",
          "precision": 0,
          "scale": 0
        }
      },
      "2": {
        "shadow": 6,
        "rule": {
          "kind": "decimal_text",
          "precision": 10,
          "scale": 2
        }
      },
      "3": {
        "shadow": 7,
        "rule": {
          "kind": "decimal_text",
          "precision": 10,
          "scale": 2
        }
      },
      "4": {
        "shadow": 8,
        "rule": {
          "kind": "decimal_text",
          "precision": 10,
          "scale": 2
        }
      }
    }
  },
  "sql_sha256": "04e5f5a264c39e257cc8ebed4ea1c52cc3d807112ad7e21a3f69de8a18880fa5",
  "requires_root_source_review_and_execution_approval": true
}
