close
壓力測試過程發現程式仍有Bug。OGG的Update有兩種DO_UPDATE_FILECOMP和DO_UPDATE_FILECOMP_PK(另兩種和Tandem有關,不予討論)。參考前一篇:http://tsaijemmy.spaces.live.com/blog/cns!4AD532D0CD18A21D!1693.entry。假設Table Foo的是複合key:ID、Name,而非key欄位叫CDate。這時好玩的地方就在下表DsColumn的method:
當執行Update Foo set CDate=sysdate where ID=? and Name=?,則觸發DO_UPDATE_FILECOMP。
欄位 \ method | isMissing | isChanged | isValueNull |
ID | false | true | false |
Name | false | true | false |
CDate | false | true | false |
而Update PK欄位值:Update Foo set Name=? where ID=?,則觸發DO_UPDATE_FILECOMP_PK。
欄位 \ method | isMissing | isChanged | isValueNull |
ID | false | true | 待補上 |
Name | false | false | 掛了 |
CDate | true | false | 待補上 |
當時令我驚訝的是,被Update的PK欄位,isChanged回傳竟是false,而該欄位若呼叫isValueNull,會莫名其妙中斷Thread也不丟出Exception。
此外DO_UPDATE_FILECOMP_PK裡,每個PK欄位都會回傳有beforeValue和afterValue,即便前後都是一樣的值,不會Missing。反觀DO_UPDATE_FILECOMP,PK欄位值只會回傳afterValue。
全站熱搜