From f1f41e1802e11b53d8f85075e660bd70ce6ec1ab Mon Sep 17 00:00:00 2001 From: Emiya Date: Mon, 6 Jun 2016 15:35:17 +0300 Subject: [PATCH 1/3] Added support IBM DB2 --- lib/db2.data/Db2.Data.dll | Bin 0 -> 14848 bytes lib/db2.data/Db2.Data.pdb | Bin 0 -> 44544 bytes src/Dbdeploy.Console/OptionsManager.cs | 2 +- .../Database/DatabaseSchemaVersionManager.cs | 24 ++- src/Net.Sf.Dbdeploy/Database/Db2DbmsSyntax.cs | 75 +++++++++ src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs | 4 +- src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj | 12 ++ .../CreateSchemaVersionTable.db2.sql | 22 +++ src/Net.Sf.Dbdeploy/Resources/db2_apply.vm | 18 +++ src/Net.Sf.Dbdeploy/Resources/db2_undo.vm | 13 ++ src/SolutionVersionAssemblyInfo.cs | 4 +- src/Test.Net.Sf.Dbdeploy/App.config | 1 + ...bstractDatabaseSchemaVersionManagerTest.cs | 2 +- .../DatabaseSchemaVersionManagerTest.cs | 11 +- .../Db2DatabaseSchemaVersionManagerTest.cs | 153 ++++++++++++++++++ .../Database/DbProvidersTest.cs | 6 + .../Database/ScriptGenerationTest.cs | 4 +- .../OutputFileEncodingTest.cs | 3 +- .../Resources/Database/db2_expected.sql | 32 ++++ .../Test.Net.Sf.Dbdeploy.csproj | 7 + src/dbproviders.xml | 6 + 21 files changed, 380 insertions(+), 19 deletions(-) create mode 100644 lib/db2.data/Db2.Data.dll create mode 100644 lib/db2.data/Db2.Data.pdb create mode 100644 src/Net.Sf.Dbdeploy/Database/Db2DbmsSyntax.cs create mode 100644 src/Net.Sf.Dbdeploy/Resources/CreateSchemaVersionTable.db2.sql create mode 100644 src/Net.Sf.Dbdeploy/Resources/db2_apply.vm create mode 100644 src/Net.Sf.Dbdeploy/Resources/db2_undo.vm create mode 100644 src/Test.Net.Sf.Dbdeploy/Database/Db2DatabaseSchemaVersionManagerTest.cs create mode 100644 src/Test.Net.Sf.Dbdeploy/Resources/Database/db2_expected.sql diff --git a/lib/db2.data/Db2.Data.dll b/lib/db2.data/Db2.Data.dll new file mode 100644 index 0000000000000000000000000000000000000000..4c2fb75db8c038525288f54f8bc4c1714d26e051 GIT binary patch literal 14848 zcmeHOeRLdGb-!rc+9~1x4ralwUG?=^ zdMNts=10VyZ#R!l=Dg&z>rA-TR5D`~3QjROW+&ZJA(<;A(?cW4DJN@p)YQb*DAoJ= ziS`JcX7}zt7>xEJY0YsFC+Y+x;!_6)aZloN3?HI8+17l!nZWkT>yv<>^QF_y+gX(V zRqhI960YCvB^u(!F$`B$!UT2A5-mXUi9JLs0@{__lV#JTbOiYIRsA}O_NgN9(GCFc zU2C`4!5iMm%22}%9GgI!unJy8tG^jo3Bpmp0wJHsuff$0^raW1+@qSVkSD1l+o zBN2353|6d-%ypm#d`z#*Uvdc_@>u%{e<}DLI-5#KL#IaQQ!S%A%jOCN;~*r;A-->OkrEryP*lK0l*36f``cnC5mHah#L0RA0fL|HEMe2K-3l~nW zih8X;XL&;F4wPevS1ooc))H~VYp)S}M(mS7L~p^Wm@&=t+Nwn%8zO`fA&bCc5;TG(>nCV>$xFF(U@uwYRn;1o$6mC8N+bp)e&UD|*+zmh$zb@Lu5^4x1 z!rQ(BL#PEyZq`H_Ul(98xjjMd1jOAt0laSXIlZ{SplCy6aYM9iT_Tc*-qR4GM9BRc zR>~s;JxyBDV6-iwM0ClahG-(1hKGJ)NsV#>@R>A4n)J@fN0jVQ55SbusbwbL`&8aat61fw57*y$FX?W zx9ZZ)a18kU>0$`Mc9CeEka=BDU4lYb9udU7+GDZ{)~+gdXi|9o`ss)twy@hb63^b4!gM*HZYcV0wr%Kev>1?5ys?c|z@D*{280N4nJpBkCDC%AA!&NQTFez;xF$s$$^bB1m)P5nd_-5yA%#1j@aceMC za4@qH90_9`@fvarq!0V+&apQPTM!TlGW?CTAc8n+*#kv&8ZQWr>=^d$AZ~FAJ43ir zI2ch2JNuYG7wb6m(6%UUtDK$5nb9xJm zv>b$}GoN2Q4<|dHkC3S7x99UwcU1V}6+Y)H9P_l2 z`DI5>Kp=iGiR9=^qUoN)&Il?9WTX%^#xH8Gzlp-tXIK(v70xg}m!Q_GjF+p77x0tS z{F~?V5rUQew^Z|WS_^v-`xQQ$8}ssj@vzx4g?kICF_Xdz+9fBsah zfrIlT2sPOsXC{&-kEyqG%BT=$HvahU7La6X#XD+GD@ir{h9-9is9j(4@|3Dh|3&68*-Rj=FGseQWV23!k>Qm7u8uXj1H?Wh? zoe+!sY{Rtx`9vlSU4s zeB5|9+RH=SJ|>|D7^Cwcwqa@544ZVVgtvtEpgkkocT4!7gx`|z#}ZP6<(EZRaz~^+ z0-cgFBjLRgekby`k$dS!2ws!wqyG+>F2GuvjI#ZAL`zYV?uxQK4+1Wx7otysvNpz) zL$T{)CRq~xg`|8T#v?u<+uw^l1@4Oyu8l8_o75lYUIhu?3&@x6b3c0O@PvC6R)R59 z$h1*nx?HC^>XVp3Eu^E<4d~m1+ItXL;qTy~6n$M>hxSjjy8w3>-vYeJcpiGDj28e; z8$SfR-*_2?L!WtC9GKm0-U>J(;UNic1l*TotL|9(4AxN4n8aQd&*E&==(xgOkl3uk zUXs{Zh5ZiJYV?4@7KkQb7ZkQaGz0rp8M_A9(q_W-ve+it5tmzhEPB020o$*zgJKh~ zNrjcfc4Vd76?VJm0d}{-o)Wv^zppCnc`*d+S%tjKTp=+WicVeFJ< zg|%rn0qa)SsFp>gF{&_6%KqZW{T#*hPvDvNZi)H6j?>c$Td8jc@26$#)4*a^ORL2Wy%EoQ%M_N@hk&hD z*ob~V^1z_NEJ)VSF&~SL>$`!?D(npU)zD`Yc2;k~%0Hp7&qA`6UQ*aM^e+K3IQ7Ho zH}tOoJFBn_#$%kf_?VK>^9(BEE{XXwYNWKnb{QN^S%nP(TSV`b*lqN%(TF`(hl7k` z;v2@#fpshFg7GWtkGmE2yzv?$?Gc6j$asU6(Q^v>xnYPm(SIrIH6tpP(^AxstW$() z@d&$JVX@Fs#N-i$)rXqIRWz%xWN58eOP^F&OQ>D6(0PTWLS3SjUR2n&&}M;Vn?FKd zXuD{mq{8-udc=C#sjvf~XQ`deDr_>eOLWi!3j34L9&s&QP}uuJ!=jUZA+bB?Z0Hbn z#2S?SJcoNjhUlWSk3~NhYN8F4RoKI!UjdsfV>gLz`m*ZB@v@PgP}sLZ8L^RGQrPpM zNnmyD{s=EgtkcJ$uV93Yv`=Bbl)Pz$k;y#HW0uJA@OcS;DB&v-zAE8s5(>eRQ3(@(cZp@P z-7I0NgeeKP0^TDA07vNtK+aGMml5yD1fI1Raz;-OXYvGb22T)YZid$Ya;8oYXXpf; z!ZrbNMotiC;skL9K1_$BkBJ0v{!I|)U1$@dfShL&#Q8NroL3XX`7}YCM-Ri2?+Z&> z#c+sn;=bs=h~wgs=x#bL&PQJsGob$(@Ym5Hnh|D<=}Th2h0IF8+a&k6c#EW*hii`u zw&YGR6CeEMD#CfxsIA1ms=gDT`{MbyK7n_Om zVKZ?ayiZ#AAYdcTUd}3C6aO09r+rQQEOtnHQ2Zu#qjrw8xC1CcMNpoh)8NMAjdUj^ z;8JrRa9LIzotKg zcB9FZRc2l=#CsZABPr|56KHQhTSJ|oW7IgHhEcgXtdVdbY7`A8a2S*XaUQ9YupY7k z9*l#+r#`OV;YxS(UQsRabw1)dT3noG-Fh88w1mHVl95+iV~maOf2 zoop#@@1XQpS4Y|^S{>PZo{>IhYRW2PD|Dvib9SNVa|;DKQ_ML9#<<_GZDnnj`kZ`e zsxUe;ZTA;SQ#9pe952GTii+VQNhyzP_AgA7y+ zq1sTKB{|5^jIy;OQ^aGjuf(Q(u03tJHuYJBjGbqNtYn{sFK6u{o9fzD(XQbAr|e9r zXb(Dt8%nl2LkcfXO!}kOp0rNnFpA=iWURd9(u7?++UJzb_2!}&depTFp5=Rtg{yIv zuEu>|b&TRG(vD$!qJ#nZPffeF=fU3|fn=YevfV!F8z4>Oe&kzF!K?YXDcdQ{6;UL$ z5WIY9O1=iht2Ht%m!WJ0);+HRf`=;8J=#B=g`0<+lOs;a&G>qKTDC%D<@1PD4y|@i zU?fj7Xe;~Y4O=w?qNKb&*V)C2a{u)Kfi{#K%cR}h3ELe+jCj;*Pvi>KLl1aP-r}g= zW1m1s_2nH8@il1`CTxzaF^f?dR?09Mnzjp|BKpe|5J%Otm|D?ap2kQK zj+M&&*1RcI2!W=u7QYAPEMJDGh&wcuCw$UQrZmMHy($o~(=tvLuUTl1V`Y`KM=@32 z^iabN<2w();Un>*-b^7g>^Mb|5rq{9l7mMI3C5_zkJoXXU9jC;1{+!K7t5VF))mP6 z3)5flO0LaHJsxyd&dz7$5I_!C`I0n6HY9(@h2>VBMSC45Z(9Y~oPqb4gu4{OLdv=D z9fVRY%k1DjP$;H0F#(MYU8=FEn;X0Gj#cDF+9`4FLQ8olZD(>*{>VWS9*9sjsj6^9TZ!61FscBQNc_A+j6 znlnL#8EC-*VR<_cCbsKLkJ#>sT!sS-@l+8GG+~R5=O#+7%qo{-Pfc5enfZ);F3#;t zaXzEZnVxZT6O)%=A(LehAnq-f>4lZUj;b(_zYgTQ9HO~G3nplLGLw5WXqSqvl}DWU zggr=vC2OLpOEAp?w#$cCMOVNWD2zMql$^bl{~x7xvKUxnxqPlzwLC!; zg-th|w{Y5ZWMoYu59uKpFl7_c2=)#>a)?1CS0mM)$hl5IreNObd#%i5uHdIswE;$* zJOf(d71u*dvPBX+SU-;?vngZMd-L++M4jR%=S=s#Yv@*Zm_S~-*) zJ??}&5jYq1pUNO1U@-}2h+Fgy=CGUg<}$A1Ipf8SgSi5-Bj%g)iYTIj#%_BCCkKip zH5qv@j+Dljj?^V{wV&Gu3fRrLEDlb8Q&h%N8D=kbrtMZ%g!6acfq@|c+i_4l+CsbXC2vxmZh^AVNlq_(=IwO~IW8^xc~4VM zHcQU*QRyVCKBDtu*e=(ZQk4Evxgu)Dz;$w2QP5$tkeYCx@VbS z=Grvs?4O1=WO=XS7Z=f;bcC{aj-zOn#_)4EeCgOcLNjuP&aokIwWzk+cMYxikiw$90X=*Op4_AOgYZCJem8aQ zFCYKr)9-8UeNRJI&sWcW=v9h5eEP_NW!*2{shjoDP*RBcsGcNYB&og`jR-dunMqN< zC~-CL6^tjOT!Ndeve}Bx?cmlLP#^*KOQe{YNU_{T#LS)1Y)3U zqYqO7HdWqR;H+!U%`6p7#~lKTGI`T=xWB#l`FBWfd> zxxz4;>h}U98pGzI`Wv*`2>A7TVVYRM%}5hwBO+|C#>7x0nheDvv8GUjQ9VHQ2ummS zGtp!q*)eV{U{E93hb6p`A=)3k z4G{}P9(e1~cP0KIwhevQxtMmXNjf;Sb>UcTZT;+{O|=lznrb74SwH&}dw%vQoxl|7WGP1Bq%M^IM2tIz7KBZBw0`z^Kn=64AAoO~LNHw5 z#9*EoZ6jR#$eb7j)OLtJv8cW*M?+m#$j_x2^z!vhEUhkZu*xbj)}$+kQU zlLz?gX8iHbwa58A!AZxxCD}39KPp*7n+4&`h^nxXkAFT{89&+8ncCEm?8)bovi|at zcw$HKXJ_#%ny?@Z4}w&WS57H^jP|U2hQw=O3M&$RhXX`91Py$Vifbi*fjO!z=856e zMEQik;pCj;pWewU`29G?_zDnTL~42w;|`CcN9s0z<&lYt(r}HmH4xrvRs;a6HR2)O7JC4fgV;9;4;H9)U0ajw(-He0=eK zt-jJg1hiVHS$3hu%A>{_Kn2E?7+-7To83`xEl@r1xfb+mI4M967+d%Vn^V!v*VHIw zI`RF2|JRK=vJ(or@g7~EYIIO(PRlW7FfR+3E!7{CH6mA{6Viq+g1Q~=(?!|ZG=CxX#odArDi&TkMh9wF zzj`BjKfb#WsO#8v?!~j5MrF;GPS7MY(q(8#`aCxN{COu)Wp_g3CRmq5Wy+%@t8{r1 zV_&eHTq|cG$yZv=VMxhx&CS*XYs8rE?f-2qFVIbx%RcCEptmF|`HC0tyH9W|%x+qa zo`jTNtta8TD|t?+?y(pC;q`Pd7YC8ZPX<8+p2P^uIRTlh8tVW&Q@v_Q@CxWNE^Xqu zokR~8-%lkWH;9UU6s@2a(N26@bLreJjf}Z*(Jsg48Rp^NEi$HhU@iN83Q?EGD)R_) gqie1Xxio(Se@GtK>Hkc5-;O_|N&RsySL%WP1}M&4xBvhE literal 0 HcmV?d00001 diff --git a/lib/db2.data/Db2.Data.pdb b/lib/db2.data/Db2.Data.pdb new file mode 100644 index 0000000000000000000000000000000000000000..1899c21023ab374d3f6d17dd9e5de98f52ca0615 GIT binary patch literal 44544 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 literal 0 HcmV?d00001 diff --git a/src/Dbdeploy.Console/OptionsManager.cs b/src/Dbdeploy.Console/OptionsManager.cs index e643f0b..5cb7ca0 100644 --- a/src/Dbdeploy.Console/OptionsManager.cs +++ b/src/Dbdeploy.Console/OptionsManager.cs @@ -87,7 +87,7 @@ private static OptionSet Initialize(DbDeployConfig config, ConfigFileInfo config options .Add( "d|dbms=", - "DBMS type ('mssql', 'mysql' or 'ora')", + "DBMS type ('mssql', 'mysql', 'ora' or 'db2')", s => config.Dbms = s) .Add( diff --git a/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs b/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs index 4b00608..aecb5b0 100755 --- a/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs +++ b/src/Net.Sf.Dbdeploy/Database/DatabaseSchemaVersionManager.cs @@ -129,17 +129,25 @@ public virtual void RecordScriptStatus(ChangeScript script, ScriptStatus status, var completeDateValue = status != ScriptStatus.Started ? this.syntax.CurrentTimestamp : "NULL"; if (script.ChangeId == 0) { + var insertSql = string.Format( + CultureInfo.InvariantCulture, +"INSERT INTO {0} (Folder, ScriptNumber, ScriptName, StartDate, CompleteDate, AppliedBy, ScriptStatus, ScriptOutput) VALUES (@1, @2, @3, {1}, {2}, {3}, @4, @5)", + this.changeLogTableName, + this.syntax.CurrentTimestamp, + completeDateValue, + this.syntax.CurrentUser); + + // Execute insert. + this.queryExecuter.ExecuteQuery(insertSql, script.Folder, script.ScriptNumber, script.ScriptName, (int)status, output ?? string.Empty); + + var sql = string.Format( CultureInfo.InvariantCulture, -@"INSERT INTO {0} (Folder, ScriptNumber, ScriptName, StartDate, CompleteDate, AppliedBy, ScriptStatus, ScriptOutput) VALUES (@1, @2, @3, {1}, {2}, {3}, @4, @5) -SELECT ChangeId FROM {0} WHERE Folder = @1 and ScriptNumber = @2", - this.changeLogTableName, - this.syntax.CurrentTimestamp, - completeDateValue, - this.syntax.CurrentUser); +"SELECT ChangeId FROM {0} WHERE Folder = @1 and ScriptNumber = @2", + this.changeLogTableName); - // Execute insert and set change id so it can be updated. - using (var reader = this.queryExecuter.ExecuteQuery(sql, script.Folder, script.ScriptNumber, script.ScriptName, (int)status, output ?? string.Empty)) + // Execute set change id so it can be updated. + using (var reader = this.queryExecuter.ExecuteQuery(sql, script.Folder, script.ScriptNumber)) { reader.Read(); script.ChangeId = reader.GetInt32(0); diff --git a/src/Net.Sf.Dbdeploy/Database/Db2DbmsSyntax.cs b/src/Net.Sf.Dbdeploy/Database/Db2DbmsSyntax.cs new file mode 100644 index 0000000..14a487a --- /dev/null +++ b/src/Net.Sf.Dbdeploy/Database/Db2DbmsSyntax.cs @@ -0,0 +1,75 @@ +using System; +using System.Globalization; + +namespace Net.Sf.Dbdeploy.Database +{ + /// + /// IBM DB2 syntax. + /// + public class Db2DbmsSyntax : DbmsSyntax + { + /// + /// Initializes a new instance of the class. + /// + public Db2DbmsSyntax() + : base("db2") + { + } + + /// + /// Gets the get timestamp. + /// + /// + /// The get timestamp. + /// + public override string CurrentTimestamp + { + get + { + return "CURRENT TIMESTAMP"; + } + } + + /// + /// Gets the syntax to get the current user. + /// + /// + /// The current user syntax. + /// + public override string CurrentUser + { + get + { + return "CURRENT USER"; + } + } + + /// + /// Gets the syntax for checking if a table exists. + /// + /// Name of the table. + /// SQL for checking if a table exists. + public override string TableExists(string tableName) + { + // Use correct syntax for with and without schema. + string syntax; + var tableInfo = this.GetTableInfo(tableName); + if (!string.IsNullOrWhiteSpace(tableInfo.Schema)) + { + syntax = string.Format(CultureInfo.InvariantCulture, +@"SELECT TRIM(TABSCHEMA) || '.' || TRIM(TABNAME) +FROM SYSCAT.TABLES +WHERE TABSCHEMA='{0}' AND TABNAME='{1}'", tableInfo.Schema.ToUpper(), tableInfo.TableName.ToUpper()); + } + else + { + syntax = string.Format(CultureInfo.InvariantCulture, +@"SELECT TRIM(TABSCHEMA) || '.' || TRIM(TABNAME) +FROM SYSCAT.TABLES +WHERE TABNAME='{0}'", tableName.ToUpper()); + } + + return syntax; + } + } +} \ No newline at end of file diff --git a/src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs b/src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs index 8d4e8fd..b003f8f 100755 --- a/src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs +++ b/src/Net.Sf.Dbdeploy/Database/DbmsFactory.cs @@ -24,6 +24,8 @@ public virtual IDbmsSyntax CreateDbmsSyntax() { switch (this.dbms) { + case "db2": + return new Db2DbmsSyntax(); case "ora": return new OracleDbmsSyntax(); case "mssql": @@ -31,7 +33,7 @@ public virtual IDbmsSyntax CreateDbmsSyntax() case "mysql": return new MySqlDbmsSyntax(); default: - throw new ArgumentException("Supported dbms: ora, mssql, mysql"); + throw new ArgumentException("Supported dbms: db2, ora, mssql, mysql"); } } diff --git a/src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj b/src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj index cbdca51..4f359a2 100755 --- a/src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj +++ b/src/Net.Sf.Dbdeploy/Net.Sf.Dbdeploy.csproj @@ -124,6 +124,7 @@ + @@ -189,6 +190,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + @@ -211,6 +218,11 @@ PreserveNewest + + + PreserveNewest + + + + ..\..\lib\db2.data\Db2.Data.dll + False ..\packages\Moq.4.1.1308.2321\lib\net40\Moq.dll @@ -128,6 +131,7 @@ + @@ -214,6 +218,9 @@ PreserveNewest + + Always + Always diff --git a/src/dbproviders.xml b/src/dbproviders.xml index 6e68757..9142254 100755 --- a/src/dbproviders.xml +++ b/src/dbproviders.xml @@ -16,5 +16,11 @@ description="MySQL, MySQL provider 1.0.7.30072" assemblyName="MySql.Data" connectionClass="MySql.Data.MySqlClient.MySqlConnection" + /> + From 4092da09859b606c81e9a32485ee8b24a12af254 Mon Sep 17 00:00:00 2001 From: Emiya Date: Tue, 7 Jun 2016 18:20:13 +0300 Subject: [PATCH 2/3] Use "Wintegra.Data 1.0.0-alpha1" --- lib/db2.data/Db2.Data.dll | Bin 14848 -> 0 bytes lib/db2.data/Db2.Data.pdb | Bin 44544 -> 0 bytes .../Db2DatabaseSchemaVersionManagerTest.cs | 3 +-- .../Test.Net.Sf.Dbdeploy.csproj | 7 ++++--- src/Test.Net.Sf.Dbdeploy/packages.config | 1 + src/dbproviders.xml | 4 ++-- 6 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 lib/db2.data/Db2.Data.dll delete mode 100644 lib/db2.data/Db2.Data.pdb diff --git a/lib/db2.data/Db2.Data.dll b/lib/db2.data/Db2.Data.dll deleted file mode 100644 index 4c2fb75db8c038525288f54f8bc4c1714d26e051..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14848 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 diff --git a/lib/db2.data/Db2.Data.pdb b/lib/db2.data/Db2.Data.pdb deleted file mode 100644 index 1899c21023ab374d3f6d17dd9e5de98f52ca0615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44544 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 diff --git a/src/Test.Net.Sf.Dbdeploy/Database/Db2DatabaseSchemaVersionManagerTest.cs b/src/Test.Net.Sf.Dbdeploy/Database/Db2DatabaseSchemaVersionManagerTest.cs index 1353437..a65214e 100644 --- a/src/Test.Net.Sf.Dbdeploy/Database/Db2DatabaseSchemaVersionManagerTest.cs +++ b/src/Test.Net.Sf.Dbdeploy/Database/Db2DatabaseSchemaVersionManagerTest.cs @@ -6,7 +6,6 @@ using System.Text; using Net.Sf.Dbdeploy.Appliers; using Net.Sf.Dbdeploy.Configuration; -using Net.Sf.Dbdeploy.Database.SqlCmd; using Net.Sf.Dbdeploy.Scripts; using NUnit.Framework; @@ -55,7 +54,7 @@ protected override string Dbms protected override IDbConnection GetConnection() { - return new Db2.Data.Db2Client.Db2Connection(ConnectionString); + return new Wintegra.Data.Db2Client.Db2Connection(ConnectionString); } protected override void InsertRowIntoTable(int i) diff --git a/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj b/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj index f2f3b62..d970df3 100755 --- a/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj +++ b/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj @@ -78,9 +78,6 @@ --> - - ..\..\lib\db2.data\Db2.Data.dll - False ..\packages\Moq.4.1.1308.2321\lib\net40\Moq.dll @@ -106,6 +103,10 @@ + + ..\packages\Wintegra.Data.1.0.0-alpha1\lib\net20\Wintegra.Data.dll + True + diff --git a/src/Test.Net.Sf.Dbdeploy/packages.config b/src/Test.Net.Sf.Dbdeploy/packages.config index 371b860..dc5ec2b 100644 --- a/src/Test.Net.Sf.Dbdeploy/packages.config +++ b/src/Test.Net.Sf.Dbdeploy/packages.config @@ -2,4 +2,5 @@ + \ No newline at end of file diff --git a/src/dbproviders.xml b/src/dbproviders.xml index 9142254..1db9df5 100755 --- a/src/dbproviders.xml +++ b/src/dbproviders.xml @@ -20,7 +20,7 @@ From 561a337766e7b94864a72061dfd6ead28f36adda Mon Sep 17 00:00:00 2001 From: Emiya Date: Tue, 18 Oct 2016 19:17:36 +0300 Subject: [PATCH 3/3] Update Wintegra.Data to 1.1.2 --- src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj | 4 ++-- src/Test.Net.Sf.Dbdeploy/packages.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj b/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj index d970df3..b07d507 100755 --- a/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj +++ b/src/Test.Net.Sf.Dbdeploy/Test.Net.Sf.Dbdeploy.csproj @@ -103,8 +103,8 @@ - - ..\packages\Wintegra.Data.1.0.0-alpha1\lib\net20\Wintegra.Data.dll + + ..\packages\Wintegra.Data.1.1.2\lib\net20\Wintegra.Data.dll True diff --git a/src/Test.Net.Sf.Dbdeploy/packages.config b/src/Test.Net.Sf.Dbdeploy/packages.config index dc5ec2b..d432bdf 100644 --- a/src/Test.Net.Sf.Dbdeploy/packages.config +++ b/src/Test.Net.Sf.Dbdeploy/packages.config @@ -2,5 +2,5 @@ - + \ No newline at end of file