From 0b39fb9f92be21e3aa860a8234daaf287791a167 Mon Sep 17 00:00:00 2001 From: levinsv <44033647+levinsv@users.noreply.github.com> Date: Sat, 9 Feb 2019 14:17:33 +0500 Subject: [PATCH] bug fix bug plan fix Add copy sql html format --- Release_(3.0)/pgAdmin3.exe | Bin 10428928 -> 10428928 bytes ctl/ctlSQLBox.cpp | 69 +++++++++++++++++++++++++++++++++++++ ctl/ctlSQLGrid.cpp | 4 ++- ctl/ctlSQLResult.cpp | 4 +-- dlg/dlgFunction.cpp | 3 +- include/ctl/ctlSQLBox.h | 2 +- include/ctl/ctlSQLGrid.h | 2 +- schema/pgTable.cpp | 30 +++++++++------- 8 files changed, 95 insertions(+), 19 deletions(-) diff --git a/Release_(3.0)/pgAdmin3.exe b/Release_(3.0)/pgAdmin3.exe index d662342f0a4da49769dae7905a43b30ab3470f53..930dcfda611ebfb25bf8e4e40330e222b4e23915 100644 GIT binary patch delta 34484 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 F{|jwXYheHY delta 31084 zcmeIbd0Z4n6F0syvkMC>_b&IToC3-!o`9mFf(I;k;R(2?E8>CTg&?RP7{p){%3D-a z;)$XTDk>gPjEHz7nyAq{nq*BhF^MrojQdvi3`%_RT%Y&z`|J0vpW$0wU0q#WUER~& zGrQ)Ve=W_$t4hvrs}l#WHe=SAT>>y zn|vdcJkI+xT=IC!X=(K{Pn8jS>&a?kzjaL5>aBj$*pbQ?#C&;Q*A*VQI&+409J9B-{ORE*#0;HTbR@Wo!TbA8; zrn*h99dc&k>iPj{Zs@1d>emB&Ic`d=wAyEo6~lFzV^iII@G6#xuf7~Jm*JXgq}7p{ zI3srQpw%#9J9quAv^sp`92wj0kLtr?{aNCMf1k0+MrZ}?P_Jh*ZPo~b~ zJhn)y6VnzjY)Z%KFQ>&y*@v5}17>*{bDP#ltK%1VVO=1tUXXcT$~`ZVR*%VfB;~RX zORM|j?UHfl(xuf;mZQv*RB5$s(ItkfvXE8ZU(uFh=So*gOG4PldDT5i7E8IGS4*o; zt!c}0p&8QZM`a@!W>t0A+U^WD4^_-xw~XW7pbBP_nHf`FZC)AAa!-?_t0(MU$qjxX zt^Rd)3CAr+l2$LbsX|?Vo zwrNjv^}|zk45$4J9eCPO!ET*hZQhW_2Dl{rEJ?#)q}obSaxR3>X--DSbu4?=hs$7 z+#WaS>X7d|xV3Gi)g!;FVi@mg`Qw+2_gx!|mU$<;Ngf~S$w?lc3>qwXTvHt=d2Fk( zl03GMc9lFf*}dKS2aX%yD6RJUQOa?WqtewKeh%T*^^;al`k9lm+dHkE`dcNp+(cS! z_u^M6x7`ARrP)QwMOsK#2N*u(Mw&{iUmEr>+{e~Zeka3dSnkCgj{k#WCds()XemFz zgh^r9Nq<7U88ePE{+Rt~_#p9d5zcC2h252y6M?>X3Q>U^d69o*mU1vE{N8Nmx1b~AMQhE+iB55`8Y)0Pc{N&Tf3)vC6Wja%^ z82!vEMnE z1&{fT#{73B>_;w~&Zz>j_OaIq!N=`q-8pde=QM* za+&@|*KuaC^cdNx895|x#?db zs#!LZ8*Rh;R9Yp8ruWa|UK#H~1`ACO1C03rE4c*@e90iYB&w$hGzaCmaqdk z8>`pQ6lv|l9f=tTTYoYN5n6ckh4hsaJU;X_hFeS6{_IaZ!0sjN13UV9Us9X%YvbHFbXJqW89H#P=ZSvqn?(% z21<&u_*%MP4wGs}*>h$a5jQ2Lewj^5ldkji>r#BJa6fg{1p2KY?k~ig|3Xz%y>G zaHhbMi@adCx|ECHD!LB@n>?;PDws6kl)p7HEN7-1{( zbh^~(Z-w$yqR`wctf!Oz-wTm`M@@-Pew^*b*>xNUQ$3CSpzk3zj60wn2ulvJ5nLk@ zpB!S<-1trdA@ppIIWWGFwU<6#*KB~~{!)8*5Y^QPx~OEf+>v$7u9glq?#bC&*%ShMxp~M+G*?DFIEVGyOV$-j~MSEF) zPJ(<+)~quED+n zzMkxBYinUpjl~Ky#r+yISf8cdDFKc+$~>5J@VTR`n5#v>Nlr2^w(m$-;Ux26zJ+Qh zSqWQc5B;2F-mG>6q&dq%xHOd8?u>FqBjA#=Y#uw^pN!KShRl$$@a$%1W5yaBqPbq& zOtg1&H0ST3TF`7*-miWn*30S##GvuR>zAIl(u{~Nx~z}6-VEELIW_mC4~EJ&Y&7wH zcNP=q`~cS37V7V1Y&N7yii=&)Uqb9KIE3^CAEGwe{Nmwx@w5W)gb&-vqS(*u zAURNG56{}k_OV;$!j=HpeAet6a12Bz4N;NIP*y$=HV4W!u(OpUZ3l5dGDj{=-VD=% zWH-3S(q_JId)XYu_OL^RqFa z+d%$|dxYSX3?ZIIxD13ngN?^=FPz1;ZBfE}57}YH9D+P$T@faF%0h9f+v+K^b${~; zqr(APD|8$-O_p!SNY3pg$r!7Dt>ABX$_6t`67SJgc7}0-W`m}<^yQxhgD%RkLP9)Y zV^F1$`K1mmGL?DV9_5UbrHssY=<{!bXC<<5NaKtVeavS?c?|Z(v z^eNXd7;o^BqI!dBBWC8;VW#Dpa|YFX66<#|EOj-+uft2?i~HTy{9vvtcYs)i>+BFD zD9($+=A*K&J2e|d=#N+qgpCYW$(bTCfaUzTMhiMmY@+i7=cg)xFXGy?f#x$dN-pu! zW=JpV-d@N%i+RU-$$nt3KZBhSvLsG!*IIZ>Jr(XnZl!n&A*&#^&<<)w$}-u(7a$}- z)|IO^83@x8WT{+#lY#u51lbYcPRd5x!|m>}W9*MV!|EQgYwY(NKPgmpfnkUK#J3NZ zEn$gLD|4!pae<3Fxr^M-U%i4=ySRP!htWMa8!pe!qCFi+I&1|lj)qrq&Fq_>;LJT) z4jEY;gyID-(je{c`^6l=@4wT#NW$-=mqkVWDh#T(T0EQvE`vWu43d||%ThS~(`dL> z5k6UHUW!v`z3dj(^u;TF8zZ~MaIbH@;^%U*c8tSosw)rYXPjbij-mP7O(>8qlkMT!=%Y#SCo}xa@v_{G>}wDHml9b|Tv7Oh z$>F7uOu@Z65Dlw7aCM|JBV4%6rgBkCGj#fb9nKkH9?k>(;8~e0LYPhGKI#zxFRZzG zHpvs}Y&cKnD>yoaaaqwJ{=8XSd8EE}M>M%1ruylXJ1K>eEar3hbs453it6?0dg!oGrgBcjVL5^n z)K6RY3hx|5G0wmGur;rMSuw~KG*VwPXg@nj&V}rVCJVv7G)BN~3&wqeX9Z}s$Vwoh zTxKl2r^Nf5*;bi1lr*yC@ZhlA*Yc74-C8eTJMCE~K|%lX(s|sSsjv9D^U_%iH!1ZM zbiN>cW_RC-%vaQ<*g`s!vjNQzdQs|O_wiryFaRa`@QhcGeo-3EwLAX`4qlYHvNN~5 z?X@#7^QoONbloOv<8*Pe=!a)5j;qVCLr?tU0#tov6fPL`Vj4Gtwn{ghOXghey@H16 zoC|lcM>G5|9hV`-o1*!#GdLwff=|xZd@N(zSmxKwF)M1k(04GSPYgpBT&t1U+U91< z(X|;lMUtYZ$l~D*@%qo;`DNME&eJ!&GCZDu?JANN^^Pn`uqtX?zKINRy|(U^p_3v1 zj^)a}B-^zf=fxk4iZ@_0Vew^|s-U7l##b~L4e{opTr2qJKO6O)$ra+z>Ndgn3?cZ} z6O4Z_VGld-kJF5kuhP6;XZ@G*O<{5!OC>^k$?q|AkLBE3ex0(O^_Jh0QmU!HJW$9q z43K+MmT#2&fWZ19TJBC+&C&8J0_*Z1QR>%0@>~m=Id`;tg9D|Mv*pJ|(@k8{75VqJ zlsfsf+(|~MFTa&93Zr(6X=`$avbuYjXrn2$Wtzz{HKqKvm`tN}@oURXBBhjfzrtio zI;9rdnU1ue)EzI=RgRRJ(bM#(P=#Nl>C8N8%7%K=3+a?f>0$OucS?=QFtdxaK&MGG z!p(5$c?B>LQdfR`joC$WLHdH(G-FELyke%Yr}}-rF)L;%#eZk!FVyt#iJ7ZlCHJFQ zlL;;H`R`^{eVNbs?|LXaOex2-pJIU^wXDBlh|nFMM=9D0zI+|65IpWRP!Y}00y76G z4pU{|J6zFBS>7WQ7L3c67!k$!Nf%fLTD;lpHtCPCrXbD`k|xRD$VTFpN^f zF^eH?w8ATBi9wZsw?#ChF#mucuvjoB_asS6<^fUm0&(b;l|`b z;26d7oIJw~U2wuqT>j>hB^6l#=NoPn7pD*x;KGTxnXH+Xq1^2YM6O>R5h@@;WL1Si z!z+nIA@N?6&Vecu*3!!jx6q;QJoiCs&n+jW_95n1($aM4Biy*_zlGtwWNu&F`Wq?k5jD7 z`ACS?;!+aB@z^mm)G>cG+Wveb>4PD8ahP6XxK&iT2KxYo`c;x%DMbmvaNI{?x{Mee z_O1hhMwj}aGsAkbpu>)4OSW039^U*}1CE_M66TTm>7#P1+96+Tcd~xO4 zAdIth`kQB451{p}tytGmF^Ph;EqcZH&xB=(iXgYz-OtG)o>WF6ZG(PP<*#%RkxyC= z$>k>QIU5a4IC6=-q~V+Nt|)?`nWxLB-$_^fo5fYXj!b%@zqX(Ui-`^r#SKJvIcY** z(MmFki%Q9mkJAX#z*hYeR4I)5^43OgAqf=;WU}nSY6RC1Q{d(N5Em$IR9V5XViOBE zm89s#ZPO2cKavz)OgOkDD>^dUAud^=GF#_{jV!u~DsZ)!tcYgUJmizB6gl(&te>1u znyT>MN~hix3iCge0_ACrXLr~lKHtmSUZA%4nE#=o)8&RR^H<$y?pl1vz)`AVzPa-n zntN7ZF;$p+gDouDP}Xn@3#GtHv$SYSSsz(i+@dT#&D!FmKe@XGgj($EN|oK5W${$V zJfC6lY%D2Iz+bb#%aZ4>S!H`rsjk0R1)5N5QnS_1)C?GHu=KDc7BqaoSoajD z%dB;TKv_twJp@WEv(C9rDnE3~dbM!Vi~8337a=oTZ~cit$-cMtsG?Q*t+#pNNh$kU zn+rnjgOfHL1j^>L&3INmyy!`)L8pDj*9?$tWVxH;p2En1GB+Dp-BX-`ZwrHx(|?lk z6bc5)mQsJ150cpm_oudlWg!gbyC{qwJw!H<#L_2m^4;w$}}>2zOP0WfR83-J%#jmnJaf?)>D2}yi6+PQh$F6 zYe(SG!nTYsp4snwfS#mW7o?r7HA670FmJmT_m9;%dokyOi#5IC~Rm~GRVHv0Dzm;Ud)e6;5 zlsL0P)j)}oovIs@n6yjv4?^&RDpeuDl(pox>NRC8{z4TXs5BY0uWVTZ}iw8d|( zI()U5R(wCs@famG#EZnpp(0^B%<(GK@XavCHr9BMz?)2RbQ?z%v^(dRAcRc*dB<0y zm?%Ei%_)Q7x}Dh#zq>mnF@cca;nbaT!Sv!pUt8Ga;WUYro&ifwr+%En>D@5W)5(=p zoQAocP6zB?pV}?1J**5W7jnq;Qb&Zs+BgOEeI{fI8M+5Ts_3PVUY;L}F`aK%V5hs; zTCV72k&sijK&d+qd)qiI=E_g)hTyhN0o>YCyZP~LolF@@P4#jz7c5`s?KF)EU3DvQG2=M4N@-KQN?rE?~{x`)#+2ihHl z@lK`0)8H}GX#sWl#-UEXxR72bnd#Jz^l`zhbSM5+y7MzD!o9S_c^AiI@#)K)k2$mD z4t(G?=i5c(SdKSt?{ZvDWX^SQIc80jo z>YV>FJ}JKK$8ppGMMc~0blQceeQl>u*5Q3^8-yXT^gvswKz&fv_FN3j)fn0;+Y$=0 z>wJ^I$+W!>|Fn%4zw$j^&>^o5!u=xgrdKG9Y-$Pb@wr!XIJMPH>AgzW2pn?t_US{_ z-%0cyEb!V*@&2;odrFHpdKU|3xc=bXTi9$Qvp$0aBM)#s30kVfbh6JYI%BmmvN+4< zgF$RWJvi3;%wqP!ih7@i%vhLt$;XZ(UR{34XBM6L;LVRd-%>T-{p53XE2WOD@|`bK z60+JiT$m~|%6t=q9m>_UzE1=vp4#U7f)?Pn`?|^r)yjf#dwuU%(w2wT`f7#y)7DRY z*L*>F-75T2gLKPj9+#Il60Geo~$P=fbps-JB&**u^@* z;r^fa@1V-Bed3>>CKLqz?th%J9{=wDg`%aFS$tPnJ69!%r4f$p#t(1diya(3quoj& z%o}st%@^(k(WULC+EGpXo_2SVNeRBxJm3y>3E-;2hhJwE&`n82Zh8e|E~Zr6&VX7$ zl~ql^V#W+@!rkR9UCOBKaA0bC6@Tzpz;!pOZQ1RB=nj;+ZX77CU@n^mZfZ|?Q@aQD zHloylUV-~;D3ur=SQAF70jCcGr_%ZgKMed+CQzk;=7Q7LZVv_Z$wi zbfHD*X+Xraz)u8W`Gdf-^sYw3w?OkfqnsviOmu!B_WNzOY{}N!dzvdz!^h97(+6oISD z<@pKt_hNn${v|>!8@?)77^x1(DHInW!pvG+d=tfRg@{kI$TN%LMGCrLlr29w7&8p2 zko)9GiDh2D09?Hm6U{|NMVbV1%#|v^6E?$jk{(9(4tgq#`(WoU^#ie9}NmkA#h8so2L|^M|qp3laL{4tY z-N>RlpRC}CHZv^lXR;qz#Z96{1>JTD3t)4DDg{=#o3%AXSyN#x1!q>;IKYsLovfhT zq?;A|bhe8n#BQ`yK)?QKS0}o8C2b-bJKeAqxJ$ya_-rQ)uB`0u35B=ZEqg9K_1Xx1 zJa<^}$|@w{ic3kcczxWNMqH9%x!d1W(sFobB~J*Jo>vM6S(6fCQDCJ=VVyxTq?HXezy>M#;YAV zCKTtt#C$ZHxIIoE^C@xr@I0MM=)TquW{BId5C#Ucmv?c5<+t1|#P>hYXU^3o?>MGeb$5D`2oiz1_rR))bt21C4l$Ip$p7Y!6g z42e1iaT_c&6B&-eD4>T+!oxVH7Lmd?@JE!|85a7qw}7mFupJ?_%EZdyU3178{@aJ4 zG8i*h?L65S`CN%vXU{&^mmks0v%dLQY8Q>1DcS^0`)3agbIW56~ zt$gRr#}m;l#l>_&!{NF`b`^&!>1DwQbovwg;6tZF60$mpw=l2xif0KLIt2=+F@8Az zl@bMSPhLiFB;D<=&lJK|66bt5LWDB(Fcw9dAtk9%{w!GmHtaJ0{+>IKuA8} zYa0;sPc^r1@sm(7jqVO~4jb~sE0D~p0m2am!f4hXxWu@bN9u@Ww$IQ)4ac=VFx(UO|1bcw;Mv=V`y0bkX7Y3b+?SF?j!;*2~%5${%y z?Wl+8SlSxUT6%DcG>OU`PEeK6{D|C+t&9T;1%Bj%1IZzn9KV62`Bh>z$CyB-V8t8x|!{hC9xVLMc zCZ7S0uMt-UP7j=4IP$l+cxQwi*34phvxJ3Pv^&ZaIx7Q_~NF(Ks+9s68yl(9-Wr zXgqA`0BbLFQCKWJRY-i3ZGm-fH-n^6YWo~qr(ztOd`A85Po5ND=2w7$UrhYR(uri; zzjr$Op40z)YpJ+Un=^?#l0wD7{-ni2Ds|7lsg#hpuif~+gtG9UBC%EblUl;K0S4uH zIzsdn?rqSVz?&r+ugCQl27z(OCHTsa~`fN!4V{wEwOGx^LH~ zV=3z6wW5oszpVg16KgQ(M_we=PkJF%kpACQAUG}{d%&1+f`P`6m#FrZpC{_{Mc>20M0LlUyJQs2G1qCX9mGw(xVRNOGxs~OVtfWK zys=7R^k3}CGNS1=t5F|;rO-1CItgkd!GaI`U*QA#|GtUauoSIOBUV`WUWNE3z`GYJ z3TcJn0PNC3tPtNE`0p!}U@2PR%d0{Qi{4fUnnWDun=W*bn+QIvi@XX<60Vp2cJutU zn?8sXRhD0cUPxeB@eSw)XAqKc@i_#F7JDqh@Z1jBz;QFlY^y4Q^mo-C>u zAT%UCUUU^c*8lHa<$|TCtEw8Iwnd}p8mm56VX?XGe{#*2y+svCjSxCPFv=LFr>F-< z3>Qt>_`jHxfTe_RxdO*UeR8pp?Wc(vxBM>}UkbBNgHGQ7-L-#p+eIAFbc)~hzi3>A zrKpXC4N&u*#`GsSTOOgHV#-XYTW<7Xtc&sRHMUXcqwW$h5(&9P=11VQGf4iNYvp9 z3=c(xwU#`U!Pg^oczTP|;X&aAsDHK2mA|)Y`Td_(EiuK*h$=LpGEU!iE9nA!WlVzW zE^?xMsAbwvLct_q+Avn&P4&Cu)V7a;!EcH>$ZwC>-}oB%yBp5m%=?f%MeUVyL_Z4) z;M?G(Yh^Vp>sBI!rW|WY3kRR{@W18lsN*fq3`9jI3@RNe zBF_QJ$ub@{yh0@g)yxMus;{b9Qo|N!MRkOx*8bm1ON;GLCc(-2~|5y@eCn zlY&chwV#r+|F^GgDtp zg=Px|&{rd{ykL#E&p*|YCVLVTMnm3Ni)qpNr6=i`wPoHKT*C_w4qBdy;Fb*6eK~Kr z>w{|y|Y8q z_k{stgSJnj-*v~8ypt@&zJRS$)gF=bT_v)JAPUJ-vUe+rmfEmug;tVoN9}LJKhbezE+EAD{Ox#jsbkp6wL>ho^;Ay9+ z9Xv0Iy696ULHA$$`w1NE)WsgEr>Q%;e%i7}LAlHCHSJSK$M=A&i&S!~tcVp)zr+57 zGs{&DL&>=#u^czm#Am5osxgjg;XFvDpG?nE>C1ieT|F{duC&ZF;-atdz51@u`g){F z>E0;e2<`9uJ7h6xnYR{0T^F*P9QKir5-JrLV%%JXucxb(IZZ;I_(q{PV#SH5bOiPG}&vIHuD|t%!nSQsT#mLX!GxD?dj6|KHkvAR}qPwsP z7|`rvAw@m6z+KB^RqLL=y_nDn&o3%x5=3)$1vZjLQsgk?qb_);u! zISr#xEn`K${Sn?-s5kGtXQ)glnaZS^;E?sMrcR5;=Ww`J$0K@DEt!h%7PPeVE>Qr? zAKtc588Fz~droKJ!I=2UrBEe_TrraFy_4UWu2#9yGr*PxwUYblty~U$$lP)lZ_%Gm zPPTEZQ;S-ayZ`qMD%wOIN9t1WS?JJ_*nmz6R}H$FyJE_lq@Fw!Q}&oDq7TFAd5p?1 zvIxf;dD14_@~y~YZ+P&7w;Oag*Tn;7^ioU5$#<~M%JGq;SyH;>Kw`S& z9$vpD@t@C9w=*H%FY*w-i)@so9?BSbe0ETxlR#p&+KJWQPL*C;T@}z&tI&*iN9^|IZR!wcH}dbsy}0_Yd`<1j*a~2eD!_C z#pBjr`4UWvx}WjG3s8|u?t3Ch??fW`e#?o7^!8u1JbEW`p6^_w#;@;X+{Kpd!>78s zv3yOjy3~k^x_c0qf}Fv}?UryJDA7)AoSHmMid zJiCLH&<++2l<*;&)fp`F06s2PFXZa)90cF3>P+qd5=q{{c5r;FI+>{jmu>1st`eC~ zx1rbyB&KdxA7)vX6zI>OuBYsKp zW3?UVE7kR|ayL>JK1M2S4^kDoks7!csU>@m^4o`0(q5#D_9NAEA5xD9<+2~Cvj>oR zg%n%z1*}@%LCN1fpq|SxGx^wq>TV3gS7ZLBL+T^Ym>yyTrRzIbfvy^p`ooyf=`d2& zN053$s16w|BA1R}GMdMXHAmG)*pSJlwJyT&F%a_ zb5Z>(oUB*lH(l%1U7@J~9dZvg)vG=+uBI6{co%#Z(1JRYWwxgRWSu?uuGrq8Ls!c3%kDSJZBB`g>nfP+n1YRF{6-V)b+#+%QbdxFRZz|4WGl;^=Tcr~mGZtPkMJ&Eq;`<0Lx1fFy(Q$U zmSBEUt>A+6Js|d)x(k?w2U!TL4*Kt48)1!m%Tnvtz;D;oogw?W+RUyYmNw*%Il_(q zXRK1EDFEiC+QGV$zU^$>R~R%SijEM!jDV5X@u`h_Ppt6I>uQCpv;NwwMmTd_-5#d( z#46kO43ZmP#v5Q)eI6)os2xmB;kzB=M&1>y%i7yQ@eQ?^{A3KR@_Q)1q4x3au2;^Y zl@!r7j}UHZ_+(FyufU+^`eW(tkbVv0J-Am(vqJS};L;6jR{Tx16Bn+Z4lXw__4!+Y zUV3MkaZ_ldu?5}=^+SiyT61UPIY$IO-lHDtt=|o2iP*Y`7AN-AkAzO2p|YnDEw%N- zp|^~%B6_#52IvpM7oVv+n`8W-XCxWPy0y!8fX(OXHq2n?{JA>T#R`w%$XcrJD|`Xq zvi|%>jfSE6wbSW}9ajBh?#qpy?#f^5>D66IzbePu-BEuugua=!$FE~CeKDC29n~=? zfbyp1bqp82!nNl}$IFB03uz0OPMIN;deOO4jQQL5#Do_uuk`J-+mDvbOzX7aYntm2 z6H-T6cVa?9?YUr_IUOg3gfQTs3&BZZa!3t4BvgP7sr^%sdO@fKsYsoff>h*Gq*kON zWtoQ5$f-zuNvJkyNbQ)0)KjFG5`O2jkkMq8WM+hPWq?b^oFP;2_e>^F#)n}^GefqM z`O+5b(y`pSSx9|NsFc}A?VW`bPL;MWZ#Gh|2-PP8wTAG`86l>rv<33}Aqn)AL|*$t z$Y$XiVbT{NCBhdKz^t>26K(QQ@6JKAz_;F==NMDg_@K`Il=VSSXNB-Zx^)qqI|=T+ zn%uf%eQi}$6>7b)j)!{BrZc}PYan};z_0o*4_=uBVcsjHvLu|v$Z5&}i z()rNAlsIrcv>g??dp`7x@Fr;awNU!vDQ|T>)TbY5N;mtkx)4IV8Wh&uo{D$ThBflE zEym8_%Z0aMSG$BC7buNeIR1K#4(m>I4}T(1F`nW51q#}Pcc8D%!zHiqU#Zw>?{Iuu z6$?N+-|(L(%f&Bzhw#;d^MT>`^$DV_IVgOc@HG{f6n;*4{eIk(a0~j9CQP3f-i3%2 z?3x$O@0!;$i@q5O`*M43gd|5}bC@~N&4~YOQP0n)wgSxH_vQA=bS4h=-`Fen9BJd8 z#E2$mLS!$DSh0i%dH@yppaM_?fNBRp$ypOy;CJLH2^x>N~^sS`tNW;!8 zeP_|`b1v`u<5BX?y4lD`*B69nH>BSHcS6ig>o_TwL(?Qj2#I{eQ=1DdEK z3Yz!{dc@=Y3K^UjZV?0R^z}J2;7YKgrAJdLxeC8ixQA>z#zKPk) z5F-D(m=jB&qSm$?stylzhN@JJlsBZtrn9iU*0$v6^w{z_u)o%}iq|}fo#_He>os;} z36TavO_u*j$>S)nW;EVl#ApUW`NP;Xih+GGOWF>zdh~^@wYI@!bB4LVURL9yYUqPE zn1Qc5)$7k9RZ~NR4naDrafGJCp|&tIHMW;(@LQoiMCcI_>PUp#$(Qj>%Rbl0j2tm% z)Hz5R7i*_@+8d?D2B6fv-lRTTA^{UQ%|fus(%^3;Nj0O4zKNg(wpI?ahuoM1C6vz? zY6neH&2l>#W(h_$_d-pQK-Ba@FQO?Ktc*0>?S>;;5Ew)Rx&@&?C>8L8+(*Ok%Sgr= zE5?rN*&_BwIEtkZvB%+{Hq*pGo3FYZX>h6SUXNhq;U6FfxmxYP~p8)EgiSi}e4x2p6mR=TbS zmeP|_%kgK8YHbrC`1@E>_+Fujwfn4lOA{_5RpX^bsT19KluBnv=PDt0-Y^^dd8OfI z@a&_pX7C_nj0xmyh&Q%lyR{U3*%gaMcEqB3{Pmz(TQ~4{F+vF?9}Y8x54(>ufr6Z& z)+!VdoK;N3ZxZorD&AJGXTy;ZrVw5^-VE+rX!7ljcWIHYLaIj63FXVX5cOS1q_7LR zKmnt1%^8ikqs|o#d1COsi)WI@QigpYF?iP@S=3Lj(T9rJdNF%`tL#S_y^EOrNX%Z* zD*J&(|7T}G`2#V#yjAvHjsC071~*#yT`~V~tNhy<{prroo7H$L3QE@{F1&ZGq~ zN3AqF%$PcUr?V#0n8#77!JpUg(v+Wa$34BlTR7h%U*>!KxZeSczDI=YZiCUc_$wTB z5zTR?klTBN3aSojY@ozE&c4i4^U&@@(i_po2a&2-;eA^2cxw`Q#uCsH-FT~A3Kx37dVBjXN`V~J9x zAYw}#Uh#Mh#cLQ|!|@t{*GRk)_=qi|W@+KjpfL`h2^(z&AHE)K4tHJR%^=`}#uUoa zvD%rQLlsc|X0)O#B|!lV^Wq&~W~~N)YH2C9DtO3HMcD(52_@h`47TyWhZ+n%Rh$eS zG>2NBifXn7%O~7qeMk`v$QSISUtT8Dq zRw0y4vP-am2c{$O=UiIzY{9C1VwbY0I2%a%8%Ga@P=~ws*rn z%R7hR-;1&c{2M`qB9VH2aW@qAO76pCK~t~f*>;f^1&yvVsc;7Vm7>U~h~zBh8UJ}i za-ajXUp6XvXnWeuF$Kx@qbL>Ll)PO<_azU%Nxtk!TXE2Mf>{Bf04W!^vvNWw%D4V- zLWf!S^pLdP!inqb%f?UPk)lu)&Dk_G6C zP}$rl?KUY49)(pC1Iv6SVf+t4MRmhdrO^1pEISylo+O7KyUapEf@T;&TCCOyJU-J& zVSbEuKBRS=q~xWs+FCiO;&XVjS7!=eI%HVz`xCUs8PJqz@#mCmCI#|qM{6HQTQz*2 zPR=JJY2{}8%%{^+utk%n+VG#JX}hqHHD4PD-DYTCL*S0tfwm?| zn67Pa!Qw&3Yi9NDy03XRYD>D@oXyz#(!NUljwy5 z8$WH|rjZYS{Hb*Yzc*OGBOH4y?TxmZMZa0IX3X;NPU+!6ylO!`FX_6FLR*ip6 zVANFY!qQhMN_gg}h^w^Kclrz0xZ9(Ok-Aj;%Zb+nTWxG{z}- z_-mA6fm5W$?@Zof^e`nlhKF0eUzW&J276`qRFVhPm#j=DJDia zlUS*eK}45%_5bfrYaieQQs9v=5wA&jO~y;ddn8PG&{j53k}R2CAj_J<%d%2e`^nl! zdSchAhG^YGMgL2}BpvY4O(&8;KVhv>BrobOc{Bw%J+&(1Fv(1+tydqdiuc=*dKVAS zcHoRB-IZ$9S(h;_Eo#bi5@uLKv?NB-UlJ?UF<{QDIUZtWlw^uzx+Fs~8*7q)dWhDZ z9F~#~pR+6V6Dg$ZN_By-z4#|EM(aZEvyw@(rj5mmXlSpUITJz?wBZo+da5xT*qf>X zkFr!ZC`;7Z!RURd3Xtwg?FJ2B=Cmtg~Ize%%z;8ST% zU~w49Zv znTgM^S#zdqlQSlQ>&bLq$V$WE+a89U#B#YOQ5qSM@ZcoYDm{hC!hLunDq&|>!^#A_ zFIAsPcY_6|($7K7sdO7~o1ry^QK!@G-zJ^l@F_IC#{d+zs!Mkz!b*62I{g6XPh*Mw zb*P|)lEe3PC|q+I|GZOGOXM)=1dm7tQDsf~bLfKE855^@WF${Wo7fAcoJn`Kjh?QX zIBQDAM4YP#cQ#7FiT+y0Hbh>`oc%5j-)NXKA#KWR-NY0LSPa0fe{u%fs63nQ2hU=( zN~hRK9vKT}P9&uzn&ep-Q!=K^nC=miJZ&OOKZ}MRK8JpZT&VSd_PXhEICVDtPiUL2 z^@NIItzUukd^%pU@S2TR23~XUnv2&wyyo-L^9vm2ut$~n&}ZJQ{~u3HxDc8F8OfPS z#++ZCoN4H+PB>gIS%bIemJhzjAR*t7trU4Rhz)tiC5n7OCILLRWZFX$WJ+;?)2<1N zKmVKJa=e|Bj{~Am9Gtdfy1^63v|80(-bQnzUNTISA#yF%>O|iBLojzsrVld=)N3?j=Hkm+WTz#o@n;U%d-tbtQYGTV4RNBYsR;}SXEWdreg|3k`KLh@IcN-MDz zA~7Gi7POhLW>cmWr0vR-+Z-mU@$+64ZT?dgYieMT>q2{Q+?;6%gC}OnExMsm^z+V8 z&wr<-7R^ymbJ+44Sc(2MJuIpa+xc&cKf&TGEZ&@H%Q_qrx+f4_LOx-LNqAL=X+f0s zuY<@UVphjUuN{1|P{|yF&C@dN9M_7utqXTUDZGtgaIp2qNY~k0i&8D>t&YK>&6#%A zd98E{rHFMt^{v<`L>Yb_VEE#Wl73};2&Og1X;7$A#Li3;k;;?GmCSJ%zb(_wSO|^d z{Pyz9IOgwy!{V<#=R0o8+$l9`6+Q0>fW@xNS*`Oe|El2lDo+*Puq*Rr!hcg6%Ph3n zV)|Y%y;mb2Q@*f~{ZB$8wl8d>YHinhT3~<8!Z-gx34D8O;Vd^2_vK=k6X(w-a|c1n z=jR?@xGnzQRTN{M^&cIiu*lN<$0n6oW$m^XHe>%cD_)$FGvQgstU}o@b7Lh@e14~_ zJuHND$*LTFNuiPaftSCzMsf?U;T9Unb-Y3>HIfXx4&&u$t&ud~}^0P%; zj%b1Wj}R>p$7~ieb|I1_U6q(VhDes|XAzZ%jfiA3c?;1F@gX8HlCnL-G(i$5{Y8uwF+s#+5mOO~cV>&}ED`fXT!~1$17ccRE)pLj67L)m z(vWNGhp7Bt}#tw*C-L zO6=a%IasJ7!ZAAnG`86ezB4hCeCCUoi%1F)Y?&|WMY~31o4D8u;wFg1E`P+9XjVX+ zeYP`1+|QDOm0fliIbo~;kIY5*`&b=m%kaD4CJ^nAZK)+ylJ<}fsqPmCp*_urq&-qc zp*>cJtv^IIN#spIBsR=KB)S$MwwQcasF04V@{e%}_Uc3}h?uw71Z0lcmf^2anrL%z z5w7W%D!Ldx9eDFlntbL9K+U(foh**ud9I+NL7x5FsBE)NmD-iD?79&1JT#5J_;)jTD5J^uMR|yCd4g> zI}ytf4|#Y1V^MZbS%LgLgN#j5Z}@pIgBtbP*0#}Sc) zw3nDBNW!NBA_>k=L=rv&5J~uGME)p55(Le;wK_r6Y-vij}eKYUl7UU*NkY7D19cNm57cawh=Kv#267rBEI{; zYwt;;=}f^Z&2w_og!Q8plY+;_HMod+us2Uykeivq=Vs!}NdBa-xZMB;%| zF+CfR44@n_U5H2)18We;?XDcr4))b7_4OphzY)cLM0CaUD?~R$BdhficlfPlX$SHP zFOp%H^g&EQ^hHcV^h2DF=#RJh>t{kD&h;oE~v&J zrsdY_CEYNsMC^{}f!G5v5Rn|Ic0&w9j6@7a9D;~uzVi7+;oQ3?=h_ewliu@fS?nj)9d>)a^?R6sml8Dz4$&7ag zk<9InME+9|U)ZkCp_97-8N?HErO-la5uFg1Aiu4c4ivF7Vm|VFis=C&Y7oiXK1xha z5OFFZncFkObhe1glsW6^Bl1e zg18>}&0<=r5*lcZNal9C9FgHJq90;8W~jw<4-xw!Zb$xLF+E(w@rXN-KUqxA6mbFK z$H-qIri(;egSZ#@o5Xa^PLVi(cmOkM#Pk^vzeYTS{O`r|uOhxiJc4|=-FnGUL~BHn zCP;#m;4ws3#N&wmh$j#`i`WzKB;FJy1Ccm|86yx+BThi9L!6383S=OjMa)GcidTrZ z7V#5IR}h4tQ%mi0NcJ^Mev0^|DE6(0zaU;gezTZ1wqGx~ifLQKCPa6{Yls1eL{C@5 z8;E@oZz9Gbeug+k%%6;S3)8a^ZzJZ|uMd`dfkcrg03vP|@qmaYM7(Ifp4_vK;mbW) zvVw!Bm*SO&S3X|L_=BeloIfusDm0QtCTAqW{sV<>P_m^^22W2E8bez22027Pp%na- z>ulktvO*I`$;JOB>Bq7{8@Rm%|EsX8rG?g@FD-Ndz2!Pfa4*ATWKN+Hnu@SkL|LH& zM4l~d109zj}(-k%klaEuOhrw;8l#*O1wVAs|2rAczuM|YP{CqRf<;`Ucf&)yEbeA zgbY}h_TKXWa`+te!Mgdrf0y~5EKQ@;3jn>Hh$7!ru=7 diff --git a/ctl/ctlSQLBox.cpp b/ctl/ctlSQLBox.cpp index ec7e367..e5f9f5f 100644 --- a/ctl/ctlSQLBox.cpp +++ b/ctl/ctlSQLBox.cpp @@ -22,6 +22,7 @@ #include "dlg/dlgFindReplace.h" #include "frm/menu.h" #include "utils/sysProcess.h" +#include wxString ctlSQLBox::sqlKeywords; static const wxString s_leftBrace(_T("([{")); @@ -1183,7 +1184,75 @@ void ctlSQLBox::OnMarginClick(wxStyledTextEvent &event) event.Skip(); } +void ctlSQLBox::Copy() { + wxString selText = GetSelectedText(); + if (!selText.IsEmpty()) + { + wxColor frColor[40]; + wxString str; + wxColour frc = settings->GetSQLBoxColourForeground(); + if (settings->GetSQLBoxUseSystemForeground()) + { + frc = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); + } + for (int i = 0; i < 34; ++ i ) + { + frColor[i]=StyleGetForeground(i); + if (i > 0 && i < 12) + //StyleSetForeground(i, settings->GetSQLBoxColour(i)); + frColor[i]=StyleGetForeground(i); + else + frColor[i]=frc; + + //StyleSetBackground(i, bgColor); + //StyleSetFont(i, fntSQLBox); + } + //

+ int endp=GetSelectionEnd(); + int startp=GetSelectionStart(); + wxString prevColor=wxEmptyString; + wxString tColor; + wxFont fntSQLBox = settings->GetSQLFont(); + wxString fontName = fntSQLBox.GetFaceName(); + + str=wxT(""); + int k=0; + int l=1; + while (startp"); + prevColor=tColor; + } + //str.append(str[k].GetValue()); + l=1; + if (!selText[k].IsAscii()) l++; + str+=selText[k]; + if (str.EndsWith(wxT("\r\n"))) str+=wxT("
"); + startp=startp+l; + k++; + } + str=str+wxT("
"); + + + + if (wxTheClipboard->Open()) + { + wxDataObjectComposite* dataobj = new wxDataObjectComposite(); + dataobj->Add(new wxTextDataObject(selText)); + dataobj->Add(new wxHTMLDataObject(str)); + wxTheClipboard->SetData(dataobj); + wxTheClipboard->Close(); + } + + } else wxStyledTextCtrl::Copy(); + + + + + } extern "C" char *tab_complete(const char *allstr, const int startptr, const int endptr, void *dbptr); void ctlSQLBox::OnAutoComplete(wxCommandEvent &rev) diff --git a/ctl/ctlSQLGrid.cpp b/ctl/ctlSQLGrid.cpp index 098288f..b404926 100644 --- a/ctl/ctlSQLGrid.cpp +++ b/ctl/ctlSQLGrid.cpp @@ -638,12 +638,14 @@ int recurse(ctlSQLGrid *g, int pos,int row, double &transfer) { return row; } void ctlSQLGrid::SetRowGroup(int row) { }; -bool ctlSQLGrid::FullArrayCollapseRowsPlan() +bool ctlSQLGrid::FullArrayCollapseRowsPlan(bool clear) { //wxString colKey = wxString::Format(wxT("%d:"), col) + GetColLabelValue(col); wxString text; //for(int row = 0; row < GetNumberRows(); ++row) + if (grp) { delete grp;} + if (clear) { grp=NULL; return true;} grp = new GroupRows(this); double transfersum=0; int r= recurse(this,0,0,transfersum); diff --git a/ctl/ctlSQLResult.cpp b/ctl/ctlSQLResult.cpp index e122faf..54431f5 100644 --- a/ctl/ctlSQLResult.cpp +++ b/ctl/ctlSQLResult.cpp @@ -208,8 +208,8 @@ void ctlSQLResult::DisplayData(bool single) if (c==wxT("QUERY PLAN")) { // table->isplan=true; - FullArrayCollapseRowsPlan(); - }; + FullArrayCollapseRowsPlan(false); + } else FullArrayCollapseRowsPlan(true); if (single) { diff --git a/dlg/dlgFunction.cpp b/dlg/dlgFunction.cpp index 57e906e..be97289 100644 --- a/dlg/dlgFunction.cpp +++ b/dlg/dlgFunction.cpp @@ -1041,7 +1041,8 @@ wxString dlgFunction::GetSql() name = name + wxT("(") + GetArgs(false, true) + wxT(")"); if (cbOwner->GetCurrentSelection() > 0) - AppendOwnerNew(sql, wxT("FUNCTION ") + name); + if (!isProcedure) AppendOwnerNew(sql, wxT("FUNCTION ") + name); + else AppendOwnerNew(sql, wxT("PROCEDURE ") + name); } if (false) diff --git a/include/ctl/ctlSQLBox.h b/include/ctl/ctlSQLBox.h index fcd68fe..71e33b6 100644 --- a/include/ctl/ctlSQLBox.h +++ b/include/ctl/ctlSQLBox.h @@ -50,7 +50,7 @@ public: void Create(wxWindow *parent, wxWindowID id = -1, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0); void HighlightBrace(int lb, int rb); void SetDatabase(pgConn *db); - + void Copy(); void OnKeyDown(wxKeyEvent &event); void OnAutoComplete(wxCommandEvent &event); void OnSearchReplace(wxCommandEvent &event); diff --git a/include/ctl/ctlSQLGrid.h b/include/ctl/ctlSQLGrid.h index b6b2cff..65b93e7 100644 --- a/include/ctl/ctlSQLGrid.h +++ b/include/ctl/ctlSQLGrid.h @@ -40,7 +40,7 @@ public: void OnLabelDoubleClick(wxGridEvent &event); void OnLabelClick(wxGridEvent &event); void OnCellRightClick(wxGridEvent &event); - bool FullArrayCollapseRowsPlan(); + bool FullArrayCollapseRowsPlan(bool clear); void AutoSizeColumn(int col, bool setAsMin = false, bool doLimit = true); void AutoSizeColumns(bool setAsMin); wxString GetRowLabelValue( int row ); diff --git a/schema/pgTable.cpp b/schema/pgTable.cpp index 1c72885..83b5cb5 100644 --- a/schema/pgTable.cpp +++ b/schema/pgTable.cpp @@ -321,7 +321,7 @@ wxString pgTable::GetSql(ctlTree *browser) wxString colDetails, conDetails; wxString prevComment; wxString cols_sql = wxEmptyString; - + wxString cols_type = wxEmptyString; wxString columnPrivileges; if (sql.IsNull()) @@ -357,16 +357,17 @@ wxString pgTable::GetSql(ctlTree *browser) int lastRealCol = 0; int currentCol = 0; pgColumn *column; - // Iterate the columns to find the last 'real' one while ((column = (pgColumn *)colIt1.GetNextObject()) != 0) { + if (currentCol==0) {cols_type+=column->GetDisplayName()+wxT(" ")+column->GetQuotedTypename(); + } else cols_type+=wxT(", ")+column->GetDisplayName()+wxT(" ")+column->GetQuotedTypename(); currentCol++; - + //AppendIfFilled(cols_type,wxT(","),cols_type); if (column->GetInheritedCount() == 0) lastRealCol = currentCol; } - + cols_type=wxT("-- (")+cols_type+wxT(")"); // Now build the actual column list int colCount = 0; while ((column = (pgColumn *)colIt2.GetNextObject()) != 0) @@ -725,7 +726,9 @@ wxString pgTable::GetSql(ctlTree *browser) AppendStuffNoSql(sql, browser, partitionFactory); } */ + sql+=cols_type; } + return sql; } @@ -1260,6 +1263,9 @@ void pgTableCollection::ShowStatistics(frmMain *form, ctlListView *statistics) // Add the statistics view columns statistics->ClearAll(); statistics->AddColumn(_("Table Name")); + if (hasSize) + statistics->AddColumn(_("Size"), 50); + statistics->AddColumn(_("Tuples inserted")); statistics->AddColumn(_("Tuples updated")); statistics->AddColumn(_("Tuples deleted")); @@ -1283,8 +1289,6 @@ void pgTableCollection::ShowStatistics(frmMain *form, ctlListView *statistics) statistics->AddColumn(_("Analyze counter")); statistics->AddColumn(_("Autoanalyze counter")); } - if (hasSize) - statistics->AddColumn(_("Size"), 50); wxString sql = wxT("SELECT st.relname, n_tup_ins, n_tup_upd, n_tup_del"); if (GetConnection()->BackendMinimumVersion(8, 3)) @@ -1311,11 +1315,13 @@ void pgTableCollection::ShowStatistics(frmMain *form, ctlListView *statistics) int i; while (!stats->Eof()) { - i = 4; + i = 5; statistics->InsertItem(pos, stats->GetVal(wxT("relname")), PGICON_STATISTICS); - statistics->SetItem(pos, 1, stats->GetVal(wxT("n_tup_ins"))); - statistics->SetItem(pos, 2, stats->GetVal(wxT("n_tup_upd"))); - statistics->SetItem(pos, 3, stats->GetVal(wxT("n_tup_del"))); + if (hasSize) + statistics->SetItem(pos, 1, stats->GetVal(wxT("size"))); + statistics->SetItem(pos, 2, stats->GetVal(wxT("n_tup_ins"))); + statistics->SetItem(pos, 3, stats->GetVal(wxT("n_tup_upd"))); + statistics->SetItem(pos, 4, stats->GetVal(wxT("n_tup_del"))); if (GetConnection()->BackendMinimumVersion(8, 3)) { statistics->SetItem(pos, i++, stats->GetVal(wxT("n_tup_hot_upd"))); @@ -1336,15 +1342,13 @@ void pgTableCollection::ShowStatistics(frmMain *form, ctlListView *statistics) statistics->SetItem(pos, i++, stats->GetVal(wxT("analyze_count"))); statistics->SetItem(pos, i++, stats->GetVal(wxT("autoanalyze_count"))); } - if (hasSize) - statistics->SetItem(pos, i, stats->GetVal(wxT("size"))); stats->MoveNext(); pos++; } delete stats; } - + statistics->SetColumnWidth(0,wxLIST_AUTOSIZE); }