Uploaded image for project: 'S2Container'
  1. S2Container
  2. CONTAINER-427

[S2JDBC] SQL ファイルを使ったバッチ更新で,SQL ファイルに IF コメントや埋め込み変数コメントが使われているとエラーにする指定をできるようにしました.

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.4.42
    • Fix Version/s: 2.4.43
    • Component/s: S2JDBC
    • Labels:
      None

      Description

      SqlFileBatchUpdateImplでは、最初に解析されたSQLをキャッシュしaddBatchする仕様だと思いますが、
      SQLファイルに、条件によってWhere句や更新カラムを変更するようなIFコメントが含まれている場合、
      意図しないSQLが実行されてしまうことがあります。

      SQLのWhere句や更新カラムが変わってしまうようなOGNL式が含まれている場合は
      Exception等throwしていただくことは可能でしょうか?

      【例、UPDATE文で動的にSET句がかわる場合】

       
      UPDATE
      	TEST_TABLE
      SET
      	/*IF batchDD == '01'*/
      	,CULUMNS01 = /*value*/1
      	/*END*/
      	/*IF batchDD == '02'*/
      	,COLUMNS02 = /*value*/1
      	/*END*/
      WHERE
      	DATE_YM = /*dateYm*/'201004'
      

      最初にbatchDD=01だと、

       
      UPDATE
      	TEST_TABLE
      SET
      	CULUMNS01 = 1
      WHERE
      	DATE_YM = '201004'
      

      というSQL文になります。

      2行目が、仮にbatchDDが02でCULUMNS02にいれたいとしても、
      キャッシュされたCULUMNS01をUPDATEするSQLが利用され値がCOLUMNS01に入ります。

        Attachments

          Activity

            People

            • Assignee:
              koichik koichik
              Reporter:
              saori murooka saori murooka
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: