/** Ċ Ġ* ĠCopyright Ġ 2 0 0 6 ĠStart Net Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠDistributed Ġunder ĠMIT Ġlicense Ċ Ġ*/ Ċ package Ġcz . start net . utils . pg diff Ċ Ċ import Ġcz . start net . utils . pg diff . schema .* Ċ import Ġjava . io . PrintWriter Ċ import Ġjava . text . Message Format Ċ Ċ /** Ċ Ġ* ĠD iffs Ġtables . Ċ Ġ* Ċ Ġ* Ġ@ author Ġfor df rog Ċ Ġ*/ Ċ object ĠP g Diff Tables Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOutputs Ġstatements Ġfor Ġcreation Ġof Ġclusters . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġold Schema ĠĠĠĠĠĠĠ Ġoriginal Ġschema ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Schema ĠĠĠĠĠĠĠ Ġnew Ġschema ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdrop Clusters ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Schema : ĠP g Schema ?, Ġnew Schema : ĠP g Schema ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Table Ġin Ġnew Schema ?. tables . or Empty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Table Ġ= Ġold Schema ?. getTable ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Cluster Ġ= Ġold Table ?. cluster Index Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Cluster Ġ= Ġnew Table . cluster Index Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Cluster Ġ!= Ġnull Ġ&& Ġnew Cluster Ġ== Ġnull Ġ&& Ġnew Table . contains Index ( old Cluster )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (" ĠSET ĠWITHOUT ĠCL USTER ; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOutputs Ġstatements Ġfor Ġdropping Ġof Ġclusters . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġold Schema ĠĠĠĠĠĠĠ Ġoriginal Ġschema ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Schema ĠĠĠĠĠĠĠ Ġnew Ġschema ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Clusters ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Schema : ĠP g Schema ?, Ġnew Schema : ĠP g Schema ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Table Ġin Ġnew Schema ?. tables . or Empty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Table Ġ= Ġold Schema ?. getTable ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Cluster Ġ= Ġold Table ?. cluster Index Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Cluster Ġ= Ġnew Table . cluster Index Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Cluster Ġ== Ġnull Ġ&& Ġnew Cluster Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġold Cluster Ġ!= Ġnull Ġ&& Ġnew Cluster Ġ!= Ġnull Ġ&& Ġnew Cluster . compareTo ( old Cluster ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠCL USTER ĠON Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Cluster )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (' ; ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOutputs Ġstatements Ġfor Ġalter ing Ġtables . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġarguments ĠĠĠĠĠĠĠ Ġobject Ġcontaining Ġarguments Ġsettings ĊĠĠĠĠ Ġ* Ġ@ param Ġold Schema ĠĠĠĠĠĠĠ Ġoriginal Ġschema ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Schema ĠĠĠĠĠĠĠ Ġnew Ġschema ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġalter Tables ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġarguments : ĠP g Diff Options , Ġold Schema : ĠP g Schema ?, ĊĠĠĠĠĠĠĠ Ġnew Schema : ĠP g Schema ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Table Ġin Ġnew Schema . tables ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Table Ġ= Ġold Schema ?. getTable ( new Table . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpg _ dump Ġdump s Ġsequences Ġseparately , Ġso Ġwe Ġneed Ġto Ġgenerate Ġthe Ġsequence Ġalso Ġif Ġthe Ġold Ġtable Ġis Ġnot Ġthere ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Alter Generated ( writer , Ġold Table , Ġnew Table ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Table Ġ== Ġnull ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Table Columns ( writer , Ġarguments , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck In herits ( writer , Ġold Table , Ġnew Table , Ġnew Schema ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Inherited Column Defaults ( writer , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Table space ( writer , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Alter Statistics ( writer , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Alter Storage ( writer , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter Comments ( writer , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter Owner To ( writer , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter Privileges ( writer , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter Privileges Columns ( writer , Ġold Table , Ġnew Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter RL S ( writer , Ġold Table , Ġnew Table ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġthe Ġneeded Ġalter Ġtable Ġxxx Ġset Ġstatistics Ġwhen Ġneeded . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠ Ġoriginal Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Alter Statistics ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstats : ĠMutable Map < String ?, ĠInt > Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Column Ġin Ġnew Table ?. columns . or Empty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Column Ġ= Ġold Table !!. getColumn ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Column Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Stat Ġ= Ġold Column . statistics ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Stat Ġ= Ġnew Column . statistics ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Stat Value : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Stat Ġ!= Ġnull Ġ&& Ġ( old Stat Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġnew Stat Ġ!= Ġold Stat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Stat Value Ġ= Ġnew Stat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( old Stat Ġ!= Ġnull Ġ&& Ġnew Stat Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Stat Value Ġ= ĠInteger . valueOf (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Stat Value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats [ new Column . name ] Ġ= Ġnew Stat Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġstats ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE ĠONLY Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table !!. name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠALTER ĠCOLUMN Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠSET ĠSTAT ISTICS Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (' ; ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġthe Ġneeded Ġalter Ġtable Ġxxx Ġadd Ġgenerated Ġwhen Ġneeded ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Alter Generated ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, ĊĠĠĠĠĠĠĠ Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Column Ġin Ġnew Table . columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Column Ġ= Ġold Table ?. getColumn ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Generated Ġ= Ġold Column ?. generated ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Generated Ġ= Ġnew Column . generated ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Generated Ġ== Ġnull Ġ&& Ġold Generated Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" generated Ġdefinition Ġremoved Ġfrom Ġcolumn ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Generated Ġ== Ġnull Ġ|| Ġnew Generated Ġ== Ġold Generated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠALTER ĠCOLUMN Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Column . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Generated . sql ( writer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (' ; ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġthe Ġneeded Ġalter Ġtable Ġxxx Ġset Ġstorage Ġwhen Ġneeded . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠ Ġoriginal Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Alter Storage ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Column Ġin Ġnew Table . columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Column Ġ= Ġold Table !!. getColumn ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Storage Ġ= Ġold Column ?. storage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Storage Ġ= Ġif Ġ( new Column . storage Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġnew Column . storage . isNull OrEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġnull Ġelse Ġnew Column . storage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Storage Ġ== Ġnull Ġ&& Ġold Storage Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Format . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResources . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Warning Unable To Det ermine Storage Type " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Table . name Ġ+ Ġ'.' Ġ+ Ġnew Column . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Storage Ġ== Ġnull Ġ|| Ġnew Storage . equals ( old Storage , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE ĠONLY Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠALTER ĠCOLUMN Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Column . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠSET ĠSTORAGE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( new Storage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (' ; ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġstatements Ġfor Ġcreation Ġof Ġnew Ġcolumns Ġto Ġthe Ġlist Ġof Ġstatements . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstatements ĠĠĠĠĠĠĠĠĠ Ġlist Ġof Ġstatements ĊĠĠĠĠ Ġ* Ġ@ param Ġarguments ĠĠĠĠĠĠĠĠĠĠ Ġobject Ġcontaining Ġarguments Ġsettings ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġdrop Defaults Columns Ġlist Ġfor Ġstoring Ġcolumns Ġfor Ġwhich Ġdefault ĊĠĠĠĠ Ġ* Ġvalue Ġshould Ġbe Ġdropped ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd CreateTable Columns ( ĊĠĠĠĠĠĠĠ Ġstatements : ĠMutable List < String >, ĊĠĠĠĠĠĠĠ Ġarguments : ĠP g Diff Options , Ġold Table : ĠP g Table Base ?, ĊĠĠĠĠĠĠĠ Ġnew Table : ĠP g Table Base ?, Ġdrop Defaults Columns : ĠMutable List < Pg Column > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( column Ġin Ġnew Table !!. columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! old Table !!. contains Column ( column . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t ADD ĠCOLUMN Ġ" Ġ+ ĠP g Diff Utils . create IfNot Exists ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġcolumn . getFull Definition ( arguments . is Add Defaults ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . is Add Defaults Ġ&& Ġ! column . null Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( column . defaultValue . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Defaults Columns . add ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġstatements Ġfor Ġremoval Ġof Ġcolumns Ġto Ġthe Ġlist Ġof Ġstatements . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstatements Ġlist Ġof Ġstatements ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠ Ġoriginal Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Drop Table Columns ( ĊĠĠĠĠĠĠĠ Ġstatements : ĠMutable List < String >, ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base , ĊĠĠĠĠĠĠĠ Ġnew Table : ĠP g Table Base , ĊĠĠĠĠĠĠĠ Ġdrop Cascade : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcascade Ġ= Ġif Ġ( drop Cascade ) Ġ" ĠCASCADE " Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( column Ġin Ġold Table . columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! new Table . contains Column ( column . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t DROP ĠCOLUMN ĠIF ĠEXISTS Ġ${ Pg Diff Utils . get Quoted Name ( column . name )} $ cascade " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġstatements Ġfor Ġmodification Ġof Ġcolumns Ġto Ġthe Ġlist Ġof Ġstatements . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstatements ĠĠĠĠĠĠĠĠĠ Ġlist Ġof Ġstatements ĊĠĠĠĠ Ġ* Ġ@ param Ġarguments ĠĠĠĠĠĠĠĠĠĠ Ġobject Ġcontaining Ġarguments Ġsettings ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġdrop Defaults Columns Ġlist Ġfor Ġstoring Ġcolumns Ġfor Ġwhich Ġdefault ĊĠĠĠĠ Ġ* Ġvalue Ġshould Ġbe Ġdropped ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Modify Table Columns ( ĊĠĠĠĠĠĠĠ Ġstatements : ĠMutable List < String >, ĊĠĠĠĠĠĠĠ Ġarguments : ĠP g Diff Options , Ġold Table : ĠP g Table Base ?, ĊĠĠĠĠĠĠĠ Ġnew Table : ĠP g Table Base ?, Ġdrop Defaults Columns : ĠMutable List < Pg Column > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Column Ġin Ġnew Table !!. columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! old Table !!. contains Column ( new Column . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Column Ġ= Ġold Table . getColumn ( new Column . name ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew ColumnName Ġ= ĠP g Diff Utils . get Quoted Name ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Column . type Ġ!= Ġnew Column . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusing Ġ= Ġwhen Ġ( new Table ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠP g Table Ġ-> Ġ" ĠUSING Ġ" Ġ+ Ġnew ColumnName Ġ+ Ġ":: " Ġ+ Ġnew Column . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠP g Foreign Table Ġ-> Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t ALTER ĠCOLUMN Ġ" Ġ+ Ġnew ColumnName Ġ+ Ġ" ĠTYPE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Column . type Ġ+ Ġusing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Default Ġ= Ġold Column . defaultValue . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Default Ġ= Ġnew Column . defaultValue . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Default Ġ!= Ġnew Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Default . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t ALTER ĠCOLUMN Ġ" Ġ+ Ġnew ColumnName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠDROP ĠDEFAULT " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t ALTER ĠCOLUMN Ġ" Ġ+ Ġnew ColumnName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠSET ĠDEFAULT Ġ" Ġ+ Ġnew Default ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Column . null Value Ġ!= Ġnew Column . null Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Column . null Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t ALTER ĠCOLUMN Ġ" Ġ+ Ġnew ColumnName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠDROP ĠNOT ĠNULL " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . is Add Defaults ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdefaultValue Ġ= ĠP g Column Utils . getDefault Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Column . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( defaultValue Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t ALTER ĠCOLUMN Ġ" Ġ+ Ġnew ColumnName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠSET ĠDEFAULT Ġ" Ġ+ ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Defaults Columns . add ( new Column ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t ALTER ĠCOLUMN Ġ" Ġ+ Ġnew ColumnName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠSET ĠNOT ĠNULL " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġwhether Ġthere Ġis Ġa Ġdis cre p ancy Ġin ĠIN HER ITS Ġfor Ġoriginal Ġand Ġnew ĊĠĠĠĠ Ġ* Ġtable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠ Ġoriginal Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Schema ĠĠĠĠĠĠĠ Ġnew Ġschema ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck In herits ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, ĊĠĠĠĠĠĠĠ Ġnew Table : ĠP g Table Base ?, ĊĠĠĠĠĠĠĠ Ġnew Schema : ĠP g Schema ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( inherit Pair N Ġin Ġnew Table !!. inherits ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġschema Name Ġ= Ġinherit Pair N . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtableName Ġ= Ġinherit Pair N . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Found Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( inherit Pair O Ġin Ġold Table !!. inherits ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( schema Name Ġ== Ġinherit Pair O . first Ġ&& ĠtableName Ġ== Ġinherit Pair O . second ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Found Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Found ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinherit TableName : ĠString Ġ= Ġif Ġ( new Schema ?. name Ġ== Ġschema Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP g Diff Utils . get Quoted Name ( tableName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% s .% s ", ĠP g Diff Utils . get Quoted Name ( schema Name ), ĠP g Diff Utils . get Quoted Name ( tableName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ALTER ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t IN HER IT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġinherit TableName Ġ+ Ġ';' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( inherit Pair O Ġin Ġold Table !!. inherits ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġschema Name Ġ= Ġinherit Pair O . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtableName Ġ= Ġinherit Pair O . second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Found Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( inherit Pair N Ġin Ġnew Table . inherits ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( schema Name Ġ== Ġinherit Pair N . first Ġ&& ĠtableName Ġ== Ġinherit Pair N . second ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Found Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Found ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinherit TableName : ĠString Ġ= Ġif Ġ( new Schema ?. name Ġ== Ġschema Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP g Diff Utils . get Quoted Name ( tableName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% s .% s ", ĠP g Diff Utils . get Quoted Name ( schema Name ), ĠP g Diff Utils . get Quoted Name ( tableName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ALTER ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t NO ĠIN HER IT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġinherit TableName Ġ+ Ġ';' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOutputs Ġstatements Ġfor Ġdefaults Ġof Ġtables Ġwho 's Ġcolumn Ġbelongs Ġto ĊĠĠĠĠ Ġ* Ġan Ġinherited Ġtable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠ Ġoriginal Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Inherited Column Defaults ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Column Ġin Ġnew Table !!. inherited Columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! old Table !!. contains Inherited Column ( new Column . inherited Column . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Column Ġ= Ġold Table . get Inherited Column ( new Column . inherited Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Default Ġ= Ġold Column ?. defaultValue . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Default Ġ= Ġnew Column . defaultValue . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Default Ġ!= Ġnew Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE ĠONLY Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ("\ t ALTER ĠCOLUMN Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Column . inherited Column . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Default . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠDROP ĠDEFAULT ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠSET ĠDEFAULT Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( new Default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ("; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġtable space Ġmodification . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠ Ġold Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Table space ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( old Table ?. table space Ġ== Ġnull Ġ&& Ġnew Table . table space Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġold Table ?. table space Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġold Table . table space Ġ== Ġnew Table . table space ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ALTER ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġwriter . println ("\ t TABLE SPACE Ġ" Ġ+ Ġnew Table . table space Ġ+ Ġ'; ') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOutputs Ġstatements Ġfor Ġcreation Ġof Ġnew Ġtables . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġold Schema ĠĠĠĠĠĠĠ Ġoriginal Ġschema ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Schema ĠĠĠĠĠĠĠ Ġnew Ġschema ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Tables ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Schema : ĠP g Schema ?, Ġnew Schema : ĠP g Schema ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( table Ġin Ġnew Schema . tables ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Schema Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ! old Schema . contains Table ( table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( table . get Creation SQL ( new Schema )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( table . owner Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable . owner SQL ( writer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( table Privilege Ġin Ġtable . priv ileges ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RE VOKE ĠALL ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠFROM Ġ" Ġ+ Ġtable Privilege . role Name Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ!= Ġtable Privilege . get Privileges SQL ( true )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRANT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġtable Privilege . get Privileges SQL ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠTO Ġ" Ġ+ Ġtable Privilege . role Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠWITH ĠG RAN T ĠOPTION ;" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ!= Ġtable Privilege . get Privileges SQL ( false )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRANT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġtable Privilege . get Privileges SQL ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠTO Ġ" Ġ+ Ġtable Privilege . role Name Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( table . has RL S Enabled () Ġ!= Ġnull Ġ&& Ġtable . has RL S Enabled () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ALTER ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġ ĠENABLE ĠROW ĠLE VEL ĠSECURITY ;" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( table . has RL S For ced () Ġ!= Ġnull Ġ&& Ġtable . has RL S For ced () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ALTER ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġ ĠFOR CE ĠROW ĠLE VEL ĠSECURITY ;" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOutputs Ġstatements Ġfor Ġaddition , Ġremoval Ġand Ġmodifications Ġof Ġtable ĊĠĠĠĠ Ġ* Ġcolumns . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter Ġthe Ġoutput Ġshould Ġbe Ġwritten Ġto ĊĠĠĠĠ Ġ* Ġ@ param Ġarguments ĠĠĠĠĠĠĠ Ġobject Ġcontaining Ġarguments Ġsettings ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠ Ġoriginal Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate Table Columns ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġarguments : ĠP g Diff Options , Ġold Table : ĠP g Table Base ?, ĊĠĠĠĠĠĠĠ Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatements : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġdrop Defaults Columns : ĠMutable List < Pg Column > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġif Ġ( old Table Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Drop Table Columns ( statements , Ġold Table , Ġnew Table , Ġarguments . drop Cascade ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd CreateTable Columns ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatements , Ġarguments , Ġold Table , Ġnew Table , Ġdrop Defaults Columns ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġadd Modify Table Columns ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatements , Ġarguments , Ġold Table , Ġnew Table , Ġdrop Defaults Columns ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( statements . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquoted TableName Ġ= ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (" ALTER Ġ${ new Table . object Type } Ġ$ quoted TableName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġstatements . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( statements [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( if Ġ( i Ġ+ Ġ 1 Ġ< Ġstatements . size ) Ġ"," Ġelse Ġ"; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drop Defaults Columns . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (" ALTER Ġ${ new Table . object Type } Ġ$ quoted TableName ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdrop Defaults Columns . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ("\ t ALTER ĠCOLUMN Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP g Diff Utils . get Quoted Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Defaults Columns [ i ]. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠDROP ĠDEFAULT ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ+ Ġ 1 Ġ< Ġdrop Defaults Columns . size ) Ġ"," Ġelse Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġalter Privileges Columns ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġempty Line Print ed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Column Ġin Ġnew Table . columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Column Ġ= Ġold Table !!. getColumn ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Column Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( old Column Privilege Ġin Ġold Column . priv ileges ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Column Privilege Ġ= Ġnew Column ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Privilege ( old Column Privilege . role Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Column Privilege Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! empty Line Print ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Line Print ed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RE VOKE ĠALL Ġ(" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ") ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠFROM Ġ" Ġ+ Ġold Column Privilege . role Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( new Column Privilege Ġin Ġnew Column ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. priv ileges ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġold Column Privilege : ĠP g Column Privilege ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Column Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Column Privilege Ġ= Ġold Column ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Privilege ( new Column Privilege . role Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! new Column Privilege . is Similar ( old Column Privilege )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! empty Line Print ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Line Print ed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RE VOKE ĠALL Ġ(" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ") ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠFROM Ġ" Ġ+ Ġnew Column Privilege . role Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ!= Ġnew Column Privilege . get Privileges SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP g Diff Utils . get Quoted Name ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRANT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Column Privilege . get Privileges SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP g Diff Utils . get Quoted Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Column ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġ" ĠTO Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Column Privilege . role Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠWITH ĠG RAN T ĠOPTION ;" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ!= Ġnew Column Privilege . get Privileges SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP g Diff Utils . get Quoted Name ( new Column . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRANT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Column Privilege . get Privileges SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĠP g Diff Utils . get Quoted Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Column ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġ" ĠTO Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Column Privilege . role Name Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOutputs Ġstatements Ġfor Ġtables Ġand Ġcolumns Ġfor Ġwhich Ġcomments Ġhave ĊĠĠĠĠ Ġ* Ġchanged . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠĠĠĠĠ Ġwriter ĊĠĠĠĠ Ġ* Ġ@ param Ġold Table ĠĠĠĠĠĠĠĠ Ġold Ġtable ĊĠĠĠĠ Ġ* Ġ@ param Ġnew Table ĠĠĠĠĠĠĠĠ Ġnew Ġtable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġalter Comments ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( old Table ?. comment Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnew Table . comment Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġold Table ?. comment Ġ!= Ġnull Ġ&& Ġnew Table . comment Ġ!= Ġnull Ġ&& Ġold Table . comment Ġ!= Ġnew Table . comment ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" COMMENT ĠON ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ĠIS Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( new Table . comment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (' ; ') ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( old Table ?. comment Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnew Table . comment Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" COMMENT ĠON ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (" ĠIS ĠNULL ; ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( new Column Ġin Ġnew Table . inherited Columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Comment Ġ= Ġold Table ?. get Inherited Column ( new Column . name )?. comment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Column . comment Ġ!= Ġold Comment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Column . comment SQL ( writer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( new Column Ġin Ġnew Table . columns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Comment Ġ= Ġold Table ?. getColumn ( new Column . name )?. comment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Column . comment Ġ!= Ġold Comment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Column . comment SQL ( writer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġalter Privileges ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġempty Line Print ed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( old Table Privilege Ġin Ġold Table !!. priv ileges ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Table Privilege Ġ= Ġnew Table . get Privilege ( old Table Privilege . role Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Table Privilege Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! empty Line Print ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Line Print ed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RE VOKE ĠALL ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( old Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠFROM Ġ" Ġ+ Ġold Table Privilege . role Name Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! old Table Privilege . is Similar ( new Table Privilege )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! empty Line Print ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Line Print ed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RE VOKE ĠALL ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠFROM Ġ" Ġ+ Ġnew Table Privilege . role Name Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ!= Ġnew Table Privilege . get Privileges SQL ( true )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRANT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Table Privilege . get Privileges SQL ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠTO Ġ" Ġ+ Ġnew Table Privilege . role Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠWITH ĠG RAN T ĠOPTION ;" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ!= Ġnew Table Privilege . get Privileges SQL ( false )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRANT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Table Privilege . get Privileges SQL ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠTO Ġ" Ġ+ Ġnew Table Privilege . role Name Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// Ġelse Ġsimilar Ġprivilege Ġwill Ġnot Ġbe Ġupdated ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( new Table Privilege Ġin Ġnew Table . priv ileges ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Table Privilege Ġ= Ġold Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Privilege ( new Table Privilege . role Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Table Privilege Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! empty Line Print ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RE VOKE ĠALL ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠFROM Ġ" Ġ+ Ġnew Table Privilege . role Name Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ!= Ġnew Table Privilege . get Privileges SQL ( true )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRANT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Table Privilege . get Privileges SQL ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠTO Ġ" Ġ+ Ġnew Table Privilege . role Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠWITH ĠG RAN T ĠOPTION ;" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ!= Ġnew Table Privilege . get Privileges SQL ( false )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GRANT Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġnew Table Privilege . get Privileges SQL ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠON ĠTABLE Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠP g Diff Utils . get Quoted Name ( new Table . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" ĠTO Ġ" Ġ+ Ġnew Table Privilege . role Name Ġ+ Ġ";" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġalter Owner To ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Owner To Ġ= Ġold Table ?. owner ĊĠĠĠĠĠĠĠ Ġval Ġnew Owner To Ġ= Ġnew Table . owner ĊĠĠĠĠĠĠĠ Ġif Ġ( new Owner To Ġ!= Ġnull Ġ&& Ġnew Owner To Ġ!= Ġold Owner To ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Table . owner SQL ( writer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġalter RL S ( ĊĠĠĠĠĠĠĠ Ġwriter : ĠPrintWriter , ĊĠĠĠĠĠĠĠ Ġold Table : ĠP g Table Base ?, Ġnew Table : ĠP g Table Base ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(( old Table !!. has RL S Enabled () Ġ== Ġnull Ġ|| Ġold Table . has RL S Enabled () Ġ!= Ġnull Ġ&& Ġ! old Table . has RL S Enabled () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnew Table . has RL S Enabled () Ġ!= Ġnull Ġ&& Ġnew Table . has RL S Enabled () !! ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (" ĠENABLE ĠROW ĠLE VEL ĠSECURITY ; ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( old Table . has RL S Enabled () Ġ!= Ġnull Ġ&& Ġold Table . has RL S Enabled () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( new Table . has RL S Enabled () Ġ== Ġnull Ġ|| Ġnew Table . has RL S Enabled () Ġ!= Ġnull Ġ&& Ġ! new Table . has RL S Enabled () !! ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (" ĠDISABLE ĠROW ĠLE VEL ĠSECURITY ; ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( old Table . has RL S For ced () Ġ== Ġnull Ġ|| Ġold Table . has RL S For ced () Ġ!= Ġnull Ġ&& Ġ! old Table . has RL S For ced () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnew Table . has RL S For ced () Ġ!= Ġnull Ġ&& Ġnew Table . has RL S For ced () !! ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (" ĠFOR CE ĠROW ĠLE VEL ĠSECURITY ; ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( old Table . has RL S For ced () Ġ!= Ġnull Ġ&& Ġold Table . has RL S For ced () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( new Table . has RL S For ced () Ġ== Ġnull Ġ|| Ġnew Table . has RL S For ced () Ġ!= Ġnull Ġ&& Ġ! new Table . has RL S For ced () !! ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print (" ALTER ĠTABLE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . print ( Pg Diff Utils . get Quoted Name ( new Table . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println (" ĠNO ĠFOR CE ĠROW ĠLE VEL ĠSECURITY ; ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }