From f9cf2df077f0f680f807c00b142971601ca4bb6f Mon Sep 17 00:00:00 2001
From: Olivier Bertrand <bertrandop@gmail.com>
Date: Sun, 11 Mar 2018 23:46:33 +0100
Subject: [PATCH] - Fix MDEV-15429 CONNECT engine JDBC handling Postgresql UUID
 type   Also handle Postgresql sending type VARCHAR for TEXT column and  
 setting length to b x7FFFFFF when the length is unknown.   modified:  
 storage/connect/Client.java   modified:   storage/connect/JavaWrappers.jar  
 modified:   storage/connect/JdbcInterface.java   modified:  
 storage/connect/PostgresqlInterface.java   modified:  
 storage/connect/global.h   modified:   storage/connect/ha_connect.cc  
 modified:   storage/connect/jdbconn.cpp   modified:  
 storage/connect/jdbconn.h   modified:  
 storage/connect/mysql-test/connect/r/jdbc_postgresql.result   modified:  
 storage/connect/mysql-test/connect/t/jdbc_postgresql.test   modified:  
 storage/connect/mysql-test/connect/t/jdbconn.inc   modified:  
 storage/connect/plgdbsem.h   modified:   storage/connect/tabjdbc.cpp  
 modified:   storage/connect/tabjdbc.h

---
 storage/connect/Client.java                   |  27 +-
 storage/connect/JavaWrappers.jar              | Bin 44053 -> 19192 bytes
 storage/connect/JdbcInterface.java            |  54 ++-
 storage/connect/PostgresqlInterface.java      |   5 +-
 storage/connect/global.h                      |   6 +-
 storage/connect/ha_connect.cc                 |  21 +-
 storage/connect/jdbconn.cpp                   | 339 ++++++++++++------
 storage/connect/jdbconn.h                     |  11 +-
 .../connect/r/jdbc_postgresql.result          |  35 +-
 .../connect/std_data/JavaWrappers.jar         | Bin 0 -> 19192 bytes
 .../mysql-test/connect/t/jdbc_postgresql.test |  33 +-
 .../connect/mysql-test/connect/t/jdbconn.inc  |   7 +-
 storage/connect/plgdbsem.h                    |   3 +-
 storage/connect/tabjdbc.cpp                   |  11 +-
 storage/connect/tabjdbc.h                     |   2 +
 15 files changed, 383 insertions(+), 171 deletions(-)
 create mode 100644 storage/connect/mysql-test/connect/std_data/JavaWrappers.jar

