Changeset: 54e57436ba74 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=54e57436ba74 Modified Files: NT/mkgeomwxs.py NT/mkodbcwxs.py NT/mksqlwxs.py buildtools/conf/monetdb.ico clients/mapiclient/mclient.c clients/mapiclient/mhelp.c clients/mapiclient/mhelp.h gdk/gdk_bbp.c gdk/gdk_join.c Branch: default Log Message:
Merge with Jul2017 branch. diffs (truncated from 1661 to 300 lines): diff --git a/NT/mkgeomwxs.py b/NT/mkgeomwxs.py --- a/NT/mkgeomwxs.py +++ b/NT/mkgeomwxs.py @@ -46,7 +46,11 @@ def main(): print(r' <RegistrySearch Id="MonetDBRegistry" Key="Software\[Manufacturer]\MonetDB5" Name="InstallPath" Root="HKLM" Type="raw"/>') print(r' </Property>') print(r' <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"/>') + print(r' <Property Id="ARPPRODUCTICON" Value="monetdb.ico"/>') print(r' <Media Id="1" Cabinet="monetdb.cab" EmbedCab="yes"/>') + print(r' <Condition Message="MonetDB5-SQL needs to be installed first.">') + print(r' INSTALLDIR') + print(r' </Condition>') print(r' <Directory Id="TARGETDIR" Name="SourceDir">') print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC%s0_CRT_%s.msm"/>' % (vs, arch)) print(r' <Directory Id="%s">' % folder) @@ -82,8 +86,46 @@ def main(): print(r' <ComponentRef Id="%s"/>' % f) print(r' <MergeRef Id="VCRedist"/>') print(r' </Feature>') - print(r' <UIRef Id="WixUI_InstallDir"/>') + # the <UI> section was lifted from + # ...\SDK\wixui\WixUI_InstallDir.wxs and modified to remove the + # InstallDirDlg subsection + # see http://wixtoolset.org/documentation/manual/v3/wixui/wixui_customizations.html + print(r' <UI Id="MyWixUI_InstallDir">') + print(r' <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8"/>') + print(r' <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12"/>') + print(r' <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes"/>') + print(r' <Property Id="DefaultUIFont" Value="WixUI_Font_Normal"/>') + print(r' <Property Id="WixUI_Mode" Value="InstallDir"/>') + print(r' <DialogRef Id="BrowseDlg"/>') + print(r' <DialogRef Id="DiskCostDlg"/>') + print(r' <DialogRef Id="ErrorDlg"/>') + print(r' <DialogRef Id="FatalError"/>') + print(r' <DialogRef Id="FilesInUse"/>') + print(r' <DialogRef Id="MsiRMFilesInUse"/>') + print(r' <DialogRef Id="PrepareDlg"/>') + print(r' <DialogRef Id="ProgressDlg"/>') + print(r' <DialogRef Id="ResumeDlg"/>') + print(r' <DialogRef Id="UserExit"/>') + print(r' <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish>') + print(r' <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>') + print(r' <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>') + print(r' <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg">NOT Installed</Publish>') + print(r' <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>') + print(r' <Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>') + print(r' <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">LicenseAccepted = "1"</Publish>') + print(r' <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" Order="1">NOT Installed</Publish>') + print(r' <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish>') + print(r' <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">Installed AND PATCH</Publish>') + print(r' <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>') + print(r' <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>') + print(r' <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>') + print(r' <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>') + print(r' <Property Id="ARPNOMODIFY" Value="1"/>') + print(r' </UI>') + print(r' <UIRef Id="WixUI_Common"/>') + print(r' <UIRef Id="MyWixUI_InstallDir"/>') print(r' <UIRef Id="WixUI_ErrorProgressText"/>') + print(r' <Icon Id="monetdb.ico" SourceFile="monetdb.ico"/>') print(r' </Product>') print(r'</Wix>') diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py --- a/NT/mkodbcwxs.py +++ b/NT/mkodbcwxs.py @@ -46,6 +46,7 @@ def main(): print(r' <WixVariable Id="WixUIBannerBmp" Value="banner.bmp"/>') # print(r' <WixVariable Id="WixUIDialogBmp" Value="backgroundRipple.bmp"/>') print(r' <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"/>') + print(r' <Property Id="ARPPRODUCTICON" Value="monetdb.ico"/>') print(r' <Media Id="1" Cabinet="monetdb.cab" EmbedCab="yes"/>') print(r' <CustomAction Id="driverinstall" FileKey="odbcinstall" ExeCommand="/Install" Execute="deferred" Impersonate="no"/>') print(r' <CustomAction Id="driveruninstall" FileKey="odbcinstall" ExeCommand="/Uninstall" Execute="deferred" Impersonate="no"/>') diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py --- a/NT/mksqlwxs.py +++ b/NT/mksqlwxs.py @@ -49,6 +49,7 @@ def main(): print(r' <RegistrySearch Id="MonetDBRegistry" Key="Software\[Manufacturer]\[ProductName]" Name="InstallPath" Root="HKLM" Type="raw"/>') print(r' </Property>') print(r' <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"/>') + print(r' <Property Id="ARPPRODUCTICON" Value="monetdb.ico"/>') print(r' <Media Id="1" Cabinet="monetdb.cab" EmbedCab="yes"/>') print(r' <Directory Id="TARGETDIR" Name="SourceDir">') print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC%s0_CRT_%s.msm"/>' % (vs, arch)) diff --git a/buildtools/conf/monetdb.ico b/buildtools/conf/monetdb.ico index fad690d3c111db967da3cf2e65cb6df338355064..1cd666db49c02edb3012cae55f0c257c359a9359 GIT binary patch literal 16958 zc%1E8ZD?C%6n?TUO_QNj{1`H|L#7sC>MT~BN=s3h4z+EXqRjcj!G8IHqPBBwbGuE{ zsXsRM!~Kvsrh=6Tej%c=R5w&qL{P*p7O5W_qK!Idx}|x2&b>GFCQF)|w7GAm_bI0* zP44@i^PKm*=lw{50Ds!s!QYF~+yR^ppqawAV8D9chYue<eE9I;!-o$a|1Gow^Qq?P z_CqIn8nCJ-jBd!W=YNV=1lwa_?72CNvvm8S11&(XH;nfghjGTCN4GyZ5Uocuxu+>v z#^P?>{^&q&1RE(zgmqy+w?AIvdf-IPfnRemh&5ofZlAmc`EQ!y&-oAy<1*boc?nqq zIR7UdG5C^s5z_6KmmvSWIsRr0A{f@~lb7I__dEGB9)EL#bcSxfyaH=~dmevT55jm< zw_jf2M&Q&!{+t5`V?dp5-#kLVSpyyGVViEpyn?KKMfeZt_R9+}&%=e>?K=2^Zr{8> ztR72C@E_Ifn-^f7uPMf#bK+fPV3e{=4PvQoKWhcn`d3Tve_6$`gZz~(Y0Bq(Zwuqm zqTBD;068vVo*yZ}f3sSPAo)%>V&Ie`lyCU?(`r3hb#ti(<i54&+_(65$us0QRD!=# zvT8_<l*bRcg1CqrkCv!?hqy0_<enwJpIpS?$K3Nb0Sle&=Nhg97I5BwR&wkk*zSCu z`Mum6<8m>G<KbKz?xAnN9K2_heJ#g*_cVDw(cOTi!gl1g(?t$UvNkTW?KJj8uwgEp zr`v(~9GB-yaWA*;BfkSKV(^FRL!&$|ab!H7lQV{ABujwB>=gR)&a~Xa*eCbHrTS3) zSVDeBUBqBa)(&aY*?`4z$H2J9yknb>SO_b~ZEQO3^l^We_3vTRf^~kCt6E?nnTx?n z;AGa6*JQ8J9mFNIXKaDImyp-Uw7jix|1LM@rPh_}m$l$Ym-X<VdI$^cW&zr{lk%s; z!5otsov~@7RpwpE^(}wg_sV)@@-on=2F&lr%7WZ>yT}2N!|d}Khi_*)YS00`-VzPr z2C0`-^JN^n!?>LN8FGhNma{eH8M)_S+j^UO2j%Tb?DF|HT*e^Fc;&6B(IA%5hnJ@A z9;lfYpVFsY!lSnVw=qYq<=@Mr^|+9)&yNLhG22`rdo#%;i5+!<&;Ra*vvbV5Be-;m zhc%~vbL46zF?hvg46OMuh^w9L<qlfb9P&t3#Gwk2GhH+yS6&YPW&ds<!x*frl)EDa z+g#SfTrPYlYe_*j0mh+2_T*BJW|8w4`+P!jC(mb|S!B;@`+Z-v+#NAkYsS%SE?9Oy zRvU0-vHm!p&!peCGRGh1ym(V$B6GG(ULUgewL97Fu2?-TDB|Zilzp~+Ik&`T%H7fT zc`o-zh57Ic^;V9_qB17tv0j}f-{0ExqgBo^te@w00w+!D+YnaM#utt}om9iPXSTTK z*|PS^lNH9{-&n-)I{jUv?#F_vePAtPAARiWBlcT(hCeLzel|HDV}Bi*Y5S`R>O!eG zl4d_+=3J3lJA|jGH!C@p590yqet!NKWfxz|oz)LE-(q&NW;`Cm3AN;&7l#3?pv~`R z7>C)A6s6ZI-p9m&b&mEwsB&J+M8=sj>vi!igt`}D`ZGwszOG>`GR(P8Xh++b%MBFQ zd?kBs10$4g>GNMz&XY-VZ)M;u%I#|8`2FtAymK8yi^;>lCfPSrKWm;h;^v+7i~Rc; zxohHccNE!2`S9VxhYue<eE9I;qY5ZbF=6YBt+R1kx7lwr*}BozkJx&nt>3ftXc?U- z)V2Ym&en$YMj+8-Ytv#jkPMmr)g?pXS~`@f+e4iSr33q^lZ_etEX|uTSjWfFmc><V zDuq6U#(+X#Tp6Jx5Za*<fi%!0pT&(pCa%(;g%rEyc~A|r4;~B?;!T31AjVVF;#4*_ NDhY%vXKOh~{{Y9z6uSTb diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -2703,7 +2703,10 @@ doFile(Mapi mid, stream *fp, int useinse } } else #endif - sql_help(line, toConsole); + { + setWidth(); + sql_help(line, toConsole, pagewidth <= 0 ? DEFWIDTH : pagewidth); + } continue; } /* for later diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c --- a/clients/mapiclient/mhelp.c +++ b/clients/mapiclient/mhelp.c @@ -30,7 +30,7 @@ #include "stream.h" #include "mhelp.h" -typedef struct{ +typedef struct { char *command; char *synopsis; char *syntax; @@ -38,658 +38,842 @@ typedef struct{ char *comments; } SQLhelp; -SQLhelp sqlhelp[]={ +SQLhelp sqlhelp[] = { // major commands - { "ALTER TABLE", - "", - "ALTER TABLE qname ADD [COLUMN] { column_def | table_constraint }\n" - "ALTER TABLE qname ALTER [COLUMN] ident SET DEFAULT value\n" - "ALTER TABLE qname ALTER [COLUMN] ident SET [NOT] NULL\n" - "ALTER TABLE qname ALTER [COLUMN] ident DROP DEFAULT\n" - "ALTER TABLE qname ALTER [COLUMN] ident SET STORAGE {string | NULL} \n" - "ALTER TABLE qname DROP [COLUMN] ident [RESTRICT | CASCADE]\n" - "ALTER TABLE qname DROP CONSTRAINT ident [RESTRICT | CASCADE]\n" - "ALTER TABLE qname SET { { READ | INSERT } ONLY | READ WRITE }", - "column_def,table_constraint", - "See also https://www.monetdb.org/Documentation/SQLreference/Alter" - }, - { "ALTER MERGE TABLE", - "", - "ALTER TABLE qname ADD TABLE qname\n" - "ALTER TABLE qname DROP TABLE qname [RESTRICT | CASCADE]\n", - "", - "See also https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/DataPartitioning" - }, - { "ALTER SEQUENCE", - "", - "ALTER SEQUENCE ident [ AS datatype] [ RESTART [WITH start]] [INCREMENT BY increment]\n" - "[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue | NOMAXVALUE] | [ [ NO] CYCLE]", - 0, - "See also https://www.monetdb.org/Documentation/Manuals/SQLreference/SerialTypes" - }, - { "ALTER USER", - "", - "ALTER USER ident WITH [ ENCRYPTED | UNENCRYPTED] PASSWORD string\n" - "ALTER USER ident SET SCHEMA ident\n" - "ALTER USER ident WITH [ENCRYPTED | UNENCRYPTED] PASSWORD SET SCHEMA ident\n" - "ALTER USER RENAME TO ident \n" - "ALTER USER SET [ ENCRYPTED | UNENCRYPTED] PASSWORD string USING OLD PASSWORD string", - 0, "See also https://www.monetdb.org/Documentation/SQLreference/Users" - }, - { "ANALYZE", - "Collect statistics for optimizations", - "ANALYZE qname [column_list] [SAMPLE size] [MINMAX]", - "column_list", - "See also https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/statistics" - }, - { "CALL", - "", - "CALL qname '(' [ [scalar_expression ] [ ',' ...] ]')' | CALL ident '.' ident", - 0,0 - }, - { "CASE", - "Case statement for procedures/functions", - "CASE scalar_expression [ when_statement ...] [ELSE procedure_statement ... ] END CASE", - 0,"See also https://www.monetdb.org/Documentation/SQLreference/Flowofcontrol" - }, - { "COMMIT", - "Commit the current transaction", - "COMMIT [ WORK ] [ AND CHAIN | AND NO CHAIN ]", - 0,0 - }, - { "COPY BINARY", - "Append binary representations into a table", - "COPY [nrofrecords] BINARY INTO qname [column_list] FROM string [','...] [NO CONSTRAINT]", - "nrofrecords", - "see https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/BinaryBulkLoad" - }, - { "COPY INTO", - "Parse a csv-file into a table", - "COPY [nrofrecords] INTO qname [column_list] FROM string [','...] [headerlist] [ separators]\n" - " [NULL [AS] string] [LOCKED] [BEST EFFORT] [NO CONSTRAINT] [FWF '(' integer [','...]')'\n" - "COPY [nrofrecords] INTO qname [column_list] FROM STDIN [headerlist] [ separators]\n" - " [NULL [AS] string] [LOCKED] [BEST EFFORT] [NO CONSTRAINT]\n" - "COPY query_expression INTO [STDOUT | string] [seps] [NULL [AS] string]", - "nrofrecords,headerlist,separators", - "See also https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/LoadingBulkData" - }, - { "COPY LOADER", - "Copy into using a user supplied parsing function", - "COPY LOADER INTO qname FROM qname '(' [ scalar_expression ... ] ')'", - 0,0 - }, - { "CREATE AGGREGATE FUNCTION", - "", - "CREATE AGGREGATE FUNCTION qname '(' { '*' | [ param [',' ...]] } ')'\n" - " RETURNS { data_type | TABLE '(' function_return [ ',' ... ] ')' }\n" - " EXTERNAL NAME ident ',' ident\n" - "CREATE AGGREGATE FUNCTION qname '(' { '*' | [ param [',' ...]] }')'\n" - " RETURNS { data_type | TABLE '(' function_return [ ',' ... ] ')' }\n" - " LANGUAGE ident external_code", - "param,data_type,function_return", - 0 - }, - { "CREATE FILTER FUNCTION", - "", - "CREATE FILTER FUNCTION qname '(' { '*' | [ param [',' ...]] } ')'\n" - " RETURNS { data_type | TABLE '(' function_return [ ',' ... ] ')' }\n" - " EXTERNAL NAME ident ',' ident", - "param,data_type,function_return", - 0 - }, - { "CREATE FUNCTION", - "", - "CREATE FUNCTION qname '(' { '*' | [ param [',' ...]] } ')'\n" - " RETURNS { data_type | TABLE '(' function_return [ ',' ... ] ')' }\n" - " EXTERNAL NAME ident ',' ident\n" - "CREATE FUNCTION qname '(' { '*' | [ param [',' ...]] } ')'\n" - " RETURNS { data_type | TABLE '(' function_return [ ',' ... ] ')' }\n" - " BEGIN [ ATOMIC ] statement [ ';' ...] END\n" - "CREATE FUNCTION qname '(' { '*' | [ param [',' ...]] }')'\n" - " RETURNS { data_type | TABLE '(' function_return [ ',' ... ] ')' }\n" - " LANGUAGE ident external_code", - "param,data_type,function_return,external_code", - 0 - }, - { "CREATE INDEX", - "", - "CREATE [ UNIQUE | ORDERED | IMPRINTS ] INDEX ident ON qname '(' ident_list ')'", - 0,0 - }, - { "CREATE PROCEDURE", - "", - "CREATE PROCEDURE qname '(' { '*' | [ param [',' ...]] }')'\n" - " EXTERNAL NAME ident ',' ident\n" - "CREATE PROCEDURE qname '(' { '*' | [ param [',' ...]] } ')'\n" - " BEGIN [ ATOMIC ] procedure_statement [ ';' ...] END\n" - "CREATE PROCEDURE qname '(' { '*' | [ param [',' ...]] } ')'\n" - " LANGUAGE ident external_code", - "param,data_type,external_code", - 0 - }, - { "CREATE LOADER", - "", - "CREATE LOADER qname '(' [ param [',' ...]] ')'\n" - " LANGUAGE ident external_code", - "param,data_type,function_return,external_code", - 0 - }, - { "CREATE MERGE TABLE", - "", - "CREATE MERGE TABLE qname table_source;", - 0, "See also https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/DataPartitioning" - }, - { "CREATE REMOTE TABLE", - "", - "CREATE REMOTE TABLE qname ON string", - 0,"remote name should match mapi:monetdb://host:port/database[/schema[/table]]" - }, - { "CREATE REPLICA TABLE", - "", - "CREATE REPLICA TABLE qname table_source;", _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list