diff --git a/storage/connect/Client.java b/storage/connect/Client.java
index aaf1b7bf2f8..afa54fa4256 100644
--- a/storage/connect/Client.java
+++ b/storage/connect/Client.java
@@ -1,9 +1,13 @@
+
 package wrappers;
 
 import java.io.BufferedReader;
 import java.io.Console;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
 
 public class Client {
     static boolean    	 DEBUG = true;
@@ -58,6 +62,9 @@ public class Client {
 		  String query;
 		  System.out.println("Successfully connected to " + parms[1]);
 		  
+		  s = jdi.GetQuoteString();
+		  System.out.println("Qstr = '" + s + "'");
+		  
 		  while ((query = getLine("Query: ", false)) != null) {
 		    n = jdi.Execute(query);
 		    System.out.println("Returned n = " + n);
@@ -79,7 +86,11 @@ public class Client {
 	private static void PrintResult(int ncol) {
     	// Get result set meta data
     	int i;
+    	Date date = new Date(0);
+    	Time time = new Time(0);
+    	Timestamp tsp = new Timestamp(0);
     	String columnName;
+		Object job;
 
     	// Get the column names; column indices start from 1
     	for (i = 1; i <= ncol; i++) {
@@ -112,6 +123,7 @@ public class Client {
 	    		case java.sql.Types.VARCHAR:
 	    		case java.sql.Types.LONGVARCHAR:
 	    		case java.sql.Types.CHAR:
+				case 1111:
 			    	System.out.print(jdi.StringField(i, null));
 	    			break;
 	    		case java.sql.Types.INTEGER:
@@ -120,14 +132,17 @@ public class Client {
 	    		case java.sql.Types.BIGINT:
 			    	System.out.print(jdi.BigintField(i, null));
 	    			break;
-	    		case java.sql.Types.TIMESTAMP:
-			    	System.out.print(jdi.TimestampField(i, null));
-	    			break;
 	    		case java.sql.Types.TIME:
-			    	System.out.print(jdi.TimeField(i, null));
+	    			time.setTime((long)jdi.TimeField(i, null) * 1000);
+			    	System.out.print(time);
 	    			break;
 	    		case java.sql.Types.DATE:
-			    	System.out.print(jdi.DateField(i, null));
+	    			date.setTime((long)jdi.DateField(i, null) * 1000);
+			    	System.out.print(date);
+	    			break;
+	    		case java.sql.Types.TIMESTAMP:
+	    			tsp.setTime((long)jdi.TimestampField(i, null) * 1000);
+			    	System.out.print(tsp);
 	    			break;
 	    		case java.sql.Types.SMALLINT:
 			    	System.out.print(jdi.IntField(i, null));
@@ -141,6 +156,8 @@ public class Client {
 	    		case java.sql.Types.BOOLEAN:
 	    			System.out.print(jdi.BooleanField(i, null));
 	    		default:
+					job = jdi.ObjectField(i, null);
+					System.out.print(job.toString());
 	    			break;
 	    		} // endswitch Type
 	    		
diff --git a/storage/connect/JavaWrappers.jar b/storage/connect/JavaWrappers.jar
index ef407f6a9c2d1e0ad1730c4b7194b012572ba8ce..33b29e7685b66ee03d1b3f5921f2ba32d48f76b3 100644
GIT binary patch
delta 13062
zcmZ8|1yCMKvo=m}65K<8H)w$H;_eXK-QC?~gS)%C1oz-B!QI{6-EYqS)qn4~x3{-;
zXZD$?>7J^t?U`p17N8yyAW>x{pkXi}K79B9Q4wz@8H1_?Q}oZ%1`KE@D5zk*vG|`v
z6Gq!JQ;U@+p_j>-$AChWh5AH<K9(&ki`##Im$BbshqtN!J;1{`T}|(0kutUbPuE{P
z=J=#&@`UzeQ1W_5N}i2Z6rh*YHotVNajao++NU!PJQH>Ddy-9lt~w3OOZpMG4Jx#p
zALb177)_;g4`iw|K><R3^10mhr)YvSW)Wb}(uAi8uuQ{IMi628PtrdI^3?`{{HcOR
zsU8dK)WD!5M7*A+ViQ{YhN9Cl>(QggUt?H$of-^UKJ7QhP(K1DgZGR%+yn(VISx4Y
z-J!G&g<qR9Rj(vz?9^RwxB^mQ4?Z0f=ON@_a8nOu|NL`dBMoF5Elt;|j2{*J;QH9-
zJn{`Yf|kfKQcKNA@37BPf5~A)pNE-|l_5v}aJq^}&ZiJ#d%#4Rd0VQLqFON9Dx;5X
zo(U1(Ss%xsA<3LE%~?Oxl$a5vEgDfTs&gz<hvV@6<W2p{lS6aSeal^J97PBu@{itm
zN^6*@DjXZ6Ke50kHR0y4wja8>EdKs{jfzg$M=pFl=xZN8M9|?bmNMZ?L3teE&ig5Z
zc&YR-pvD-jeI8ytrW-fH9;9ZzC=uJ@_K~J&PtnB<!PsFxosJhnAh-OQRV<vMYG@Vs
z$$60JG}pRX!7>bTCcIlLSClRfKeB`iMyn^yj+Vk*r^gQ9W&W{)9~ql5!BAoNaj4L7
zzD<vly>B-@a60*OQf$eB7}2-)5G@$82R=c3lSLEBVRbjFxq`3CjIyofq4DNr4)}$(
znKon+ZuJJ*&A44)WAbkmw_PIjfohsx7~Q!oT$_Ky@SVG7{fM8`GLSm;XfM-4RXJc!
zqS}FJXy0oF%u}M6J$+?TrWN3xD>ry?+apu4NN}FlDcyORD@grlC$-+KP1-yV=O!4U
zxV{e6ZANfPca73)I6V?|q%gmLbkD_;CFM{KJ)27s8k-X{B8)w2DKZ*o=G@k2##;8Q
zP@%hsKeVU~G?dLAPHZr|^ivGTPnSjN2}UNb9=f9d8S<z3Gw@UIwWU}U68qeT&9uL;
zMd~HAhoXe|w}vB_2GJ6Gl_zCVLl^cq6kM`uHWdvvWO*Z2?40cr-hf!Rv!A+L7q~g_
zE6ks}nMdfe3oVgU>aT4sXND>TKB%Bet|_{-Y-^AhObga=3l1wdYI}#D=}g{r-WQ`U
zf81CCM24L+IVbvb0#@40wfL1=MuR_jAl=iU)4P`Q3w&5VRkqY{qIm;pG8xfC^!Rjj
z%GQXJ`+cF>ra5>ejtM%jS=SPwCAKnOSLyc-#ImB^-XOtkN=N4DIZz<S+uY0#|53p9
zeF1#)^^4q~4c-8pUxGq(QFXB-oYzm&s_?iZU~6&%BmJYR{~+6{6i*kd(*pzX`kY3;
zXw=2x_ovt#SFoZ;#p$E1E?!#601ybR<@21s64vs7iu86bN~;`OcQ74!RR>F26A^7g
z^OWp&+S&x&^1y4Fd@Og;FW$=*4`=()&-2XVk@Ehs>vVt_`xX^-QzNp!MQoE8bsL@#
z$Vrl;oxZ{$?12t{9LzGoOX)GcQqj%XNOFf2Uhp<kmc1e~&!1%;f(k$3A#9{Ig5mAy
z`9zS1#k<L2UBz-A?1u5%)gq;3`5~RN&m3(BDfUBk@+TMnji-R#V8diwYqL>tTFD=@
zA_s3Y9cUeIII<G(9|%LU@(y7jAkIEOph5gkXbk!r661Uv@#30_uxjUFuV7&Qe@*Qk
zA}s8GO6O>F02)&qD-)Lh;fL=q48eS#5+SI?K71gj?Wzh8hE^p4MKQ3YAlMi$Se7c;
z{+d;%QOfsKvN)1g=Hyq9J)UcxnVVZuU#^@}uTN07sxMccdT&j!WKjRQKCCqcjB`J?
z-KT7$k-*v}rW<4@WuJpMXI3m1L#|3pdqXKu8ew6N0YL)6-AUQ9YR}2kTV*z?3&ruw
zdd~_z<trp4>0eF^F|KY(T#3P=<-efjp8|t*b*;V*KcZN4Ggs#uRiXr7ZImO6l2wb@
zb5v6l(7>FPxccov_c3hpXOa|UXZi4<AtYLhlb3@qUganmx>HtRUVr?M`NYqjVcz{y
z#e*M%2Y484Vfj>xU6?wjdRH@nuSHNC5hOT?Mar4GePXCxK$c4K4Vjq{7t|+F5k{^!
zj}b1Uv?7%wCdrU(sAR<|7w1eq$5!tc;KSs8w1NJD8}bP{?@x7D{+(H!B}M^dUO=j#
zbN5zyb`?4NK0dU8>6WycF-uVQahWv1Gb8@CBJg1UL$yX8Hia+Fu^Y!y+%ni%FlvC!
zFXyK&jzGjzRUyHiWS`_&`{5T(%t+^T$5;Vs7(Y(Zu<a1TJgeIktI+PkNz*3i-l!kp
z*ZOefvR0xj>dwN|S=Q-BxrnolUU><MGKeC(RU<=Far>>wJ)K(GDjISpeO&IYZUQOp
zjDXID4&e`SmcCOsqWRe8bRomi0>1z#2eXAp(L8({>K<EKmTDL$-?c$kE6+G1m4Hw2
zd4PDN6ju94uRTNSb@#Er-AMjZZeiVz+m=ot?qq>BC5J$(5%CJ2rrcs<BeRGogzBZ<
zfCnfhQ07$e0rFFy5JgD6fRqA?rX*|DA3$H3`jb_aCH>q7I6A3-9_269ELaiNRH!D-
z4fvsPcGRvP@xi8LG6>CBp{C$!RLOHLC#^Dm1{R!~{9k3r3JHA_pj>ldo9}Be=!{^3
zV5T$&QzL!9P($#sBDio*B3X<&=%q>7UYt6!?z?B}f>?#bC-D|n^-D^6mRgYrdEiAE
zBgtGHua;F~Q*r8QOTw4ON%_0cK(S}IE!N5R*;D&|`qdjee8nw93>E#f&VkqCG9l_z
zM{2c*{zD~DML)A+d7c2g5_d;;SY-|2h-M3mfdgkdRaZva13raDY|RNBzEMJBSMPj+
zM?0LT6M4*SEY7-anNvjADe9xsB)}@QQU;QXF<y37$dx0z&;VI?l^b?2VoIrn%^`|7
zyQmbF?Aziv?6DwfSq2s1Jv408ed8<i9Sd2O%Go&?)hlJk3#o-_7IY@FFzg`wNPA#(
zT^x<?9U306E$56Ulv$r@HPS6)k{c5}F_i8X79?C9B1CGcdiowCc1bW(2sqwM8B%%<
z`pVWSY@(d7R7KUILMs<u9m&QDo6w`0UXUp2jLwHX>bi{7h+!}W*>>{L^c^#1i3O&n
zzKU)C<k-@~uzDbMDhU-;kg5*I0e#J~7s8D2j9+>HzmPCrCW|x;gxF`eX>PCGY>5l}
zh`*c$d532?e%Ed&Se)`J0zmVZ8-2B!$|b{@td|O{ovtJ3`$A==esg1*$My-;KVDXP
z!<ws;D3;VJwqE67+eHRDzF&U#9z`)0#wSzjEka<?NovoPKs%aJk$RD4f1U{+6F^JP
zI;La3vjDvnqcVO{{=WSa_boqcoh?VesrM4m=&3N|H(}w?d|9i<C6F5XX1+y4vFp-I
zCm~~UaGv_Wxt2#gdx<Hy%cS&6+3YQ6>P11YkfZi72=o>JTpuK3?MsnkK1*WLB=m_6
z<!a7*>u+_ijjb{rd1}iTCCnoYQy7xz|DdNMS>vFYshU_Sn=SGwoFI^mN}fNK_&zlg
zmz_Atsrh|!#9YC{9>|V6KyyK|ntyso%|uuxjlPL#58R1+MZf_oAnsr;1<$tSY`<W|
z@3Dy~@7i8bXJ+>lki;oHG3otKR+_w7vG_?<G{kpQZpp;zPn8w7J4h)AH)%m+KmMcI
zcv;y`eWnHlZ=_Tnz8o}{K9s45_Z`gw&wR*Cex$o7si&g086Zg9ql%qY3fXkO*!M5i
z=Euv)j&Ywpg)w3onvy7HJ!<W~MlnxeEDTSu8%Y(@cUEw)4|4#QgAF}@Z`T{k{hp$`
zsVlQXPBJYFqHSy4SN1YTv%+?&Y<MfUj3+W4GetSiX!;zbKpA+c=x8S2Q~KNE4(@0*
zy<Ej+&yxG(76=sAB#8vo&g$sglkSj+bde%Q3*x%|RA^%ee!nJi_S!HWk7}p1r`)LN
z%8(pdq$ZG2qX~4R8+8ClnS`W3Zh$dsZ{^0OnZmTjW0`kj@3rDqD#VHB^SQP^1gf|W
zN1lni*9hGA_TVxOu0q)aL<I}ndueubedK%eN&kuP0vKOubkolSPTs=DtcO-B=EH_9
zGw?8F9)z3JZH|mQSekIPqr`pRc1X9gBPcZNSIDsAC!l89J|u*1tLSX1=t*t@A2`7q
zn|Ne)u2|C3%WltUZ*XN4Gx+u^91wwv1(6inI(;i1btl9OVrU`?V5_+q6h)K#hB%7}
zu-p-^fho3*ngf=6G<_w4ZzX8{>L2&|F{V}1`k%n5!IC`{3>*+tu+gVWorThpNP9Gb
zI`|reP8;oFD;wbUm55=LqoVUb;E$fA4SyB1ixryY21i1Bd-uKLv$x6UZ30mz0Rrt2
zOoOga;zp-6M>tVFyt91aw+YCnD&9bbFV2jA0I)u)KJq&}F8eDkSpf2Hg^&-Qn1V0m
z{XgP{y7kf*&C_or40q$T3P%bd=2fLsHl0%TFz-}D8`#nGT(u+zdwEK6``2EujrCu9
zvb6Ok1JL^$xP@Xik_kSZ#3=nu_AJIj;E`B&9#3V1235~N&7rR&O2sk9c9|=Ek6x<e
zfEjJ#ewC2+2Fe9DtwXK{&34+y@a5{XQ@&PT?nY<<;^|AGJNLna_$TQ*P20hi#xQQy
zs~w`1(M)(Ax3rqQ%X11mUyq6I^i!J3ZI7M(g1v7mVb8(p5lxL*idkHI-qL7jw(q5r
zl^Ga3(ChOf=-A|Uy`A6g54~<p8m>o<fiDEOXE!Ed)fRzud8poz1q2cAKF&PKM84O@
z{FIK3;%L@+L5wkOB;z1wIxMCSrZzom?m9Gg^rk(er!TsC1XD}wnw!ol4cXz0-NmlO
z-557qDEB^J?pF^+FAxaDw?8)Uqb*x~5%xQ?22!@c-ZNiZ><d;Lp}>HN$qH;Hpxa4h
zz;QwqsJW36>FJtpaOYigB_5F2ad&qYwYb*Pka5~z>9e>OFCWaYIBFwWco4i!Ws~AY
zw(MS8o}#7FSsi#y?M;8BF<P0h9`F(wv-%jCSEpu|nP*7HHpP5d3-+G$g>MFF|JY`w
zTVQ74d^x>)d+;KU;6-O-iI~>_Y#)<p569J}mdPXR#FQs83SKEBI13Y<ID6f`T5~j6
zY}uH#uKUJlVUXlsW?9~EhjJNpQ_rp)=4@Yv2Z7IFf0O7qbu#7{yQHciwD)<b4if70
zLGS4A*#)x`7+0_`EPNT6yiM-^dTcp`{W-Frsu~I*H!fYAahdg!_%|LapifhK_nm5+
zz@D}u`d6cTp+U>c7PVUM*Ui30W&B4N&2jkkf=2C%PLvuV)*(92h0`u6`>)oCuM1tZ
zXDn{WEjtJ+-{|$DT0=Q^q{x%=?*G77?Xoe+WN^@93`wIx3+^(14RX6oK<lHh&UA%j
z2N4hERru{XG4>Asq#~Od0BCQcZEP-U*LK(+IUoa06<70`YUevi{TjNy{xJcikaVpN
zSVcbJ&SPO>BIAP_v$JL1wY`m%u}YXyDB^Ja+;14$;kg1Bg*iW3_ShyaK^j$%*%tI!
zCUp8@OCF|D?NpUX`QBQ|D+02CbwgFk>;|M>N+R<SQp1!`o>*tzfPAyAq`JttKPgvO
z|H*#h^+8CVeCF+z(AUm;xj1Odqt6!Cq=}jEYEIKPU!vf-MzBPi_CC%fh#t0mB|@5G
z{~cW=na#a%1L9!yCoKy$v9G{kcf7%Nyi?AWX<)?&Xx+~craCfR^iZo@jii%^QAw|y
z9hW+;z7UTNkQrJwqbE%oV}l*$6(q>nb!Cqke24xgspzPWpoK(+fQZ3@_`f;D3jqf}
zPD<)eyHRCAaq<Du5J8s#hLpC3s>e_a4#cDf();+kDA>v3Z?16TR6U!ENoO7*WPYkY
z`BXf+G*{tVseW3jRUdlww%+7&wjvJtdAhB#zvhv6{_?)=-0ooWv;r^V84+Aq;zcYk
zDd^Jol9AD++G=ffoXBU8PlLOBga!j}?-&oQ@2wwJB0ZB?ISv1|M1pHh)-1Ps!Dc?p
zJgbmxJQDy~+lD(R2+K@{%n|B^U$j=MKTpFR_K#Tq2(>&64ftYp+ic{b<tf@&(Y3y7
z6XHAo)%DaAoj6%#+I2)B*_ugZlG8zhX@gJ)&-o&m5~g1r=}Mr$54cI5@qvL))%>9w
z0j3ZyvfwYP<r*C7DMPWVHD}lWS0nAhZjuKc=J^rCB<UbOoz`20t|-G4#UGB*vn#{<
zzG~efUTjMzRE28S(BOnFSC__83QDgtRZZFWqC=<7i!oGx!5G<jP1E*Vdz3=D@CLZr
zU^9Pyy!gTRdCX9lv=+_=7z3bGs3$khw39@8J1Ssj(R?JmywA{J&(u$33OBe!wUWZQ
zJ_y1=Rl!}fcpQYI^e6tiTEkE_?NDM1zMnnivING@8ulZke*MYhIvMbvY<_#z#ca)?
zxRzgVyVJT&Y1XokSVOCia40!nn$nCWWT_Kd7U59xKB;<!J;+zl=<NY|Sg4%zOGF=>
z%{7!O26G?lCIpe>J?o8R2tf?RKG^(LlV|xofw@%*lvA)O2v3}RRtU`Q2LgrN;4KvO
zA2^Igze9w#>;Qrpw*1_hjsc_T@9Jkcd;ZBYO32O0$_#EC1yr=&YLhxbyZBvG`V-WD
zqZ1bMa!yD#N;{fcAwO_Y-+5>BCOzD*CJ~G8&_#@1SH+FH(C%)8G5r88E$o5pzQebp
z*FprkJ#{)sLWEj8HGJE}T-a!JS;J(?E<Q>2)z<t<XmF=YHixI1&So(e{nN|YL#mql
z1tqe72<4Tatqx_Z38kH~y9dq*Jw6F<W%3kl;MsI?MEW-2xDA*I(VWCxJVXmp_kuX1
zD9&-TqQy6h6J4J(9r=oSUfa4V(HTEk4G(!xkino3)GI|J*3@jESN59;*DOLH@MsD3
zxv=XnXSh1QH$1_pS8F=lLQ@AprzQ1Qqs_eUnQWs{_6v@JxIu5yC!p4|yn13x*HW5A
zOE_)UB#VE3+8f}*fcm%-z2t~GTREs+pe<DAdME;dws7jZduZ^_^Eu7kNkeH4unzbn
za4Afbq2=K?<s;1tr(+TNq(Rz;^Wk~>(y}>&=PZXa+B<fbHlEn;EMJBX>SpES{3mZX
zHxe5+QvVxyI12P=46;*a_H7+$8jo<+-2_ndFjL~(s|b|xXXT7TDQ0tG3zjewJc|@9
zmR!$s!+B-4|8(V}J%-gA3VoyWpYwwAia}-E1qC8rekRP$e}}0p)&9w&JE8aVY2|yQ
znH;W-%hAbHC?rUw;&RH*w(E?|@}z)%dv3m|6wBQ;nfP{sY#}G^IsVSy=<S2O+(>ri
zguw)Vnl>=8w3eKhp^%Pd8pqR8knO6e%+asNUPbXday5lfW3Y_EQw`~PCjO94kDK)4
zGo}q%!`_6#4GNkUcMO|CAMTCR6ZTFWg^N((CRT#U!tXw}cB=^lceroCmJ7Kqhk97S
zZH@#@$nTN-4u?=^uV`_VQ30uWT48ysG0L1I?gv0im96|lD5yok9Ew+-zCvR=XL$2r
zC0G$3tv7eGDkW2iwi8@ZNpPbfbQH)Ih{IZ-RjeI<SHsU+nDzMy%J#A%dsNK9N^*Es
zg4Y1wlJ~j!&JoVb!IS+4>8T({n?LoOcQ9LLvht&M)laSTvTm*n9DItH7iIg&bJ>1H
zFe;F4*LnlbcboI~Ka{y@K>dN)Pdf=VGy{oN67_nDV8TVvwv<Gxy}YY}uSF)_Lh3z^
z|D9$UMN)@0gYF<M@;CAm(km8`ooEmySHvePAc#2CuSI^BbOXm+>j#lZv(%DTv)s&I
z>)&%-a+0NM4;&7FtrS0Ut%L)CAj`e23gG*j{=>)I_FTr*yL7>#6z+>})I_SqU7>5D
z+~_jFy$|SbelEracqepw_;_2i>iP2<v?9zYc=M~cNKq^>@*dzs!d3mqF=n<Xl>F&N
zW{7PKNkk+8E7G8cf<1pyI2=1j{ZAOFx%lJq3U6DsGg*Y~3xwL{ws>evyT_2Y9RSul
z9m~9Furpcqi8#t$ehggH*0to^-iMLS!cG*1csA=|L3tU`B6d4ffsS1MmhmaufUX3t
zF~`p>Xu0w-FoSA;<W=>YT#A+aO|D@w4>ma-6t6zixjPy7b;Y@Uw?x0rD?EtC_SgE7
zvzT{e^rq-nbm<triXY}o9?oX0yAS*r!+zN(;EFRzX%<Ugktd>-V;qFcCTPsbYxk9u
zAEmq}T$`fY+Q;M4X%!x!dcDxg#|YP{<HS8+F%avg`|er|bC8|A*xp==MI5>xuxYvy
z3C3GAy^yEw!G}Eb*~*7A|Ii1$XT7m&H1Q$;kfS396(ELu)g;;+8%AkY1py{-HxTrd
z{^~{uczDxpeen70t)T?mtxG9KCuQ5a^<qdN;#6BP2g&mUt^U@xS0X_NKiiZ@sciF-
z=>6LEf_iwQpr}W?u<J%TJR*2ktO~OF2~lk)$h_6QZ?G6&C{Hd$vv7Opfmc>PhOmk_
zCeU9mqo7hu6(V=W+tx`9l>>#k`Q@cr{g$k3v<88x1|xnBN72Dua(MEFsFPa?q9+V&
zd+7RK#8LVAI_d2B?S)+wok{J)QhrZwXxT^N1-eC)%Nm$kP~tiucVqt+jGg=>exI88
zV3L}<sJMUyr!%OMBFgCTQt)n^<Iw+-&Xp7PThs58zg&D&u^4M_1qWdNz|p?e^PJA!
zv`*=FA4ct9g@{yrOh&sJ!w0s^T&;uM5_kal+3aadEG3#6HJ_~Sq)C?^>WI6RUEE#`
zoTy^+lAP}@>m6TyLMCB-kWPeJM?8dV7`**{7YDbVv0)k5zIU?gm)w!d8Jq_%B;m!o
zW)fnNu^V=<%4QIBlLojmGKTh!<9VV1Yb%#lJ6jxPcy5o{Gek6}FdG*4176y1UkDMZ
zX;_MbRRofSHOQ{6p#MONpK(ei*E}R4^K?_rMr0d!K0%*C*vhWpeEs#bwd%w7cda@U
z8Ij!&n>{W+N$wF%V(Vb8T$)WMX6H$U{+_REk1(r1!7`o3?g}vL#}jI8oZtAmqqrZL
z4VgNN6_XM<C-FXy>>b(>D*i@iXDV!Y6e{e(FERKNhpFh-MdzUzdGDU-mr>`=Wyn5y
zQoHUAlZQ0vB%3Q6gg~n%V~UjaF*8ivcY_P@r=k;|9I;Y%(H$O}i~EHvwnuV`CNlhD
ziZ)VQ(Izd;$wq*b$U5d4+7F<#?@g(~ffcYD+&OSv+#rz%O2^iK@)mENzm!3FO92}P
zZPo0iP_$VTk$BDoiY(I9@AT#9HY%+(<QpVN12x>BTN5jV4(11!T#k@;A$6@jAbL(E
zr9WfZO=pcbH-7r3;T;Kzx8MiEhQm)Xsc-%uIon9JdO&SqTEp;{<U?2&u-lPRGLQ~O
zSuO~c)#nrq>L_jdwpcKIz-x$|_zNG`W!-G?1-0XN6VStvoVU5~@I*X9$V;qqR!J9=
zl{dDr%f?UDW_d`x-NbujfoPHsw5R%Q79=D^WtYdvR4~oN2PI^bR4y^k^sPp9X9ri+
zIQr098K|eRIB4fO94664iSOz6H3bvih>kUe3N_*D7k>${Ulc4CpVFiq{j;yOkmrk_
zBUcbet+4xNs#_z;5*91s7yNm4vT{VU4`s7x7CXYx<)V2${;6Ev1`iccAU;`te0_fI
z*yq>r+tk)&=>&-6@7;lF0l!L`>DlmdyJmmf`vbMU)7!PPLXfP32+|z#d<QXNrp}u-
zWGTkQhvtDP5`^%9Ti%@`*S?Y|R0_r!PVZvUL&~+VTZAUBN2(G|IbwepkDnYy1?H&u
zHfR}U1ZH)c-M9WseBI|1p--HY7|RSTqe7<%B11~F&~TJEDkAVmR`lP~sAx2$U$szl
zy96$(%vomaovIJV?)+opYiDxBTtpf6Sl11HC736O){|?mA3!cpb{oGEv(A`Pi00Ue
z@z_We<MM?oyu7H6bQB?MA3MxYn74_ROR%4dN9C}Hy>2JEATOH7HIL+dlR}<KPb6i=
zGiMs!&xn*2g0W&$<U84bVvIrrtyO_^-T|ZO(~?oyQ+Zv9kw16odFrz)f>uehSB}-~
zbod(384!*v^(Cl+!iKz;C-H_&o~0^-X3oBnVR+QmGDyNFW>fQ4#ToMK$V-Lm)-H~L
zg5EPW=Byj#Nd0X`_KjK&ik;_yPu%4Qf^6fl>cR`oBhr{EQeGcsB?_e<4FgVBo`8JD
z=BVt&SI}@!x8-%-=2rCEOTyKYr*C*s3{1Ef_2N!KrLpVPhWKX4jzgj}8~faBHvdzq
zgxgc9jNfhjPsCfN4_JrCvea|)dWyd52+>MEjG{Foi>e!kI*`5N19{7mIM6y$nw$JR
zn*%PuQ<>kf=%&)tcHPrODE1AHV}NbQ7J+f55jj=;bPBz2icRbA`09NXZt3k(%_zBo
z7ey7U86FWQr59YO*et3mCMj>@KjV^*zbdJF4t7%GsuAU|ntZ+?)i{{3nMOfeU0)pM
zO{&)WipbHOffSfWv+*OWiksR4q|WxDTMe9sX_S$SItA3!Z?Q_a`22`-+<;l`y2hZ?
z5?d{VV&9$uJ4{`W98oy)N0H?4+ak6(s``1Vg4sH_tNEi8F5KTq6T)-85p%wNRk~Vn
zzaozESmrfPai??EuQ#EXh_2w(u9$R}oLoN<ADclxvE<H1>{Gb=+>`R#29{*y@DG>`
zHv39NO&iH5;XE*TP)=wbrvjSjM>(hPl%;dr?2P2pg67h)j7#Pd9uwy4q^C-zw86)7
zP)(<EzlrBb?OXIF^L_ifxL_#4d>zb)f71UfrOg+w`+%r}d=@byEy4VY8Y92F4*hg0
zf5)2j4Ac1c1aUKA&Aj<yN>h<(a?qVIR^>f<7WP!5d$H2H4LudtU>fj;=HQ3I{E-Ne
zR&P>sVT;srVpsdXVTlv$JeTymatr8w!in3_PgTQZKf7gv%vER}A+-#C#SuL-jpH%T
z3$*=)yV}q&Ufg0Bzg!JN+!%DmBLZLQe&E3EXoI$@li?G9e_4u?Y7&Z@gl;D!B)0AZ
zi?&(B!K8%WJmDA~`2|Qu?aKT6=1yKym&}O3*oN*`D9-JuDdfdWC8X|gXd(G2L}|Cj
z<G{>+o3tb)K~5=lQgFQF@JtZ=<ud-=hih*!>RiSJrzxsaAg?j<>$JlYN0ju@u{~S<
zA<py1Y@y+cIzmWSMuGYOYBQ`CeUw&1x_&Kzq^^|TQ=p@43E<FuN%Hp>Fq(WcG2gMA
zd0x^6PDg>&4g8X{jo!>M=B8eq-+(;Myd0}cK?YZtv)=7$>(9H307rK8lU*!F*vbML
zH)yTASL*^pwRZ5POQQ!dPyf@I$BnN){+TxUqsUHo*?Hb5%Awkaqoinloa}x08^M+G
z&I}m$z`OBHFmQlrx<6+e=^B-YWf-BepR=Fnc3@Z=l(^HmC^NyNTxPuGJ{7K<89|KT
z-?O6W{WCC>8?I%I@Z`yX{`HUWXi)KlrF)O{cPov!s#6)g<t6PWb_KN8!i{?dx=ig^
z8R>E27~FSJhnKX-k4ES!8gmkW@{GyF`V(3Ow|UUBCeTK43Z3@4;Rt=T8NqNo`X}=D
z=M9?xb8G&>C){v1g6?b7=G3#^KP?m2;>}q+yJFBmr(j!E0-xK}F!$ebxHM@QDR9U`
zY{C@8Pr}-(fAGVf;a{hJl&x1^X%|>TIv*ctyK8h+nh@r0?Ukrs?y?8{VX(R8O;+$0
zLK+V`hy$KDy6;q&qP$Scb@-m!7A()8o9Oj>NpIGp=*}Q_>d8_&6=N|33Z$}Q*QVVh
z^?L8?c~QCoNr}m7+LjC?seAr7sk^3#hwt9+$g_pv)XI=Xq}5f_m}2=%hu5TPKXt-l
zs(~Vc>I?0oEtB$3<k0d?KdSD_(XMSzIK-gT1_N4&nPCg%(^ka6<XvvE;*b(>^5$?R
zg?;jC!<i19S1?PFf=?<wyT5An2j{2>&?Qg_p!M(^QB~Um8j46?mpiXc7OQRFQmT;m
zppb@{(Z6W_-T!@XZ<;`%Wv^XPqBvv9W)EpN@9xSRP`=NFma2{@To6$}1`F1w8JmNx
zzXJG+51}zA(`Lq!^hxP{#@@jVBtFN(6C*O?B`NmA-k{O&jq54%!rUaU{rnV_i8~3~
zS1j=La;>>BIEp>axc{mVQa@xM%g<O_c-dm(i35DSr^c+%H)}E_89_AP(NHB>;uhE%
zF2sxJG%p2D`HVZiHK^ebUIeyCuW#eZ14za$`C?Kl-Vp78p4Ii75P(m?#vldITWKi{
zUKf;p<1^@xC1D0FE`0r~YHpt~mbJO>C~zJ?XG2s2&85<M%F=jh3wJBTnYQ?G6ba(r
z;uH%H$2Oa=SLt;F*#w#_tiR~eqs#k!s>t3$<;|Vm`@A8;Kr_2bpbkr5A`1z~PcnR<
z7tRy|t=p$bHH{V$65JwjbR`{uPkfo%P~R!Zo$!&wVF$|`&SPm;zWHlOcFGu(#BbF<
zo{wYqel-o(bl-hGwX~!fE-{B;wnn*TdG}j1swprOwCM}BYKp8$Q5>|3lv^b$GTatp
zfEhHv#hJ40r~H;X8GMHLt<W6!=JcRi-Zvtw#KH8P1;v3$j_o+vGk#BjJWbp#7f$+&
z{3>Na|0cb!c+BV{zRjoRXz{F$4POujtJp5NHFFVd@Hf~ZS|T3=X$*9{UNT)G5~E8o
zRg-ujvIJ6MFUk?}i~dVj+mdYcUg21kj6MmU95)b6ty@Ho7KwI&m+K(VBa9$%X@Om7
z!dz+gwYa-XA6bzxV8t+zZ`!>nWsqf##~3^YcG8W~(u>Skqyczzk3W-TEHF1LNXYj#
zm%6)Vq{D!2Q>wbs8Ga?P7D!%jz-v*@E_^JeM5<uIM$8f!t%I5$Wkb;NIX<NfBkrA*
zQ^|W$DsHQl&D*;MQ*Q!zw#C;u4=J)Qw5dPQ(*sLfS;mWmFV2mvvlCi_=dSeC2O{e5
zQZ2VZM?1!fqr-AkI+F9b4Q-h!lTxjL*836%*4m=?+1NZI1c#(+LQ%N_XL`KcgBk}g
zzs-Bb5@h=dQyESWh@8W}RvIlNG=x;vEfd$A_b!m-2Y%ZO(=`UpWgl-3bZk=IM*U`4
z4V0#jVoQ1xax2)4g6!JD#o*h?{bQEcLynxf$<$GZWDXNLwuE6_eI6$YNkD06%Qro$
z*Exc`$V?<0w}R5SKWSMVX0Qn*Kgng6>RJbVY?#J9``JzQryxUdoYVB%z@fldZkX%W
z@;xm_g!3FaPYNqwx73tVM~cX^oQyixnK(>+vV!4D#r1+R4fRNCn#`Jl>PTlt8LTp&
z<6<T5od%@bh!iNqx)5|iQaG$cGV6=dDg7`hJBe?Azb*#14#V4wr?Du?49=n&YOwft
zK6h)yvqw%>G;NlNszCFe75~x^ME`q)q9xn*MA>1alj#KD>yf&J#Q!GzjLH5bt!PPm
zEzRf1Ymbzg)k8Dx6vHNWJRaOUgy~eDu77N&vpzg;UaQ7gXjEs##+)fBuI2Lc@@sSh
z4?<B(THyu1`PO?O_8T~Ni>WT+ybJI88gu`dP~@l~V#X?i5KCkwI|8%XQ6JwdnotRG
zfz`6MAR-D_SSl8*3eG!IacIQzmzJ$~7B{!5aN5kFX!9LPM--5<%`3>9QoLQ@E{v~+
zrXKj#UFRNJ2D5#02%nwV!}dbl6?yx4_fnAIjqJ~nP7eMF4$2Fg)rR)NHO9sKwivNa
zUg-nX(!jdo$>_6{)9LTo`f>Rrf)HaL?=A<d8`4mK>3**({*fo~YGSSRqoA<c*4l3n
zs{0@Ay_iRqc|s<ar?PEx(qkMZHYl7ct1(v2=@O4eRAGl8692Trd@mfuXpvELWg8?;
zU8HAB@8MI7i<GgrZBv{N88h?8r<m0clLDSlN1oVjPn>^7zs7vY6xDts*6O66u=fs`
zyFfDqaNdLOu7({^-f<uAzt&{|KUlBF5At3@$p+SpOK(_QOWfvOik)mzg~DzFkGg$0
z?T%Km?2m3jR3f((idm$43Z^r7HlIV<>S0n7AENYZn3?a@q&embZ^oFHXLev4Kpnd6
zz;}<F0fF{$mhqGyRKmxmc{~}Fc`O=fwX(SY#yi~73wQdJ5`HM6F1RD|(>6-#kd3~I
zM;Obc&PFoOH+IKrzTZI>@dnMg!WqdHxrkS;&_Xs1@&L@wb=0jS71W7pwCpQ)V`c7K
z2A`)}3`_Rac-&RZRtuw46)yV0XOGcz51P#0aPMt6eS_j&UcGY<@|fc=NpdfcFZTdA
zLV<E6KCF<2mAM#MJ?Fcb-_;a$g0M=dWwQ!O?z7T2?&7P1j|nnSC0&k^SQB<iJ7Op@
zOWrT}rvn4!GqxS4ZBd1;Ha>@KZZ--<J?NrVg7K<>!MCivJ<$7sqDlg7g9pILdZ_ob
z&OpJ#vE!p}-Vd=~--qOPC)V7+;t@dp^(>`&QU3&p89S9g)XJQzz7+9DHeu$MIbmw(
z;y-#+_r*J|{MQ|()NYIhc=l9wdi!p3kK>rE*K`^qD2>=9{1C!zCFsv7M=meGRT|kC
zc~GfvrF58oEn5hR6_qOd#2oNrR*^$SDlcZ}u}Qx!plPPt#2a-G<Z{UcWSZ>WY`-YM
ze;#Do1$}ly<ESl5%2IUfl|-n3iS4@ZQ6zWpF(k$+epD>Ro?xg)4^Ct=$JxKUIOdo_
zIu-jJxlcpKx8AvC1l8OF1(wb|z#E$0ef(Yb8YG6%>7_9#he1d(D-e|TQ;Ls(bl-9o
z#&nochZ%aw9zW+>V6O56fLlKVX_Jm(ldg1|ktDC~HmKA%Q}Q{pZ%=RQxO!+E@AWd`
z8>d)PZfB~txAdVUt!)RAR_YmtDiK#M<ow1%0z{e4mtqMBS0ac?_ze`rGL|VyCo28d
z@2S}=)0kMch7))!7kJpVO&<ImLdntc2u3k246I$7!f)+;n^-iez<dg!y%nlwU4Md5
zTWh}+cPlv>-ds=A4(YV}0|GIjF{7J#E#{y1b-Ma91uNY})I?I(QRifGN#+ti<B|__
z%5sLa((1pQC)8(mbz8=a|ItWbtYhLU!B>q3g)XJfNEMYA^mG+bY$wc2dX+k69uaiU
z$h#V-?*tU*LbSm4D^G$r>BRi4UDc{?4ZP&Hptd{tjAma@35{85^B&<TxZ0*qJ$XIY
zUN_UIblwu+bhm!caoGZ<@7U&JATQ3L-;R9%-ivjJ7ZS)f0-yIp011ffA4j-(9|jsG
z-ungCCrDlm;h%n|AG}u-H{HP)&EH)ti-oA6r7G4C12c+8W(`tC@t*SXzkP;Iv+d!F
zJqZ=h@)wUVz@n?dNHdV4-)*W6!3&P~v>Z<0;PnB}vB1ZDa+XjoeO&K-%-s!_OpSJL
zj`aq!_M+Y8*`TUKeR!ROoP%Ld-wHjNZn=!#7vs`#->rSVOJddI>#8}gcb|IA#QJy@
zBQLfaU{U&}DU|s8<USV|;tBre8^Z*Ea1aIY>c{tvKEeA!lC6Sp<EPXWB&c&B#CvlR
zbA>x`5AnLq2OuAK_`D%x16S{)@-qyaV><Qr_6EQW6XAhG`aw`yOsvXso~Pi<LS)nd
z;+KGNuGICfn(dH0>o8e1KI79H*H)>O(w`N9%p8g%cF{)gQaZksbcAyw=7p)E)VK7i
zDgQ8hx6rFg&Zy~tu#$(We431Wi`e|*v6P$Z&#&Ck-jMk^Fo)-UHxi#;p`*PY1*0nj
z4w=ypLsD;gA;n}KtMZFD#Iv%<wScjF0B(vG{!r)V4bA6QiRd>hv3LA@z~wA|R<i;i
zj=r&!a=(Mfr<c9vnPDm0;}oaocxHLQr))<J1z`GE`7Whk_OsB_ZC*u}t1|HE>xMr(
zVn9vKuDm^1jQ#AuJBT8YYQ3m7mGoItpu3fsa3uh*K}NXnZ*!-XNN>j9^Nc#j^vF9{
z{aso8s}e@VBK4T|MMbSM)#7yDEdVR0k0l1z6V6F*X`ozAEr+OIMgudUYG+rUTq@Ov
z*_f@<GdEK+-GVtJR)ka9hAIz^OPmsm+#h&wl3aJrO=sq?U&;3yKFL%f4%RV5+5}LC
z=B0s8#a<u<!<Z{ooCfv2mdc)T2&Dv=%Y@NgxDK~VejB14YTUmW2>l)z{Q_7eXmK>J
z<ZI%^pAO~gCnW{8)D$lnO-QN`!)iV{23Rnx{=8e(5{v~b1zeVnn&VdYNYW-UDCbAc
z6<kcQnr*?&;#xjiqf&j26rtxh*$MJX1s$eF^2}C>D!)qgvMv6+lyW+}0BT2C;>8Go
zaiSe#i%9n>NepxBQpba7Q|x<k<yX`O^k0Mv4($iY^!K%f0wO8`3=1lrdH>lx9~$eN
zJSK*K$QS;<yXUp%?4bW}Z)@>*DPZGTgzsT||6%G12#LX;4yRSx7*EB;2vLY>OSjty
z!2g!i&fg>2Arc(?5iY902||Bd9SL7cj-cUVpeV<Yy@CjxOC2?Uz?FuRdA&59Yau`Z
z?G(uzeNHb#Z2WT!W&WrZ_a?*!xg5tT{25@=ApHHQRDZ$2l*mW(NhP4eAMFMf{JE!T
zCdi@9-8%6(A&SW82f9K(kq+@&4Koj>blFmK=(coif5$eXQ<c-gh5ovQLz*Sf>GF?}
z`$ED~B9IUe4bcA>2?>P>@jquWY5=G+0tg5QyuUXl#9wmqUx`C6`iAh&L5=@MSdJ4d
z5+(VEk!;aw%)js#(f$Df;;+m8C8=@cMRfn+DX$gbL$xEuEhB!8<NbyF`JZ<GW+?n6
zDf~+|(BfXvaN@Lz{{#H@WDx!f1_41%7>7tm{NFulvgU@Y{~bxw-;oggFQ6J{+$%fD
ze*@j!<7!v_0{i{~N&Xkmk1vk+7hRm+FJkqwzjOc1*51b4$iVU6?)hi7|Lr=&|J6aB
i$lq25mU<2jwt9}HvJ$Xx|9nRLdv!rUK#+?4Q~EDlvRBjq

delta 37949
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

diff --git a/storage/connect/JdbcInterface.java b/storage/connect/JdbcInterface.java
index a1b1360e6ea..72ee4ab0d39 100644
--- a/storage/connect/JdbcInterface.java
+++ b/storage/connect/JdbcInterface.java
@@ -1,10 +1,22 @@
 package wrappers;
 
-import java.math.*;
-import java.sql.*;
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.Date;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Time;
+import java.sql.Timestamp;
 import java.util.Collections;
 import java.util.Hashtable;
 import java.util.List;
+import java.util.UUID;
 
 import javax.sql.DataSource;
 
@@ -223,6 +235,24 @@ public class JdbcInterface {
     	
     } // end of SetTimestampParm
     
+	public void SetUuidParm(int i, String s) {
+		try {
+			UUID uuid;
+
+			if (s == null)
+				uuid = null;
+			else if (s.isEmpty())
+				uuid = UUID.randomUUID();
+			else
+				uuid = UUID.fromString(s);
+
+			pstmt.setObject(i, uuid);
+		} catch (Exception e) {
+			SetErrmsg(e);
+		} // end try/catch
+
+	} // end of SetUuidParm
+
     public int SetNullParm(int i, int typ) {
     	int rc = 0;
     	
@@ -481,6 +511,8 @@ public class JdbcInterface {
 		System.out.println("Executing query '" + query + "'");
     	
       try {
+			if (rs != null)
+				rs.close();
     	rs = stmt.executeQuery(query);
 		rsmd = rs.getMetaData();
     	ncol = rsmd.getColumnCount();
@@ -708,7 +740,7 @@ public class JdbcInterface {
 	  return 0;  
 	} // end of TimestampField
     
-    public Object ObjectField(int n, String name) {
+  public Object ObjectField(int n, String name) {
 	  if (rs == null) {
 		System.out.println("No result set");
 	  } else try {
@@ -720,6 +752,22 @@ public class JdbcInterface {
 	  return null;  
 	} // end of ObjectField
 	    
+	public String UuidField(int n, String name) {
+		Object job;
+
+		if (rs == null) {
+			System.out.println("No result set");
+		} else
+			try {
+				job = (n > 0) ? rs.getObject(n) : rs.getObject(name);
+				return job.toString();
+			} catch (SQLException se) {
+				SetErrmsg(se);
+			} // end try/catch
+
+		return null;
+	} // end of UuidField
+
     public int GetDrivers(String[] s, int mxs) {
     	int n = 0;
     	List<Driver> drivers = Collections.list(DriverManager.getDrivers());
diff --git a/storage/connect/PostgresqlInterface.java b/storage/connect/PostgresqlInterface.java
index adce0616a1b..9f611eeb23b 100644
--- a/storage/connect/PostgresqlInterface.java
+++ b/storage/connect/PostgresqlInterface.java
@@ -1,9 +1,10 @@
 package wrappers;
 
-import java.sql.*;
+import java.sql.SQLException;
 import java.util.Hashtable;
 
 import javax.sql.DataSource;
+
 import org.postgresql.jdbc2.optional.PoolingDataSource;
 
 public class PostgresqlInterface extends JdbcInterface {
@@ -19,7 +20,7 @@ public class PostgresqlInterface extends JdbcInterface {
     	
 	} // end of constructor
 
-    @Override
+	@Override
 	public int JdbcConnect(String[] parms, int fsize, boolean scrollable) {
 	      int               rc = 0;
 	      String            url = parms[1];
diff --git a/storage/connect/global.h b/storage/connect/global.h
index d8d03f606ba..472d09408c3 100644
--- a/storage/connect/global.h
+++ b/storage/connect/global.h
@@ -220,7 +220,6 @@ DllExport BOOL    PlugIsAbsolutePath(LPCSTR path);
 DllExport bool    AllocSarea(PGLOBAL, uint);
 DllExport void    FreeSarea(PGLOBAL);
 DllExport BOOL    PlugSubSet(PGLOBAL, void *, uint);
-					void   *PlugSubAlloc(PGLOBAL, void *, size_t);	 // Does throw
 DllExport char   *PlugDup(PGLOBAL g, const char *str);
 DllExport void   *MakePtr(void *, OFFSET);
 DllExport void    htrc(char const *fmt, ...);
@@ -231,4 +230,9 @@ DllExport uint    GetTraceValue(void);
 } // extern "C"
 #endif
 
+/***********************************************************************/
+/*  Non exported routine declarations.                                 */
+/***********************************************************************/
+void *PlugSubAlloc(PGLOBAL, void *, size_t);	 // Does throw
+
 /*-------------------------- End of Global.H --------------------------*/
diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc
index 2efed93ee2a..c878bf2a7de 100644
--- a/storage/connect/ha_connect.cc
+++ b/storage/connect/ha_connect.cc
@@ -174,9 +174,9 @@
 #define JSONMAX      10             // JSON Default max grp size
 
 extern "C" {
-       char version[]= "Version 1.06.0006 February 02, 2018";
+       char version[]= "Version 1.06.0007 March 11, 2018";
 #if defined(__WIN__)
-       char compver[]= "Version 1.06.0006 " __DATE__ " "  __TIME__;
+       char compver[]= "Version 1.06.0007 " __DATE__ " "  __TIME__;
        char slash= '\\';
 #else   // !__WIN__
        char slash= '/';
@@ -288,11 +288,16 @@ static MYSQL_THDVAR_SET(
 	0,                         // def (NO)
 	&xtrace_typelib);          // typelib
 
-																	 // Getting exact info values
+// Getting exact info values
 static MYSQL_THDVAR_BOOL(exact_info, PLUGIN_VAR_RQCMDARG,
        "Getting exact info values",
        NULL, NULL, 0);
 
+// Enabling cond_push
+static MYSQL_THDVAR_BOOL(cond_push, PLUGIN_VAR_RQCMDARG,
+	"Enabling cond_push",
+	NULL, NULL, 1);							// YES by default
+
 /**
   Temporary file usage:
     no:    Not using temporary file
@@ -427,6 +432,7 @@ handlerton *connect_hton= NULL;
 uint GetTraceValue(void)
 	{return (uint)(connect_hton ? THDVAR(current_thd, xtrace) : 0);}
 bool ExactInfo(void) {return THDVAR(current_thd, exact_info);}
+bool CondPushEnabled(void) {return THDVAR(current_thd, cond_push);}
 USETEMP UseTemp(void) {return (USETEMP)THDVAR(current_thd, use_tempfile);}
 int GetConvSize(void) {return THDVAR(current_thd, conv_size);}
 TYPCONV GetTypeConv(void) {return (TYPCONV)THDVAR(current_thd, type_conv);}
@@ -3196,7 +3202,7 @@ const COND *ha_connect::cond_push(const COND *cond)
 {
   DBUG_ENTER("ha_connect::cond_push");
 
-  if (tdbp) {
+  if (tdbp && CondPushEnabled()) {
     PGLOBAL& g= xp->g;
     AMT      tty= tdbp->GetAmType();
     bool     x= (tty == TYPE_AM_MYX || tty == TYPE_AM_XDBC);
@@ -7243,7 +7249,8 @@ static struct st_mysql_sys_var* connect_system_variables[]= {
 #if defined(JAVA_SUPPORT) || defined(CMGO_SUPPORT)
 	MYSQL_SYSVAR(enable_mongo),
 #endif   // JAVA_SUPPORT || CMGO_SUPPORT   
-NULL
+	MYSQL_SYSVAR(cond_push),
+	NULL
 };
 
 maria_declare_plugin(connect)
@@ -7256,10 +7263,10 @@ maria_declare_plugin(connect)
   PLUGIN_LICENSE_GPL,
   connect_init_func,                            /* Plugin Init */
   connect_done_func,                            /* Plugin Deinit */
-  0x0106,                                       /* version number (1.05) */
+  0x0107,                                       /* version number (1.05) */
   NULL,                                         /* status variables */
   connect_system_variables,                     /* system variables */
-  "1.06.0006",                                  /* string version */
+  "1.06.0007",                                  /* string version */
 	MariaDB_PLUGIN_MATURITY_STABLE                /* maturity */
 }
 maria_declare_plugin_end;
diff --git a/storage/connect/jdbconn.cpp b/storage/connect/jdbconn.cpp
index ff84c75b67f..33414ca74c2 100644
--- a/storage/connect/jdbconn.cpp
+++ b/storage/connect/jdbconn.cpp
@@ -1,7 +1,7 @@
 /************ Jdbconn C++ Functions Source Code File (.CPP) ************/
-/*  Name: JDBCONN.CPP  Version 1.1                                     */
+/*  Name: JDBCONN.CPP  Version 1.2                                     */
 /*                                                                     */
-/*  (C) Copyright to the author Olivier BERTRAND          2016-2017    */
+/*  (C) Copyright to the author Olivier BERTRAND          2016-2018    */
 /*                                                                     */
 /*  This file contains the JDBC connection classes functions.          */
 /***********************************************************************/
@@ -116,10 +116,26 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v)
 			return TYPE_ERROR;
 		else
 		  len = MY_MIN(abs(len), GetConvSize());
+
 		// Pass through
 	case 12:   // VARCHAR
+		if (tn && !stricmp(tn, "TEXT"))
+			// Postgresql returns 12 for TEXT
+			if (GetTypeConv() == TPC_NO)
+				return TYPE_ERROR;
+
+		// Postgresql can return this 
+		if (len == 0x7FFFFFFF)
+			len = GetConvSize();
+
+		// Pass through
 	case -9:   // NVARCHAR	(unicode)
+		// Postgresql can return this when size is unknown 
+		if (len == 0x7FFFFFFF)
+			len = GetConvSize();
+
 		v = 'V';
+		// Pass through
 	case 1:    // CHAR
 	case -15:  // NCHAR	 (unicode)
 	case -8:   // ROWID
@@ -171,6 +187,14 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v)
 		case -5:   // BIGINT
 			type = TYPE_BIGINT;
 			break;
+		case 1111: // UNKNOWN or UUID
+			if (!tn || !stricmp(tn, "UUID")) {
+				type = TYPE_STRING;
+				len = 36;
+				break;
+			}	// endif tn
+
+			// Pass through
 		case 0:    // NULL
 		case -2:   // BINARY
 		case -4:   // LONGVARBINARY
@@ -192,6 +216,104 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v)
 	return type;
 } // end of TranslateJDBCType
 
+	/***********************************************************************/
+	/*  A helper class to split an optionally qualified table name into    */
+	/*  components.                                                        */
+	/*  These formats are understood:                                      */
+	/*    "CatalogName.SchemaName.TableName"                               */
+	/*    "SchemaName.TableName"                                           */
+	/*    "TableName"                                                      */
+	/***********************************************************************/
+class SQLQualifiedName {
+	static const uint max_parts = 3;          // Catalog.Schema.Table
+	MYSQL_LEX_STRING m_part[max_parts];
+	char m_buf[512];
+
+	void lex_string_set(MYSQL_LEX_STRING *S, char *str, size_t length)
+	{
+		S->str = str;
+		S->length = length;
+	} // end of lex_string_set
+
+	void lex_string_shorten_down(MYSQL_LEX_STRING *S, size_t offs)
+	{
+		DBUG_ASSERT(offs <= S->length);
+		S->str += offs;
+		S->length -= offs;
+	} // end of lex_string_shorten_down
+
+		/*********************************************************************/
+		/*  Find the rightmost '.' delimiter and return the length           */
+		/*  of the qualifier, including the rightmost '.' delimier.          */
+		/*  For example, for the string {"a.b.c",5} it will return 4,        */
+		/*  which is the length of the qualifier "a.b."                      */
+		/*********************************************************************/
+	size_t lex_string_find_qualifier(MYSQL_LEX_STRING *S)
+	{
+		size_t i;
+		for (i = S->length; i > 0; i--)
+		{
+			if (S->str[i - 1] == '.')
+			{
+				S->str[i - 1] = '\0';
+				return i;
+			}
+		}
+		return 0;
+	} // end of lex_string_find_qualifier
+
+public:
+	/*********************************************************************/
+	/*  Initialize to the given optionally qualified name.               */
+	/*  NULL pointer in "name" is supported.                             */
+	/*  name qualifier has precedence over schema.                       */
+	/*********************************************************************/
+	SQLQualifiedName(JCATPARM *cap)
+	{
+		const char *name = (const char *)cap->Tab;
+		char       *db = (char *)cap->DB;
+		size_t      len, i;
+
+		// Initialize the parts
+		for (i = 0; i < max_parts; i++)
+			lex_string_set(&m_part[i], NULL, 0);
+
+		if (name) {
+			// Initialize the first (rightmost) part
+			lex_string_set(&m_part[0], m_buf,
+				strmake(m_buf, name, sizeof(m_buf) - 1) - m_buf);
+
+			// Initialize the other parts, if exist. 
+			for (i = 1; i < max_parts; i++) {
+				if (!(len = lex_string_find_qualifier(&m_part[i - 1])))
+					break;
+
+				lex_string_set(&m_part[i], m_part[i - 1].str, len - 1);
+				lex_string_shorten_down(&m_part[i - 1], len);
+			} // endfor i
+
+		} // endif name
+
+			// If it was not specified, set schema as the passed db name
+		if (db && !m_part[1].length)
+			lex_string_set(&m_part[1], db, strlen(db));
+
+	} // end of SQLQualifiedName
+
+	char *ptr(uint i)
+	{
+		DBUG_ASSERT(i < max_parts);
+		return (char *)(m_part[i].length ? m_part[i].str : NULL);
+	} // end of ptr
+
+	size_t length(uint i)
+	{
+		DBUG_ASSERT(i < max_parts);
+		return m_part[i].length;
+	} // end of length
+
+}; // end of class SQLQualifiedName
+
 /***********************************************************************/
 /*  Allocate the structure used to refer to the result set.            */
 /***********************************************************************/
@@ -519,7 +641,7 @@ JDBConn::JDBConn(PGLOBAL g, PCSZ wrapper) : JAVAConn(g, wrapper)
 	xqid = xuid = xid = grs = readid = fetchid = typid = errid = nullptr;
 	prepid = xpid = pcid = nullptr;
 	chrfldid = intfldid = dblfldid = fltfldid = bigfldid = nullptr;
-	objfldid = datfldid = timfldid = tspfldid = nullptr;
+	objfldid = datfldid = timfldid = tspfldid = uidfldid = nullptr;
 	DiscFunc = "JdbcDisconnect";
 	m_Ncol = 0;
 	m_Aff = 0;
@@ -535,12 +657,84 @@ JDBConn::JDBConn(PGLOBAL g, PCSZ wrapper) : JAVAConn(g, wrapper)
 	m_IDQuoteChar[1] = 0;
 } // end of JDBConn
 
-//JDBConn::~JDBConn()
-//  {
-//if (Connected())
-//  EndCom();
+/***********************************************************************/
+/*  Search for UUID columns.                                           */
+/***********************************************************************/
+bool JDBConn::SetUUID(PGLOBAL g, PTDBJDBC tjp)
+{
+	int          ncol, ctyp;
+	bool         brc = true;
+	PCSZ         fnc = "GetColumns";
+	PCOL		     colp;
+	JCATPARM    *cap;
+	//jint         jtyp;
+	jboolean     rc = false;
+	jobjectArray parms;
+	jmethodID    catid = nullptr;
 
-//  } // end of ~JDBConn
+	if (gmID(g, catid, fnc, "([Ljava/lang/String;)I"))
+		return true;
+	else if (gmID(g, intfldid, "IntField", "(ILjava/lang/String;)I"))
+		return true;
+	else if (gmID(g, readid, "ReadNext", "()I"))
+		return true;
+
+	cap = AllocCatInfo(g, JCAT_COL, tjp->Schema, tjp->TableName, NULL);
+	SQLQualifiedName name(cap);
+
+	// Build the java string array
+	parms = env->NewObjectArray(4, env->FindClass("java/lang/String"), NULL);
+	env->SetObjectArrayElement(parms, 0, env->NewStringUTF(name.ptr(2)));
+	env->SetObjectArrayElement(parms, 1, env->NewStringUTF(name.ptr(1)));
+	env->SetObjectArrayElement(parms, 2, env->NewStringUTF(name.ptr(0)));
+
+	for (colp = tjp->GetColumns(); colp; colp = colp->GetNext()) {
+		env->SetObjectArrayElement(parms, 3, env->NewStringUTF(colp->GetName()));
+		ncol = env->CallIntMethod(job, catid, parms);
+
+		if (Check(ncol)) {
+			sprintf(g->Message, "%s: %s", fnc, Msg);
+			goto err;
+		}	// endif Check
+
+		rc = env->CallBooleanMethod(job, readid);
+
+		if (Check(rc)) {
+			sprintf(g->Message, "ReadNext: %s", Msg);
+			goto err;
+		} else if (rc == 0) {
+			sprintf(g->Message, "table %s does not exist", tjp->TableName);
+			goto err;
+		}	// endif rc
+
+		// Returns 666 is case of error
+		//jtyp = env->CallIntMethod(job, typid, 5, nullptr);
+
+		//if (Check((jtyp == 666) ? -1 : 1)) {
+		//	sprintf(g->Message, "Getting jtyp: %s", Msg);
+		//	goto err;
+		//} // endif ctyp
+
+		ctyp = (int)env->CallIntMethod(job, intfldid, 5, nullptr);
+
+		if (Check(ctyp)) {
+			sprintf(g->Message, "Getting ctyp: %s", Msg);
+			goto err;
+		} // endif ctyp
+
+		if (ctyp == 1111)
+			((PJDBCCOL)colp)->uuid = true;
+
+	} // endfor colp
+
+	// All is Ok
+	brc = false;
+
+ err:
+	// Not used anymore
+	env->DeleteLocalRef(parms);
+	return brc;
+} // end of SetUUID
 
 /***********************************************************************/
 /*  Utility routine.                                                   */
@@ -770,6 +964,7 @@ int JDBConn::Rewind(PCSZ sql)
 /***********************************************************************/
 void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val)
 {
+	const char *field;
 	PGLOBAL& g = m_G;
 	jint     ctyp;
 	jstring  cn, jn = nullptr;
@@ -793,6 +988,11 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val)
 		if (!gmID(g, objfldid, "ObjectField", "(ILjava/lang/String;)Ljava/lang/Object;")) {
 			jb = env->CallObjectMethod(job, objfldid, (jint)rank, jn);
 
+			if (Check(0)) {
+				sprintf(g->Message, "Getting jp: %s", Msg);
+				throw (int)TYPE_AM_JDBC;
+			} // endif Check
+
 			if (jb == nullptr) {
 				val->Reset();
 				val->SetNull(true);
@@ -818,7 +1018,7 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val)
 			cn = nullptr;
 
 		if (cn) {
-			const char *field = env->GetStringUTFChars(cn, (jboolean)false);
+			field = env->GetStringUTFChars(cn, (jboolean)false);
 			val->SetValue_psz((PSZ)field);
 		} else
 			val->Reset();
@@ -885,6 +1085,19 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val)
 		break;
 		case java.sql.Types.BOOLEAN:
 		System.out.print(jdi.BooleanField(i)); */
+	case 1111:				// UUID
+		if (!gmID(g, uidfldid, "UuidField", "(ILjava/lang/String;)Ljava/lang/String;"))
+			cn = (jstring)env->CallObjectMethod(job, uidfldid, (jint)rank, jn);
+		else
+			cn = nullptr;
+
+		if (cn) {
+			const char *field = env->GetStringUTFChars(cn, (jboolean)false);
+			val->SetValue_psz((PSZ)field);
+		} else
+			val->Reset();
+
+		break;
 	case 0:						// NULL
 		val->SetNull(true);
 		// passthru
@@ -1055,7 +1268,14 @@ bool JDBConn::SetParam(JDBCCOL *colp)
 		if (gmID(g, setid, "SetNullParm", "(II)I"))
 			return true;
 
-		jrc = env->CallIntMethod(job, setid, i, (jint)GetJDBCType(val->GetType()));
+		jrc = env->CallIntMethod(job, setid, i, 
+			(colp->uuid ? 1111 : (jint)GetJDBCType(val->GetType())));
+	} else if (colp->uuid) {
+		if (gmID(g, setid, "SetUuidParm", "(ILjava/lang/String;)V"))
+			return true;
+
+		jst = env->NewStringUTF(val->GetCharValue());
+		env->CallVoidMethod(job, setid, i, jst);
 	} else switch (val->GetType()) {
 		case TYPE_STRING:
 			if (gmID(g, setid, "SetStringParm", "(ILjava/lang/String;)V"))
@@ -1274,105 +1494,6 @@ bool JDBConn::SetParam(JDBCCOL *colp)
 		return qrp;
 	} // end of GetMetaData
 
-	/***********************************************************************/
-	/*  A helper class to split an optionally qualified table name into    */
-	/*  components.                                                        */
-	/*  These formats are understood:                                      */
-	/*    "CatalogName.SchemaName.TableName"                               */
-	/*    "SchemaName.TableName"                                           */
-	/*    "TableName"                                                      */
-	/***********************************************************************/
-	class SQLQualifiedName
-	{
-		static const uint max_parts= 3;          // Catalog.Schema.Table
-		MYSQL_LEX_STRING m_part[max_parts];
-		char m_buf[512];
-
-		void lex_string_set(MYSQL_LEX_STRING *S, char *str, size_t length)
-		{
-			S->str= str;
-			S->length= length;
-		} // end of lex_string_set
-
-		void lex_string_shorten_down(MYSQL_LEX_STRING *S, size_t offs)
-		{
-			DBUG_ASSERT(offs <= S->length);
-			S->str+= offs;
-			S->length-= offs;
-		} // end of lex_string_shorten_down
-
-		/*********************************************************************/
-		/*  Find the rightmost '.' delimiter and return the length           */
-		/*  of the qualifier, including the rightmost '.' delimier.          */
-		/*  For example, for the string {"a.b.c",5} it will return 4,        */
-		/*  which is the length of the qualifier "a.b."                      */
-		/*********************************************************************/
-		size_t lex_string_find_qualifier(MYSQL_LEX_STRING *S)
-		{
-			size_t i;
-			for (i= S->length; i > 0; i--)
-			{
-				if (S->str[i - 1] == '.')
-				{
-					S->str[i - 1]= '\0';
-					return i;
-				}
-			}
-			return 0;
-		} // end of lex_string_find_qualifier
-
-	public:
-		/*********************************************************************/
-		/*  Initialize to the given optionally qualified name.               */
-		/*  NULL pointer in "name" is supported.                             */
-		/*  name qualifier has precedence over schema.                       */
-		/*********************************************************************/
-		SQLQualifiedName(JCATPARM *cap)
-		{
-			const char *name = (const char *)cap->Tab;
-			char       *db = (char *)cap->DB;
-			size_t      len, i;
-
-			// Initialize the parts
-			for (i = 0; i < max_parts; i++)
-				lex_string_set(&m_part[i], NULL, 0);
-
-			if (name) {
-				// Initialize the first (rightmost) part
-				lex_string_set(&m_part[0], m_buf,
-					strmake(m_buf, name, sizeof(m_buf) - 1) - m_buf);
-
-				// Initialize the other parts, if exist. 
-				for (i= 1; i < max_parts; i++) {
-					if (!(len= lex_string_find_qualifier(&m_part[i - 1])))
-						break;
-
-					lex_string_set(&m_part[i], m_part[i - 1].str, len - 1);
-					lex_string_shorten_down(&m_part[i - 1], len);
-				} // endfor i
-
-			} // endif name
-
-			// If it was not specified, set schema as the passed db name
-			if (db && !m_part[1].length)
-				lex_string_set(&m_part[1], db, strlen(db));
-
-		} // end of SQLQualifiedName
-
-		char *ptr(uint i)
-		{
-			DBUG_ASSERT(i < max_parts);
-			return (char *)(m_part[i].length ? m_part[i].str : NULL);
-		} // end of ptr
-
-		size_t length(uint i)
-		{
-			DBUG_ASSERT(i < max_parts);
-			return m_part[i].length;
-		} // end of length
-
-	}; // end of class SQLQualifiedName
-
 	/***********************************************************************/
 	/*  Allocate recset and call SQLTables, SQLColumns or SQLPrimaryKeys.  */
 	/***********************************************************************/
diff --git a/storage/connect/jdbconn.h b/storage/connect/jdbconn.h
index 56f318d238b..0c36cccadcf 100644
--- a/storage/connect/jdbconn.h
+++ b/storage/connect/jdbconn.h
@@ -29,6 +29,7 @@ public:
 	// Attributes
 public:
 	char   *GetQuoteChar(void) { return m_IDQuoteChar; }
+	bool    SetUUID(PGLOBAL g, PTDBJDBC tjp);
 	virtual int  GetMaxValue(int infotype);
 
 public:
@@ -58,13 +59,6 @@ public:
 
 protected:
 	// Members
-#if 0
-	JavaVM   *jvm;              // Pointer to the JVM (Java Virtual Machine)
-	JNIEnv   *env;              // Pointer to native interface
-	jclass    jdi;							// Pointer to the java wrapper class
-	jobject   job;							// The java wrapper class object
-	jmethodID errid;						// The GetErrmsg method ID
-#endif // 0
 	jmethodID xqid;							// The ExecuteQuery method ID
 	jmethodID xuid;							// The ExecuteUpdate method ID
 	jmethodID xid;							// The Execute method ID
@@ -84,8 +78,7 @@ protected:
 	jmethodID timfldid;					// The TimeField method ID
 	jmethodID tspfldid;					// The TimestampField method ID
 	jmethodID bigfldid;					// The BigintField method ID
-//	PCSZ      Msg;
-//	PCSZ      m_Wrap;
+	jmethodID uidfldid;					// The UuidField method ID
 	char      m_IDQuoteChar[2];
 	PCSZ      m_Pwd;
   int       m_Ncol;
diff --git a/storage/connect/mysql-test/connect/r/jdbc_postgresql.result b/storage/connect/mysql-test/connect/r/jdbc_postgresql.result
index 6d77d79d5d3..7969672dd66 100644
--- a/storage/connect/mysql-test/connect/r/jdbc_postgresql.result
+++ b/storage/connect/mysql-test/connect/r/jdbc_postgresql.result
@@ -1,9 +1,11 @@
+SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/JavaWrappers.jar;C:/Jconnectors/postgresql-42.2.1.jar';
 CREATE TABLE t2 (
 command varchar(128) not null,
 number int(5) not null flag=1,
 message varchar(255) flag=2)
-ENGINE=CONNECT TABLE_TYPE=JDBC CONNECTION='jdbc:postgresql://localhost/mtr'
-OPTION_LIST='User=mtr,Password=mtr,Schema=public,Execsrc=1';
+ENGINE=CONNECT TABLE_TYPE=JDBC
+CONNECTION='jdbc:postgresql://localhost/test?user=postgres&password=tinono'
+OPTION_LIST='Execsrc=1';
 SELECT * FROM t2 WHERE command='drop table employee';
 command	number	message
 drop table employee	0	Execute: org.postgresql.util.PSQLException: ERREUR: la table « employee » n'existe pas
@@ -14,17 +16,18 @@ SELECT * FROM t2 WHERE command = "insert into employee values(4567,'Johnson', 'E
 command	number	message
 insert into employee values(4567,'Johnson', 'Engineer', 12560.50)	1	Affected rows
 CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CATFUNC=tables
-CONNECTION='jdbc:postgresql://localhost/mtr'
-OPTION_LIST='User=mtr,Password=mtr,Schema=public,Tabtype=TABLE,Maxres=10';
+CONNECTION='jdbc:postgresql://localhost/test?user=postgres&password=tinono'
+OPTION_LIST='Tabtype=TABLE,Maxres=10';
 SELECT * FROM t1;
 Table_Cat	Table_Schema	Table_Name	Table_Type	Remark
-	public	employee	TABLE	NULL
-	public	t1	TABLE	NULL
-	public	t2	TABLE	NULL
+NULL	public	employee	TABLE	NULL
+NULL	public	t1	TABLE	NULL
+NULL	public	t2	TABLE	NULL
+NULL	public	tchar	TABLE	NULL
+NULL	public	testuuid	TABLE	NULL
 DROP TABLE t1;
-CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CATFUNC=columns
-CONNECTION='jdbc:postgresql://localhost/mtr' tabname=employee
-OPTION_LIST='User=mtr,Password=mtr,Maxres=10';
+CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC tabname=employee CATFUNC=columns
+CONNECTION='jdbc:postgresql://localhost/test?user=postgres&password=tinono';
 SELECT * FROM t1;
 Table_Cat	Table_Schema	Table_Name	Column_Name	Data_Type	Type_Name	Column_Size	Buffer_Length	Decimal_Digits	Radix	Nullable	Remarks
 NULL	public	employee	id	4	int4	10	0	0	10	0	NULL
@@ -34,13 +37,14 @@ NULL	public	employee	salary	2	numeric	8	0	2	10	1	NULL
 DROP TABLE t1;
 CREATE SERVER 'postgresql' FOREIGN DATA WRAPPER 'postgresql' OPTIONS (
 HOST 'localhost',
-DATABASE 'mtr',
-USER 'mtr',
-PASSWORD 'mtr',
+DATABASE 'test',
+USER 'postgres',
+PASSWORD 'tinono',
 PORT 0,
 SOCKET '',
 OWNER 'root');
-CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CONNECTION='postgresql/public.employee';
+CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC
+CONNECTION='postgresql/public.employee';
 SELECT * FROM t1;
 id	name	title	salary
 4567	Johnson	Engineer	12560.50
@@ -60,6 +64,3 @@ SELECT * FROM t2 WHERE command='drop table employee';
 command	number	message
 drop table employee	0	Affected rows
 DROP TABLE t2;
-SET GLOBAL connect_jvm_path=NULL;
-SET GLOBAL connect_class_path=NULL;
-SET GLOBAL time_zone = SYSTEM;
diff --git a/storage/connect/mysql-test/connect/std_data/JavaWrappers.jar b/storage/connect/mysql-test/connect/std_data/JavaWrappers.jar
new file mode 100644
index 0000000000000000000000000000000000000000..33b29e7685b66ee03d1b3f5921f2ba32d48f76b3
GIT binary patch
literal 19192
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
N5FTV=U{Le`@c?>fD9iu=

literal 0
HcmV?d00001

diff --git a/storage/connect/mysql-test/connect/t/jdbc_postgresql.test b/storage/connect/mysql-test/connect/t/jdbc_postgresql.test
index 1041ef468d7..8036f71020d 100644
--- a/storage/connect/mysql-test/connect/t/jdbc_postgresql.test
+++ b/storage/connect/mysql-test/connect/t/jdbc_postgresql.test
@@ -3,25 +3,32 @@
 #
 # This test is run against Postgresql driver
 #
+eval SET GLOBAL connect_class_path='$MTR_SUITE_DIR/std_data/JavaWrappers.jar;C:/Jconnectors/postgresql-42.2.1.jar';
 CREATE TABLE t2 (
   command varchar(128) not null,
   number int(5) not null flag=1,
   message varchar(255) flag=2)
-ENGINE=CONNECT TABLE_TYPE=JDBC CONNECTION='jdbc:postgresql://localhost/mtr'
-OPTION_LIST='User=mtr,Password=mtr,Schema=public,Execsrc=1';
+ENGINE=CONNECT TABLE_TYPE=JDBC
+CONNECTION='jdbc:postgresql://localhost/test?user=postgres&password=tinono'
+OPTION_LIST='Execsrc=1';
+#CONNECTION='jdbc:postgresql://localhost/mtr'
+#OPTION_LIST='User=mtr,Password=mtr,Schema=public,Execsrc=1';
 SELECT * FROM t2 WHERE command='drop table employee';
 SELECT * FROM t2 WHERE command = 'create table employee (id int not null, name varchar(32), title char(16), salary decimal(8,2))';
 SELECT * FROM t2 WHERE command = "insert into employee values(4567,'Johnson', 'Engineer', 12560.50)";
 
 CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CATFUNC=tables
-CONNECTION='jdbc:postgresql://localhost/mtr'
-OPTION_LIST='User=mtr,Password=mtr,Schema=public,Tabtype=TABLE,Maxres=10';
+CONNECTION='jdbc:postgresql://localhost/test?user=postgres&password=tinono'
+OPTION_LIST='Tabtype=TABLE,Maxres=10';
+#CONNECTION='jdbc:postgresql://localhost/mtr'
+#OPTION_LIST='User=mtr,Password=mtr,Schema=public,Tabtype=TABLE,Maxres=10';
 SELECT * FROM t1;
 DROP TABLE t1;
 
-CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CATFUNC=columns
-CONNECTION='jdbc:postgresql://localhost/mtr' tabname=employee
-OPTION_LIST='User=mtr,Password=mtr,Maxres=10';
+CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC tabname=employee CATFUNC=columns
+CONNECTION='jdbc:postgresql://localhost/test?user=postgres&password=tinono';
+#CONNECTION='jdbc:postgresql://localhost/mtr' tabname=employee;
+#OPTION_LIST='User=mtr,Password=mtr,Maxres=10';
 SELECT * FROM t1;
 DROP TABLE t1;
 
@@ -30,14 +37,18 @@ DROP TABLE t1;
 #
 CREATE SERVER 'postgresql' FOREIGN DATA WRAPPER 'postgresql' OPTIONS (
 HOST 'localhost',
-DATABASE 'mtr',
-USER 'mtr',
-PASSWORD 'mtr',
+DATABASE 'test',
+USER 'postgres',
+PASSWORD 'tinono',
 PORT 0,
 SOCKET '',
 OWNER 'root');
+#DATABASE 'mtr',
+#USER 'mtr',
+#PASSWORD 'mtr',
 
-CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CONNECTION='postgresql/public.employee';
+CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC
+CONNECTION='postgresql/public.employee';
 SELECT * FROM t1;
 INSERT INTO t1 VALUES(3126,'Smith', 'Clerk', 5230.00);
 UPDATE t1 SET salary = salary + 100.00;
diff --git a/storage/connect/mysql-test/connect/t/jdbconn.inc b/storage/connect/mysql-test/connect/t/jdbconn.inc
index 05122f51924..81ec80c13d6 100644
--- a/storage/connect/mysql-test/connect/t/jdbconn.inc
+++ b/storage/connect/mysql-test/connect/t/jdbconn.inc
@@ -22,10 +22,11 @@ DROP TABLE t1;
 # 1 - The current directory.
 # 2 - The paths of the connect_class_path global variable.
 # 3 - The paths of the CLASSPATH environment variable.
-# In this test we use an executable jar file that contains all what is needed.
-eval SET GLOBAL connect_class_path='$MTR_SUITE_DIR/std_data/JdbcMariaDB.jar';
+# In this test we use an executable jar file that contains all the eisting wrappers.
+#eval SET GLOBAL connect_class_path='$MTR_SUITE_DIR/std_data/JdbcMariaDB.jar';
+eval SET GLOBAL connect_class_path='$MTR_SUITE_DIR/std_data/JavaWrappers.jar';
 
-# Paths to the JDK classes and to the MySQL and MariaDB drivers can be defined in the CLASSPATH environment variable
+# Paths to the JDK classes and to the JDBC drivers should be defined in the CLASSPATH environment variable
 #CREATE FUNCTION envar RETURNS STRING SONAME 'ha_connect.dll';
 #SELECT envar('CLASSPATH');
 
diff --git a/storage/connect/plgdbsem.h b/storage/connect/plgdbsem.h
index 6a0a8be8ff8..5446e0d2a07 100644
--- a/storage/connect/plgdbsem.h
+++ b/storage/connect/plgdbsem.h
@@ -362,7 +362,8 @@ enum COLUSE {U_P         = 0x01,      /* the projection list.          */
              U_IS_NULL   = 0x80,      /* The column has a null value   */
              U_SPECIAL   = 0x100,     /* The column is special         */
              U_UNSIGNED  = 0x200,     /* The column type is unsigned   */
-             U_ZEROFILL  = 0x400};    /* The column is zero filled     */
+             U_ZEROFILL  = 0x400,     /* The column is zero filled     */
+						 U_UUID      = 0x800};    /* The column is a UUID          */
 
 /***********************************************************************/
 /*  DB description class and block pointer definitions.                */
diff --git a/storage/connect/tabjdbc.cpp b/storage/connect/tabjdbc.cpp
index c0fda584381..adbfb2168ae 100644
--- a/storage/connect/tabjdbc.cpp
+++ b/storage/connect/tabjdbc.cpp
@@ -605,6 +605,10 @@ bool TDBJDBC::OpenDB(PGLOBAL g)
 	else if (Quoted)
 		Quote = Jcp->GetQuoteChar();
 
+	if (Mode != MODE_READ && Mode != MODE_READX)
+		if (Jcp->SetUUID(g, this))
+			PushWarning(g, this, 1);
+
 	Use = USE_OPEN;       // Do it now in case we are recursively called
 
 	/*********************************************************************/
@@ -970,6 +974,7 @@ void TDBJDBC::CloseDB(PGLOBAL g)
 JDBCCOL::JDBCCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am)
 	     : EXTCOL(cdp, tdbp, cprec, i, am)
 {
+	uuid = false;
 } // end of JDBCCOL constructor
 
 /***********************************************************************/
@@ -977,6 +982,7 @@ JDBCCOL::JDBCCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am)
 /***********************************************************************/
 JDBCCOL::JDBCCOL(void) : EXTCOL()
 {
+	uuid = false;
 } // end of JDBCCOL constructor
 
 /***********************************************************************/
@@ -985,12 +991,11 @@ JDBCCOL::JDBCCOL(void) : EXTCOL()
 /***********************************************************************/
 JDBCCOL::JDBCCOL(JDBCCOL *col1, PTDB tdbp) : EXTCOL(col1, tdbp)
 {
+	uuid = col1->uuid;
 } // end of JDBCCOL copy constructor
 
 /***********************************************************************/
-/*  ReadColumn: when SQLFetch is used there is nothing to do as the    */
-/*  column buffer was bind to the record set. This is also the case    */
-/*  when calculating MaxSize (Bufp is NULL even when Rows is not).     */
+/*  ReadColumn: retrieve the column value via the JDBC driver.         */
 /***********************************************************************/
 void JDBCCOL::ReadColumn(PGLOBAL g)
 {
diff --git a/storage/connect/tabjdbc.h b/storage/connect/tabjdbc.h
index d422ed26ef2..078129a14e3 100644
--- a/storage/connect/tabjdbc.h
+++ b/storage/connect/tabjdbc.h
@@ -101,6 +101,7 @@ protected:
 /***********************************************************************/
 class JDBCCOL : public EXTCOL {
 	friend class TDBJDBC;
+	friend class JDBConn;
 public:
 	// Constructors
 	JDBCCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "JDBC");
@@ -119,6 +120,7 @@ protected:
   JDBCCOL(void);
 
 	// Members
+	bool uuid;											 // For PostgreSQL
 }; // end of class JDBCCOL
 
 /***********************************************************************/