diff --git a/.gitattributes b/.gitattributes index 68e808b4f6..86b85bd562 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3363,6 +3363,7 @@ packages/fcl-db/src/datadict/fpddmysql51.pp svneol=native#text/plain packages/fcl-db/src/datadict/fpddmysql55.pp svneol=native#text/plain packages/fcl-db/src/datadict/fpddmysql56.pp svneol=native#text/plain packages/fcl-db/src/datadict/fpddmysql57.pp svneol=native#text/plain +packages/fcl-db/src/datadict/fpddmysql80.pp svneol=native#text/plain packages/fcl-db/src/datadict/fpddodbc.pp svneol=native#text/plain packages/fcl-db/src/datadict/fpddoracle.pp svneol=native#text/plain packages/fcl-db/src/datadict/fpddpq.pp svneol=native#text/plain @@ -3494,6 +3495,7 @@ packages/fcl-db/src/sqldb/mysql/mysql51conn.pas svneol=native#text/plain packages/fcl-db/src/sqldb/mysql/mysql55conn.pas svneol=native#text/plain packages/fcl-db/src/sqldb/mysql/mysql56conn.pas svneol=native#text/pascal packages/fcl-db/src/sqldb/mysql/mysql57conn.pas svneol=native#text/plain +packages/fcl-db/src/sqldb/mysql/mysql80conn.pas svneol=native#text/plain packages/fcl-db/src/sqldb/mysql/mysqlconn.inc svneol=native#text/plain packages/fcl-db/src/sqldb/odbc/Makefile svneol=native#text/plain packages/fcl-db/src/sqldb/odbc/Makefile.fpc svneol=native#text/plain @@ -3880,6 +3882,7 @@ packages/fcl-pdf/Makefile svneol=native#text/plain packages/fcl-pdf/Makefile.fpc svneol=native#text/plain packages/fcl-pdf/examples/diamond.png -text svneol=unset#image/png packages/fcl-pdf/examples/metautf16.pp svneol=native#text/plain +packages/fcl-pdf/examples/monospacetext.pp svneol=native#text/plain packages/fcl-pdf/examples/poppy.jpg -text packages/fcl-pdf/examples/testfppdf.lpi svneol=native#text/plain packages/fcl-pdf/examples/testfppdf.lpr svneol=native#text/plain @@ -7747,6 +7750,7 @@ packages/mysql/src/mysql55.pp svneol=native#text/plain packages/mysql/src/mysql55dyn.pp svneol=native#text/plain packages/mysql/src/mysql56dyn.pp svneol=native#text/plain packages/mysql/src/mysql57dyn.pp svneol=native#text/plain +packages/mysql/src/mysql80dyn.pp svneol=native#text/plain packages/ncurses/Makefile svneol=native#text/plain packages/ncurses/Makefile.fpc svneol=native#text/plain packages/ncurses/Makefile.fpc.fpcmake svneol=native#text/plain diff --git a/compiler/aarch64/cpubase.pas b/compiler/aarch64/cpubase.pas index 92d5da84e4..5032c573e0 100644 --- a/compiler/aarch64/cpubase.pas +++ b/compiler/aarch64/cpubase.pas @@ -303,7 +303,7 @@ unit cpubase; NR_MM_RESULT_REG = NR_D0; - NR_RETURN_ADDRESS_REG = NR_FUNCTION_RETURN_REG; + NR_RETURN_ADDRESS_REG = NR_LR; { Offset where the parent framepointer is pushed } PARENT_FRAMEPOINTER_OFFSET = 0; diff --git a/compiler/arm/cgcpu.pas b/compiler/arm/cgcpu.pas index c68bc59959..082ebf7985 100644 --- a/compiler/arm/cgcpu.pas +++ b/compiler/arm/cgcpu.pas @@ -1907,7 +1907,7 @@ unit cgcpu; r : byte; mmregs, regs, saveregs : tcpuregisterset; - registerarea, + registerarea, offset, r7offset, stackmisalignment : pint; imm1, imm2: DWord; @@ -2005,14 +2005,24 @@ unit cgcpu; break; end; list.concat(setoppostfix(taicpu.op_ref_regset(A_STM,ref,R_INTREGISTER,R_SUBWHOLE,regs),PF_FD)); + current_asmdata.asmcfi.cfa_def_cfa_offset(list,registerarea); end; if current_procinfo.framepointer<>NR_STACK_POINTER_REG then begin + offset:=-4; + for r:=RS_R15 downto RS_R0 do + if r in regs then + begin + current_asmdata.asmcfi.cfa_offset(list,newreg(R_INTREGISTER,r,R_SUBWHOLE),offset); + dec(offset,4); + end; { the framepointer now points to the saved R15, so the saved framepointer is at R11-12 (for get_caller_frame) } list.concat(taicpu.op_reg_reg_const(A_SUB,NR_FRAME_POINTER_REG,NR_R12,4)); a_reg_dealloc(list,NR_R12); + current_asmdata.asmcfi.cfa_def_cfa_register(list,current_procinfo.framepointer); + current_asmdata.asmcfi.cfa_def_cfa_offset(list,4); end; end else @@ -2095,6 +2105,8 @@ unit cgcpu; list.concat(taicpu.op_reg_reg_reg(A_SUB,NR_STACK_POINTER_REG,NR_STACK_POINTER_REG,NR_R12)); a_reg_dealloc(list,NR_R12); end; + if current_procinfo.framepointer=NR_STACK_POINTER_REG then + current_asmdata.asmcfi.cfa_def_cfa_offset(list,registerarea+localsize); end; if (mmregs<>[]) or diff --git a/compiler/cfidwarf.pas b/compiler/cfidwarf.pas index e27c2dee1c..ddc3a13000 100644 --- a/compiler/cfidwarf.pas +++ b/compiler/cfidwarf.pas @@ -244,8 +244,6 @@ implementation datatype:=dt_none; end; - - {**************************************************************************** TDwarfAsmCFILowLevel ****************************************************************************} @@ -292,22 +290,16 @@ implementation {$elseif defined(arm)} procedure TDwarfAsmCFILowLevel.generate_initial_instructions(list:TAsmList); begin - if GenerateThumbCode then - begin - list.concat(tai_const.create_8bit(DW_CFA_def_cfa)); - list.concat(tai_const.create_uleb128bit(dwarf_reg(NR_STACK_POINTER_REG))); - list.concat(tai_const.create_uleb128bit(0)); - end - else - begin - { FIXME!!! } - list.concat(tai_const.create_8bit(DW_CFA_def_cfa)); - list.concat(tai_const.create_uleb128bit(dwarf_reg(NR_STACK_POINTER_REG))); - list.concat(tai_const.create_uleb128bit(sizeof(aint))); - list.concat(tai_const.create_8bit(DW_CFA_offset_extended)); - list.concat(tai_const.create_uleb128bit(dwarf_reg(NR_RETURN_ADDRESS_REG))); - list.concat(tai_const.create_uleb128bit((-sizeof(aint)) div data_alignment_factor)); - end; + list.concat(tai_const.create_8bit(DW_CFA_def_cfa)); + list.concat(tai_const.create_uleb128bit(dwarf_reg(NR_STACK_POINTER_REG))); + list.concat(tai_const.create_uleb128bit(0)); + end; +{$elseif defined(aarch64)} + procedure TDwarfAsmCFILowLevel.generate_initial_instructions(list:TAsmList); + begin + list.concat(tai_const.create_8bit(DW_CFA_def_cfa)); + list.concat(tai_const.create_uleb128bit(dwarf_reg(NR_STACK_POINTER_REG))); + list.concat(tai_const.create_uleb128bit(0)); end; {$else} { if more cpu dependend stuff is implemented, this needs more refactoring } @@ -555,12 +547,58 @@ implementation procedure TDwarfAsmCFILowLevel.cfa_advance_loc(list:TAsmList); var currloclabel : tasmlabel; + hp : tai; + instrcount : longint; + dwarfloc: Integer; begin if FLastloclabel=nil then internalerror(200404082); + { search the list backwards and check if we really need an advance loc, + i.e. if real code/data has been generated since the last cfa_advance_loc + call + } + hp:=tai(list.Last); + while assigned(hp) do + begin + { if we encounter FLastloclabel without encountering code/data, see check below, + we do not need insert an advance_loc entry } + if (hp.typ=ait_label) and (tai_label(hp).labsym=FLastloclabel) then + exit; + { stop if we find any tai which results in code or data } + if not(hp.typ in ([ait_label]+SkipInstr)) then + break; + hp:=tai(hp.Previous); + end; + + { check if the last advance entry is less then 8 instructions away: + as x86 instructions might not be bigger than 15 bytes and most other + CPUs use only 4 byte instructions or smaller, this is safe + we could search even more but this takes more time and 8 instructions should be normally enough + } + hp:=tai(list.Last); + instrcount:=0; + dwarfloc:=DW_CFA_advance_loc4; + while assigned(hp) and (instrcount<8) do + begin + { stop if we find any tai which results in code or data } + if not(hp.typ in ([ait_label,ait_instruction]+SkipInstr)) then + break; + if (hp.typ=ait_label) and (tai_label(hp).labsym=FLastloclabel) then + begin + dwarfloc:=DW_CFA_advance_loc1; + break; + end; + if hp.typ=ait_instruction then + inc(instrcount); + hp:=tai(hp.Previous); + end; + current_asmdata.getlabel(currloclabel,alt_dbgframe); list.concat(tai_label.create(currloclabel)); - DwarfList.concat(tdwarfitem.create_reloffset(DW_CFA_advance_loc4,doe_32bit,FLastloclabel,currloclabel)); + if dwarfloc=DW_CFA_advance_loc1 then + DwarfList.concat(tdwarfitem.create_reloffset(DW_CFA_advance_loc1,doe_8bit,FLastloclabel,currloclabel)) + else + DwarfList.concat(tdwarfitem.create_reloffset(DW_CFA_advance_loc4,doe_32bit,FLastloclabel,currloclabel)); FLastloclabel:=currloclabel; end; diff --git a/compiler/dbgstabs.pas b/compiler/dbgstabs.pas index 8b26099a61..89ed3aea5f 100644 --- a/compiler/dbgstabs.pas +++ b/compiler/dbgstabs.pas @@ -1597,6 +1597,7 @@ implementation var st : string; ss : ansistring; + i : longint; begin ss:=''; { Don't write info for default parameter values, the N_Func breaks @@ -1609,10 +1610,15 @@ implementation conststring: begin if sym.value.len<200 then - if target_dbg.id=dbg_stabs then - st:='s'''+backspace_quote(octal_quote(strpas(pchar(sym.value.valueptr)),[#0..#9,#11,#12,#14..#31,'''']),['"','\',#10,#13])+'''' - else - st:='s'''+stabx_quote_const(octal_quote(strpas(pchar(sym.value.valueptr)),[#0..#9,#11,#12,#14..#31,'''']))+'''' + begin + setlength(ss,sym.value.len); + for i:=0 to sym.value.len-1 do + ss[i+1]:=pchar(sym.value.valueptr)[i]; + if target_dbg.id=dbg_stabs then + st:='s'''+backspace_quote(octal_quote(ss,[#0..#9,#11,#12,#14..#31,'''']),['"','\',#10,#13])+'''' + else + st:='s'''+stabx_quote_const(octal_quote(ss,[#0..#9,#11,#12,#14..#31,'''']))+''''; + end else st:=''; end; diff --git a/packages/fcl-db/fpmake.pp b/packages/fcl-db/fpmake.pp index 15584bdcd8..a507cd82b9 100644 --- a/packages/fcl-db/fpmake.pp +++ b/packages/fcl-db/fpmake.pp @@ -473,6 +473,14 @@ begin AddUnit('fpddsqldb'); AddUnit('mysql57conn'); end; + T:=P.Targets.AddUnit('fpddmysql80.pp', DatadictOSes); + with T.Dependencies do + begin + AddUnit('sqldb'); + AddUnit('fpdatadict'); + AddUnit('fpddsqldb'); + AddUnit('mysql80conn'); + end; T:=P.Targets.AddUnit('fpddodbc.pp', DatadictOSes); with T.Dependencies do begin @@ -716,6 +724,17 @@ begin AddUnit('dbconst'); end; + T:=P.Targets.AddUnit('mysql80conn.pas', SqldbConnectionOSes); + T.ResourceStrings:=true; + with T.Dependencies do + begin + AddInclude('mysqlconn.inc'); + AddUnit('bufdataset'); + AddUnit('sqldb'); + AddUnit('db'); + AddUnit('dbconst'); + end; + T:=P.Targets.AddUnit('odbcconn.pas', SqldbConnectionOSes); with T.Dependencies do begin diff --git a/packages/fcl-db/src/base/bufdataset.pas b/packages/fcl-db/src/base/bufdataset.pas index 7d59e58086..e008cd1498 100644 --- a/packages/fcl-db/src/base/bufdataset.pas +++ b/packages/fcl-db/src/base/bufdataset.pas @@ -1465,6 +1465,7 @@ var i,r : integer; iGetResult : TGetResult; pc : TRecordBuffer; + CurBufIndex: TBufDatasetIndex; begin FOpen:=False; @@ -1514,10 +1515,17 @@ begin if FAutoIncValue>-1 then FAutoIncValue:=1; if assigned(FParser) then FreeAndNil(FParser); For I:=FIndexes.Count-1 downto 0 do - if (BufIndexDefs[i].IndexType in [itDefault,itCustom]) or (BufIndexDefs[i].DiscardOnClose) then - BufIndexDefs[i].Free + begin + CurBufIndex:=BufIndexDefs[i]; + if (CurBufIndex.IndexType in [itDefault,itCustom]) or (CurBufIndex.DiscardOnClose) then + begin + if FCurrentIndexDef=CurBufIndex then + FCurrentIndexDef:=nil; + CurBufIndex.Free; + end else - FreeAndNil(BufIndexDefs[i].FBufferIndex); + FreeAndNil(CurBufIndex.FBufferIndex); + end; end; procedure TCustomBufDataset.InternalFirst; @@ -3149,16 +3157,18 @@ function TCustomBufDataset.GetIndexFieldNames: String; var i, p: integer; s: string; + IndexBuf: TBufIndex; begin Result := FIndexFieldNames; - if (CurrentIndexBuf=Nil) then + IndexBuf:=CurrentIndexBuf; + if (IndexBuf=Nil) then Exit; Result:=''; - for i := 1 to WordCount(CurrentIndexBuf.FieldsName, [Limiter]) do + for i := 1 to WordCount(IndexBuf.FieldsName, [Limiter]) do begin - s := ExtractDelimited(i, CurrentIndexBuf.FieldsName, [Limiter]); - p := Pos(s, CurrentIndexBuf.DescFields); + s := ExtractDelimited(i, IndexBuf.FieldsName, [Limiter]); + p := Pos(s, IndexBuf.DescFields); if p>0 then s := s + Desc; Result := Result + Limiter + s; diff --git a/packages/fcl-db/src/datadict/fpddmysql80.pp b/packages/fcl-db/src/datadict/fpddmysql80.pp new file mode 100644 index 0000000000..c8e2a0bbfb --- /dev/null +++ b/packages/fcl-db/src/datadict/fpddmysql80.pp @@ -0,0 +1,74 @@ +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2007 by Michael Van Canneyt, member of the + Free Pascal development team + + MySQL 8.0 Data Dictionary Engine Implementation. + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +unit fpddmysql80; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, sqldb, fpdatadict, fpddsqldb; + +Type + { TSQLDBMySql80DDEngine } + + TSQLDBMySql80DDEngine = Class(TSQLDBDDEngine) + Protected + Function CreateConnection(AConnectString : String) : TSQLConnection; override; + Public + Class function Description : string; override; + Class function DBType : String; override; + end; + +Procedure RegisterMySQL80DDEngine; +Procedure UnRegisterMySQL80DDEngine; + +implementation + +uses mysql80conn; + +Procedure RegisterMySQL80DDEngine; + +begin + RegisterDictionaryEngine(TSQLDBMySQL80DDEngine); +end; + +Procedure UnRegisterMySQL80DDEngine; + +begin + UnRegisterDictionaryEngine(TSQLDBMySQL80DDEngine); +end; + +{ TSQLDBMySql80DDEngine } + +function TSQLDBMySql80DDEngine.CreateConnection(AConnectString: String + ): TSQLConnection; +begin + Result:=mysql80conn.TMySQL80Connection.Create(Self); +end; + +class function TSQLDBMySql80DDEngine.Description: string; +begin + Result:='Mysql 8.0 connection using SQLDB'; +end; + +class function TSQLDBMySql80DDEngine.DBType: String; +begin + Result:='MySQL 8.0'; +end; + +end. + diff --git a/packages/fcl-db/src/sqldb/mysql/Makefile b/packages/fcl-db/src/sqldb/mysql/Makefile index 1cf725c068..9c57f42a79 100644 --- a/packages/fcl-db/src/sqldb/mysql/Makefile +++ b/packages/fcl-db/src/sqldb/mysql/Makefile @@ -350,628 +350,628 @@ endif override PACKAGE_NAME=fcl-db PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-db/Makefile.fpc,$(PACKAGESDIR)))))) ifeq ($(FULL_TARGET),i386-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-go32v2) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-win32) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-os2) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-beos) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-solaris) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-netware) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-wdosx) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-darwin) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-emx) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-watcom) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-netwlibc) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-wince) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-symbian) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-nativent) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-iphonesim) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-android) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-aros) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-amiga) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-atari) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-palmos) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-macosclassic) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-sinclairql) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-amiga) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-macosclassic) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-morphos) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-wii) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-aix) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc-solaris) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-haiku) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-netbsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-solaris) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-openbsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-darwin) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-win64) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-iphonesim) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-android) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-aros) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-dragonfly) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-netbsd) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-palmos) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-wince) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-gba) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-nds) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-symbian) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-android) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-aros) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-freertos) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-ios) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc64-aix) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mips-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mipsel-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mipsel-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mipsel-android) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mips64el-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),jvm-java) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),jvm-android) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i8086-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i8086-msdos) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i8086-win16) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-darwin) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-win64) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-android) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-ios) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),wasm-wasm) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc64-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),riscv32-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),riscv32-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),riscv64-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),riscv64-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),xtensa-linux) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),xtensa-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),xtensa-freertos) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),z80-embedded) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),z80-zxspectrum) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),z80-msxdos) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),z80-amstradcpc) -override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-go32v2) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-win32) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-os2) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-beos) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-solaris) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-netware) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-wdosx) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-darwin) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-emx) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-watcom) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-netwlibc) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-wince) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-symbian) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-nativent) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-iphonesim) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-android) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i386-aros) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-amiga) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-atari) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-palmos) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-macosclassic) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),m68k-sinclairql) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-amiga) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-macosclassic) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-morphos) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-wii) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc-aix) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc-solaris) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-haiku) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-netbsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-solaris) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-openbsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-darwin) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-win64) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-iphonesim) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-android) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-aros) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),x86_64-dragonfly) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-netbsd) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-palmos) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-wince) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-gba) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-nds) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-symbian) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-android) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-aros) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-freertos) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),arm-ios) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),powerpc64-aix) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mips-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mipsel-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mipsel-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mipsel-android) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),mips64el-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),jvm-java) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),jvm-android) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i8086-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i8086-msdos) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),i8086-win16) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-darwin) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-win64) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-android) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),aarch64-ios) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),wasm-wasm) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),sparc64-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),riscv32-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),riscv32-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),riscv64-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),riscv64-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),xtensa-linux) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),xtensa-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),xtensa-freertos) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),z80-embedded) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),z80-zxspectrum) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),z80-msxdos) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif ifeq ($(FULL_TARGET),z80-amstradcpc) -override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn endif override INSTALL_FPCPACKAGE=y ifeq ($(FULL_TARGET),i386-linux) diff --git a/packages/fcl-db/src/sqldb/mysql/Makefile.fpc b/packages/fcl-db/src/sqldb/mysql/Makefile.fpc index a3a3eb4792..a737049d8f 100644 --- a/packages/fcl-db/src/sqldb/mysql/Makefile.fpc +++ b/packages/fcl-db/src/sqldb/mysql/Makefile.fpc @@ -6,8 +6,8 @@ main=fcl-db [target] -units=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn -rsts=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn +units=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn +rsts=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn mysql57conn mysql80conn [require] packages=fcl-xml mysql diff --git a/packages/fcl-db/src/sqldb/mysql/mysql80conn.pas b/packages/fcl-db/src/sqldb/mysql/mysql80conn.pas new file mode 100644 index 0000000000..739f68150d --- /dev/null +++ b/packages/fcl-db/src/sqldb/mysql/mysql80conn.pas @@ -0,0 +1,12 @@ +{ + Contains the TMysqlConnection for MySQL 8.0 +} + +unit mysql80conn; + +{$DEFINE MYSQL80_UP} +{$DEFINE MYSQL80} + +{$i mysqlconn.inc} + +end. diff --git a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc index 3aff95a893..f90fd9f310 100644 --- a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc +++ b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc @@ -1,3 +1,6 @@ +{$IFDEF MYSQL80_UP} + {$DEFINE MYSQL57_UP} +{$ENDIF} {$IFDEF MYSQL57_UP} {$DEFINE MYSQL56_UP} {$ENDIF} @@ -17,6 +20,9 @@ interface uses Classes, SysUtils,bufdataset,sqldb,db,ctypes,fmtbcd, +{$IFDEF mysql80} + mysql80dyn; +{$ELSE} {$IFDEF mysql57} mysql57dyn; {$ELSE} @@ -42,9 +48,13 @@ uses {$endif} {$ENDIF} {$ENDIF} +{$ENDIF} Const MySQLVersion = +{$IFDEF mysql80} + '8.0'; +{$ELSE} {$IFDEF mysql57} '5.7'; {$ELSE} @@ -69,6 +79,7 @@ Const {$endif} {$endif} {$ENDIF} +{$ENDIF} {$ENDIF} MariaDBVersion = @@ -96,6 +107,7 @@ Type FPreparedStatement : String; // Statement with param placeholders replaced with actual values. FActualStatement : String; + FStatement : String; Row : MYSQL_ROW; Lengths : pculong; { Lengths of the columns of the current row } RowsAffected : QWord; @@ -209,6 +221,12 @@ Type end; + {$IFDEF mysql80} + TMySQL80Connection = Class(TConnectionName); + TMySQL80ConnectionDef = Class(TMySQLConnectionDef); + TMySQL80Transaction = Class(TTransactionName); + TMySQL80Cursor = Class(TCursorName); + {$ELSE} {$IFDEF mysql57} TMySQL57Connection = Class(TConnectionName); TMySQL57ConnectionDef = Class(TMySQLConnectionDef); @@ -255,6 +273,7 @@ Type {$ENDIF} {$ENDIF} {$ENDIF} + {$ENDIF} implementation @@ -264,15 +283,57 @@ uses DateUtils; const - Mysql_Option_Names : array[mysql_option] of string = ('MYSQL_OPT_CONNECT_TIMEOUT','MYSQL_OPT_COMPRESS', - 'MYSQL_OPT_NAMED_PIPE','MYSQL_INIT_COMMAND', - 'MYSQL_READ_DEFAULT_FILE','MYSQL_READ_DEFAULT_GROUP', - 'MYSQL_SET_CHARSET_DIR','MYSQL_SET_CHARSET_NAME', - 'MYSQL_OPT_LOCAL_INFILE','MYSQL_OPT_PROTOCOL', - 'MYSQL_SHARED_MEMORY_BASE_NAME','MYSQL_OPT_READ_TIMEOUT', - 'MYSQL_OPT_WRITE_TIMEOUT','MYSQL_OPT_USE_RESULT', - 'MYSQL_OPT_USE_REMOTE_CONNECTION','MYSQL_OPT_USE_EMBEDDED_CONNECTION', - 'MYSQL_OPT_GUESS_CONNECTION','MYSQL_SET_CLIENT_IP', + Mysql_Option_Names : array[mysql_option] of string = ( + 'MYSQL_OPT_CONNECT_TIMEOUT', + 'MYSQL_OPT_COMPRESS', + 'MYSQL_OPT_NAMED_PIPE', + 'MYSQL_INIT_COMMAND', + 'MYSQL_READ_DEFAULT_FILE', + 'MYSQL_READ_DEFAULT_GROUP', + 'MYSQL_SET_CHARSET_DIR', + 'MYSQL_SET_CHARSET_NAME', + 'MYSQL_OPT_LOCAL_INFILE', + 'MYSQL_OPT_PROTOCOL', + 'MYSQL_SHARED_MEMORY_BASE_NAME', + 'MYSQL_OPT_READ_TIMEOUT', + 'MYSQL_OPT_WRITE_TIMEOUT', + 'MYSQL_OPT_USE_RESULT' + {$IFDEF MYSQL80} + ,'MYSQL_REPORT_DATA_TRUNCATION', + 'MYSQL_OPT_RECONNECT', + 'MYSQL_PLUGIN_DIR', + 'MYSQL_DEFAULT_AUTH', + 'MYSQL_OPT_BIND', + 'MYSQL_OPT_SSL_KEY', + 'MYSQL_OPT_SSL_CERT', + 'MYSQL_OPT_SSL_CA', + 'MYSQL_OPT_SSL_CAPATH', + 'MYSQL_OPT_SSL_CIPHER', + 'MYSQL_OPT_SSL_CRL', + 'MYSQL_OPT_SSL_CRLPATH', + 'MYSQL_OPT_CONNECT_ATTR_RESET', + 'MYSQL_OPT_CONNECT_ATTR_ADD', + 'MYSQL_OPT_CONNECT_ATTR_DELETE', + 'MYSQL_SERVER_PUBLIC_KEY', + 'MYSQL_ENABLE_CLEARTEXT_PLUGIN', + 'MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS', + 'MYSQL_OPT_MAX_ALLOWED_PACKET', + 'MYSQL_OPT_NET_BUFFER_LENGTH', + 'MYSQL_OPT_TLS_VERSION', + 'MYSQL_OPT_SSL_MODE', + 'MYSQL_OPT_GET_SERVER_PUBLIC_KEY', + 'MYSQL_OPT_RETRY_COUNT', + 'MYSQL_OPT_OPTIONAL_RESULTSET_METADATA', + 'MYSQL_OPT_SSL_FIPS_MODE', + 'MYSQL_OPT_TLS_CIPHERSUITES', + 'MYSQL_OPT_COMPRESSION_ALGORITHMS', + 'MYSQL_OPT_ZSTD_COMPRESSION_LEVEL', + 'MYSQL_OPT_LOAD_DATA_LOCAL_DIR' + {$ELSE} + ,'MYSQL_OPT_USE_REMOTE_CONNECTION', + 'MYSQL_OPT_USE_EMBEDDED_CONNECTION', + 'MYSQL_OPT_GUESS_CONNECTION', + 'MYSQL_SET_CLIENT_IP', 'MYSQL_SECURE_AUTH' {$IFDEF MYSQL50_UP} ,'MYSQL_REPORT_DATA_TRUNCATION', 'MYSQL_OPT_RECONNECT' @@ -293,6 +354,7 @@ const {$ENDIF} {$ENDIF} {$ENDIF} +{$ENDIF} {$ENDIF} ); @@ -300,9 +362,9 @@ Resourcestring SErrServerConnectFailed = 'Server connect failed.'; SErrSetCharsetFailed = 'Failed to set connection character set: %s'; SErrDatabaseSelectFailed = 'Failed to select database: %s'; - SErrDatabaseCreate = 'Failed to create database: %s'; - SErrDatabaseDrop = 'Failed to drop database: %s'; - SErrNoData = 'No data for record'; + //SErrDatabaseCreate = 'Failed to create database: %s'; + //SErrDatabaseDrop = 'Failed to drop database: %s'; + //SErrNoData = 'No data for record'; SErrExecuting = 'Error executing query: %s'; SErrFetchingdata = 'Error fetching row data: %s'; SErrGettingResult = 'Error getting result set: %s'; @@ -547,6 +609,9 @@ end; Function TConnectionName.AllocateCursorHandle: TSQLCursor; begin + {$IFDEF mysql80} + Result:=TMySQL80Cursor.Create; + {$ELSE} {$IFDEF mysql57} Result:=TMySQL57Cursor.Create; {$ELSE} @@ -572,6 +637,7 @@ begin {$EndIf} {$ENDIF} {$ENDIF} + {$ENDIF} end; Procedure TConnectionName.DeAllocateCursorHandle(var cursor : TSQLCursor); @@ -597,7 +663,7 @@ begin if assigned(AParams) and (AParams.count > 0) then FPreparedStatement := AParams.ParseSQL(FPreparedStatement,false,sqEscapeSlash in ConnOptions, sqEscapeRepeat in ConnOptions,psSimulated,paramBinding,ParamReplaceString); FPrepared:=True; - end + end; end; procedure TConnectionName.UnPrepareStatement(cursor: TSQLCursor); @@ -743,8 +809,6 @@ begin begin if AField^.flags and AUTO_INCREMENT_FLAG <> 0 then NewType := ftAutoInc - else if AField^.flags and UNSIGNED_FLAG <> 0 then - NewType := ftLongWord else NewType := ftInteger; end; @@ -1417,6 +1481,9 @@ end; class function TMySQLConnectionDef.ConnectionClass: TSQLConnectionClass; begin + {$IFDEF mysql80} + Result:=TMySQL80Connection; + {$ELSE} {$IFDEF mysql57} Result:=TMySQL57Connection; {$ELSE} @@ -1442,6 +1509,7 @@ begin {$endif} {$ENDIF} {$ENDIF} + {$ENDIF} end; class function TMySQLConnectionDef.Description: String; @@ -1469,6 +1537,12 @@ begin Result:=MysqlLoadedLibrary; end; +{$IFDEF mysql80} + initialization + RegisterConnection(TMySQL80ConnectionDef); + finalization + UnRegisterConnection(TMySQL80ConnectionDef); +{$ELSE} {$IFDEF mysql57} initialization RegisterConnection(TMySQL57ConnectionDef); @@ -1512,7 +1586,8 @@ end; {$EndIf} {$EndIf} {$ENDIF} -{$endif} +{$ENDIF} +{$ENDIF} {$ENDIF} {$ENDIF} diff --git a/packages/fcl-db/src/sqldb/sqldb.pp b/packages/fcl-db/src/sqldb/sqldb.pp index 3118e0f545..4be0edf413 100644 --- a/packages/fcl-db/src/sqldb/sqldb.pp +++ b/packages/fcl-db/src/sqldb/sqldb.pp @@ -3137,7 +3137,7 @@ begin UpdateServerIndexDefs; FStatement.Execute; - if not Cursor.FSelectable then + if (Cursor=nil) or (not Cursor.FSelectable) then DatabaseError(SErrNoSelectStatement,Self); // InternalInitFieldDef is only called after a prepare. i.e. not twice if diff --git a/packages/fcl-db/tests/sqldbtoolsunit.pas b/packages/fcl-db/tests/sqldbtoolsunit.pas index 7392e7c95f..22bc75c744 100644 --- a/packages/fcl-db/tests/sqldbtoolsunit.pas +++ b/packages/fcl-db/tests/sqldbtoolsunit.pas @@ -7,7 +7,7 @@ interface uses Classes, SysUtils, toolsunit ,db, sqldb - ,mysql40conn, mysql41conn, mysql50conn, mysql51conn, mysql55conn, mysql56conn, mysql57conn + ,mysql40conn, mysql41conn, mysql50conn, mysql51conn, mysql55conn, mysql56conn, mysql57conn, mysql80conn ,ibconnection ,pqconnection ,odbcconn @@ -20,13 +20,13 @@ uses ; type - TSQLConnType = (mysql40,mysql41,mysql50,mysql51,mysql55,mysql56,mysql57,postgresql,interbase,odbc,oracle,sqlite3,mssql,sybase); + TSQLConnType = (mysql40,mysql41,mysql50,mysql51,mysql55,mysql56,mysql57,mysql80,postgresql,interbase,odbc,oracle,sqlite3,mssql,sybase); TSQLServerType = (ssFirebird, ssInterbase, ssMSSQL, ssMySQL, ssOracle, ssPostgreSQL, ssSQLite, ssSybase, ssUnknown); const - MySQLConnTypes = [mysql40,mysql41,mysql50,mysql51,mysql55,mysql56,mysql57]; + MySQLConnTypes = [mysql40,mysql41,mysql50,mysql51,mysql55,mysql56,mysql57,mysql80]; SQLConnTypesNames : Array [TSQLConnType] of String[19] = - ('MYSQL40','MYSQL41','MYSQL50','MYSQL51','MYSQL55','MYSQL56','MYSQL57','POSTGRESQL','INTERBASE','ODBC','ORACLE','SQLITE3','MSSQL','SYBASE'); + ('MYSQL40','MYSQL41','MYSQL50','MYSQL51','MYSQL55','MYSQL56','MYSQL57','MYSQL80','POSTGRESQL','INTERBASE','ODBC','ORACLE','SQLITE3','MSSQL','SYBASE'); STestNotApplicable = 'This test does not apply to this sqldb connection type'; @@ -150,7 +150,7 @@ const // fall back mapping (e.g. in case GetConnectionInfo(citServerType) is not implemented) SQLConnTypeToServerTypeMap : array[TSQLConnType] of TSQLServerType = - (ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssPostgreSQL,ssFirebird,ssUnknown,ssOracle,ssSQLite,ssMSSQL,ssSybase); + (ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMySQL,ssMysql,ssPostgreSQL,ssFirebird,ssUnknown,ssOracle,ssSQLite,ssMSSQL,ssSybase); function IdentifierCase(const s: string): string; @@ -183,6 +183,7 @@ begin MYSQL55: Fconnection := TMySQL55Connection.Create(nil); MYSQL56: Fconnection := TMySQL56Connection.Create(nil); MYSQL57: Fconnection := TMySQL57Connection.Create(nil); + MYSQL80: Fconnection := TMySQL80Connection.Create(nil); SQLITE3: Fconnection := TSQLite3Connection.Create(nil); POSTGRESQL: Fconnection := TPQConnection.Create(nil); INTERBASE : Fconnection := TIBConnection.Create(nil); diff --git a/packages/fcl-pdf/examples/monospacetext.pp b/packages/fcl-pdf/examples/monospacetext.pp new file mode 100644 index 0000000000..af3d5190e2 --- /dev/null +++ b/packages/fcl-pdf/examples/monospacetext.pp @@ -0,0 +1,56 @@ +program monospacetext; + +{$mode objfpc}{$H+} +{$codepage UTF8} + +uses + Classes, SysUtils, + fpPDF; + +var + PDF: TPDFDocument; + Font1, Font2, Font3, Font4: integer; +begin + if ParamCount<1 then + begin + Writeln(stderr,'Usage : monospacetext '); + Writeln(stderr,'Needed fonts : cour.ttf, arial.ttf, verdanab.ttf consola.ttf'); + Halt(1); + end; + PDF := TPDFDocument.Create(nil); + PDF.Infos.Producer := ''; + PDF.Infos.CreationDate := Now; + PDF.Options := [poPageOriginAtTop, {poNoEmbeddedFonts,} poSubsetFont, poCompressFonts, poCompressImages]; + PDF.DefaultOrientation := ppoPortrait; + PDF.DefaultPaperType := ptA4; + PDF.DefaultUnitOfMeasure := uomMillimeters; + PDF.FontDirectory := paramstr(1); + PDF.StartDocument; + PDF.Sections.AddSection; + PDF.Sections[0].AddPage(PDF.Pages.AddPage);; + + //FontIndex := PDF.AddFont('Courier'); + Font1 := PDF.AddFont('cour.ttf', 'Courier New'); + Font2 := PDF.AddFont('arial.ttf', 'Arial'); + Font3 := PDF.AddFont('verdanab.ttf', 'Verdana'); + Font4 := PDF.AddFont('consola.ttf', 'Consolas'); + PDF.Pages[0].SetFont(Font1, 10); + PDF.Pages[0].WriteText(10,10,'AEIOU-ÁÉÍÓÚ-ČŠŇŽ'); + PDF.Pages[0].WriteText(10,15,'----------------'); + + PDF.Pages[0].SetFont(Font2, 10); + PDF.Pages[0].WriteText(10,30,'AEIOU-ÁÉÍÓÚ-ČŠŇŽ'); + PDF.Pages[0].WriteText(10,35,'----------------'); + + PDF.Pages[0].SetFont(Font3, 10); + PDF.Pages[0].WriteText(10,40,'AEIOU-ÁÉÍÓÚ-ČŠŇŽ'); + PDF.Pages[0].WriteText(10,45,'----------------'); + + PDF.Pages[0].SetFont(Font4, 10); + PDF.Pages[0].WriteText(10,50,'AEIOU-ÁÉÍÓÚ-ČŠŇŽ'); + PDF.Pages[0].WriteText(10,55,'----------------'); + + PDF.SaveToFile('test.pdf'); + PDF.Free; +end. + diff --git a/packages/fcl-pdf/src/fpparsettf.pp b/packages/fcl-pdf/src/fpparsettf.pp index fc7c243b5c..9dc055fca4 100644 --- a/packages/fcl-pdf/src/fpparsettf.pp +++ b/packages/fcl-pdf/src/fpparsettf.pp @@ -822,13 +822,13 @@ begin if embed and not Embeddable then raise ETTF.Create(rsFontEmbeddingNotAllowed); PrepareEncoding(Encoding); -// MissingWidth:=ToNatural(Widths[Chars[CharCodes^[32]]].AdvanceWidth); // Char(32) - Space character - FMissingWidth := Widths[Chars[CharCodes^[32]]].AdvanceWidth; // Char(32) - Space character +// MissingWidth:=ToNatural(GetAdvanceWidth(Chars[CharCodes^[32]])); // Char(32) - Space character + FMissingWidth := GetAdvanceWidth(Chars[CharCodes^[32]]); // Char(32) - Space character for I:=0 to 255 do begin if (CharCodes^[i]>=0) and (CharCodes^[i]<=High(Chars)) - and (Widths[Chars[CharCodes^[i]]].AdvanceWidth> 0) and (CharNames^[i]<> '.notdef') then - CharWidth[I]:= ToNatural(Widths[Chars[CharCodes^[I]]].AdvanceWidth) + and (GetAdvanceWidth(Chars[CharCodes^[i]])> 0) and (CharNames^[i]<> '.notdef') then + CharWidth[I]:= ToNatural(GetAdvanceWidth(Chars[CharCodes^[I]])) else CharWidth[I]:= FMissingWidth; end; @@ -930,8 +930,19 @@ begin end; function TTFFileInfo.GetAdvanceWidth(AIndex: word): word; +var + i: SizeInt; begin - Result := Widths[AIndex].AdvanceWidth; + // There may be more glyphs than elements in the array, in which + // case the last entry is to be used. + // https://docs.microsoft.com/en-us/typography/opentype/spec/hmtx + i := Length(Widths); + if AIndex >= i then + Dec(i) + else + i := AIndex; + + Result := Widths[i].AdvanceWidth; end; function TTFFileInfo.ItalicAngle: single; @@ -972,7 +983,7 @@ function TTFFileInfo.GetMissingWidth: integer; begin if FMissingWidth = 0 then begin - FMissingWidth := Widths[Chars[CharCodes^[32]]].AdvanceWidth; // 32 is in reference to the Space character + FMissingWidth := GetAdvanceWidth(Chars[CharCodes^[32]]); // 32 is in reference to the Space character end; Result := FMissingWidth; end; diff --git a/packages/fcl-pdf/src/fpttfsubsetter.pp b/packages/fcl-pdf/src/fpttfsubsetter.pp index df8976c36a..f290a3992d 100644 --- a/packages/fcl-pdf/src/fpttfsubsetter.pp +++ b/packages/fcl-pdf/src/fpttfsubsetter.pp @@ -940,12 +940,18 @@ end; function TFontSubsetter.buildHmtxTable: TStream; var n: integer; + GID: longint; + LastGID: longint; begin Result := TMemoryStream.Create; + LastGID := Length(FFontInfo.Widths)-1; for n := 0 to FGlyphIDs.Count-1 do begin - WriteUInt16(Result, FFontInfo.Widths[FGlyphIDs[n].GID].AdvanceWidth); - WriteInt16(Result, FFontInfo.Widths[FGlyphIDs[n].GID].LSB); + GID := FGlyphIDs[n].GID; + if GID > LastGID then + GID := LastGID; + WriteUInt16(Result, FFontInfo.Widths[GID].AdvanceWidth); + WriteInt16(Result, FFontInfo.Widths[GID].LSB); end; end; diff --git a/packages/mysql/fpmake.pp b/packages/mysql/fpmake.pp index f36ee03852..0fc7d0a2cb 100644 --- a/packages/mysql/fpmake.pp +++ b/packages/mysql/fpmake.pp @@ -151,6 +151,13 @@ begin end; T.ResourceStrings := True; + T:=P.Targets.AddUnit('mysql80dyn.pp'); + with T.Dependencies do + begin + AddInclude('mysql.inc'); + end; + T.ResourceStrings := True; + P.ExamplePath.Add('examples'); P.Targets.AddExampleProgram('testdb3.pp'); P.Targets.AddExampleProgram('testdb4.pp'); diff --git a/packages/mysql/src/mysql.inc b/packages/mysql/src/mysql.inc index 94062396f0..a6febbbdbf 100644 --- a/packages/mysql/src/mysql.inc +++ b/packages/mysql/src/mysql.inc @@ -31,7 +31,9 @@ uses {$DEFINE extdecl:=cdecl} const mysqllib = 'libmysqlclient.'+sharedsuffix; - {$IF DEFINED(mysql57)} + {$IF DEFINED(mysql80)} + mysqlvlib = mysqllib+'.21'; + {$ELSEIF DEFINED(mysql57)} mysqlvlib = mysqllib+'.20'; {$ELSEIF DEFINED(mysql55) or DEFINED(mysql56)} mysqlvlib = mysqllib+'.18'; @@ -53,6 +55,10 @@ uses {$ENDIF} +{$IFDEF mysql80} + {$DEFINE mysql57} +{$ENDIF mysql80} + {$IFDEF mysql57} {$DEFINE mysql56} {$ENDIF mysql57} @@ -151,22 +157,46 @@ uses MYSQL_SERVICENAME = 'MySQL'; type - enum_server_command = (COM_SLEEP,COM_QUIT,COM_INIT_DB,COM_QUERY, - COM_FIELD_LIST,COM_CREATE_DB,COM_DROP_DB, - COM_REFRESH,COM_SHUTDOWN,COM_STATISTICS, - COM_PROCESS_INFO,COM_CONNECT,COM_PROCESS_KILL, - COM_DEBUG,COM_PING,COM_TIME,COM_DELAYED_INSERT, - COM_CHANGE_USER,COM_BINLOG_DUMP,COM_TABLE_DUMP, - COM_CONNECT_OUT,COM_REGISTER_SLAVE, + enum_server_command = ( + COM_SLEEP, + COM_QUIT, + COM_INIT_DB, + COM_QUERY, + COM_FIELD_LIST, + COM_CREATE_DB, + COM_DROP_DB, + COM_REFRESH, + COM_SHUTDOWN, // deprecated + COM_STATISTICS, + COM_PROCESS_INFO, + COM_CONNECT, + COM_PROCESS_KILL, + COM_DEBUG, + COM_PING, + COM_TIME, + COM_DELAYED_INSERT, + COM_CHANGE_USER, + COM_BINLOG_DUMP, + COM_TABLE_DUMP, + COM_CONNECT_OUT, + COM_REGISTER_SLAVE, {$IFDEF mysql50} - COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE, - COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, + COM_STMT_PREPARE, + COM_STMT_EXECUTE, + COM_STMT_SEND_LONG_DATA, + COM_STMT_CLOSE, + COM_STMT_RESET, + COM_SET_OPTION, + COM_STMT_FETCH, {$IFDEF mysql51} COM_DAEMON, {$IFDEF mysql56} COM_BINLOG_DUMP_GTID, {$IFDEF mysql57} COM_RESET_CONNECTION, + {$IFDEF mysql80} + COM_CLONE, + {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} @@ -236,6 +266,11 @@ uses FIELD_IS_DROPPED = (1 shl 26); // Intern: Field is being dropped {$IFDEF mysql57} EXPLICIT_NULL_FLAG = (1 shl 27); // Field is explicitly specified as NULL by the user + {$IFDEF mysql80} + FIELD_IS_MARKED = (1 shl 28); // Intern: field is marked, general purpose + NOT_SECONDARY_FLAG = (1 << 29); // Field will not be loaded in secondary engine. + FIELD_IS_INVISIBLE = (1 << 30); // Field is explicitly marked as invisible by the user. + {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} @@ -247,7 +282,8 @@ uses REFRESH_HOSTS = 8; // Flush host cache REFRESH_STATUS = 16; // Flush status variables REFRESH_THREADS = 32; // Flush thread cache - REFRESH_SLAVE = 64; // Reset master info and restart slave thread + REFRESH_REPLICA = 64; // Reset master info and restart replica thread + REFRESH_SLAVE = REFRESH_REPLICA; // Reset master info and restart slave thread REFRESH_MASTER = 128; // Remove all bin logs in the index and truncate the index REFRESH_ERROR_LOG = 256; // Rotate only the erorr log REFRESH_ENGINE_LOG = 512; // Flush all storage engine logs @@ -259,13 +295,19 @@ uses { The following can't be set with mysql_refresh() } REFRESH_READ_LOCK = 16384; // Lock tables for read REFRESH_FAST = 32768; // Intern flag + + {$IFNDEF mysql80} REFRESH_QUERY_CACHE = 65536; // RESET (remove all queries) from query cache REFRESH_QUERY_CACHE_FREE = $20000; // pack query cache - REFRESH_DES_KEY_FILE = $40000; + {$ENDIF} + REFRESH_USER_RESOURCES = $80000; REFRESH_FOR_EXPORT = $100000; // FLUSH TABLES ... FOR EXPORT REFRESH_OPTIMIZER_COSTS = $200000; // FLUSH OPTIMIZER_COSTS + {$IFDEF mysql80} + REFRESH_PERSIST = $400000; // RESET PERSIST + {$ENDIF} CLIENT_LONG_PASSWORD = 1; // new more secure passwords CLIENT_FOUND_ROWS = 2; // Found instead of affected rows @@ -292,6 +334,11 @@ uses CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS : cardinal = (1 shl 22); // Don't close the connection for a connection with expired password. CLIENT_SESSION_TRACK : cardinal = (1 shl 23); // Capable of handling server state change information. Its a hint to the server to include the state change information in Ok packet. CLIENT_DEPRECATE_EOF : cardinal = (1 shl 24); // Client no longer needs EOF packet + {$IFDEF mysql80} + CLIENT_OPTIONAL_RESULTSET_METADATA : cardinal = (1 shl 25); // client can handle optional metadata information in the resultset + CLIENT_ZSTD_COMPRESSION_ALGORITHM : cardinal = (1 shl 26); // Client sets this flag when it is configured to use zstd compression method + CLIENT_QUERY_ATTRIBUTES : cardinal = (1 shl 27); // Can send the optional part containing the query parameter set(s) + {$ENDIF} CLIENT_SSL_VERIFY_SERVER_CERT : cardinal = 1 shl 30; CLIENT_REMEMBER_OPTIONS : cardinal = 1 shl 31; @@ -384,17 +431,17 @@ uses return_status: pcuint; reading_or_writing: cuchar; save_char: cchar; - unused1: my_bool; // Please remove with the next incompatible ABI change - unused2: my_bool; // Please remove with the next incompatible ABI change + unused1: my_bool; // Please remove with the next incompatible ABI change + unused2: my_bool; // Please remove with the next incompatible ABI change compress: my_bool; - unused3: my_bool; // Please remove with the next incompatible ABI change + unused3: my_bool; // Please remove with the next incompatible ABI change { Pointer to query object in query cache, do not equal NULL (0) for queries in cache that have not stored its results yet } - unused: pcuchar; + unused: pcuchar; last_errno: cuint; error: cuchar; - unused4: my_bool; // Please remove with the next incompatible ABI change - unused5: my_bool; // Please remove with the next incompatible ABI change + unused4: my_bool; // Please remove with the next incompatible ABI change + unused5: my_bool; // Please remove with the next incompatible ABI change { Client library error message buffer. Actually belongs to struct MYSQL. } last_error: array[0..MYSQL_ERRMSG_SIZE-1] of cchar; { Client library sqlstate buffer. Set along with the error message. } @@ -462,25 +509,44 @@ uses packet_error : culong = culong(not(0)); type - enum_field_types = (MYSQL_TYPE_DECIMAL,MYSQL_TYPE_TINY, - MYSQL_TYPE_SHORT,MYSQL_TYPE_LONG,MYSQL_TYPE_FLOAT, - MYSQL_TYPE_DOUBLE,MYSQL_TYPE_NULL, - MYSQL_TYPE_TIMESTAMP,MYSQL_TYPE_LONGLONG, - MYSQL_TYPE_INT24,MYSQL_TYPE_DATE,MYSQL_TYPE_TIME, - MYSQL_TYPE_DATETIME,MYSQL_TYPE_YEAR, + enum_field_types = ( + MYSQL_TYPE_DECIMAL, + MYSQL_TYPE_TINY, + MYSQL_TYPE_SHORT, + MYSQL_TYPE_LONG, + MYSQL_TYPE_FLOAT, + MYSQL_TYPE_DOUBLE, + MYSQL_TYPE_NULL, + MYSQL_TYPE_TIMESTAMP, + MYSQL_TYPE_LONGLONG, + MYSQL_TYPE_INT24, + MYSQL_TYPE_DATE, + MYSQL_TYPE_TIME, + MYSQL_TYPE_DATETIME, + MYSQL_TYPE_YEAR, MYSQL_TYPE_NEWDATE, {$IFDEF mysql50} MYSQL_TYPE_VARCHAR, MYSQL_TYPE_BIT, {$IFDEF mysql56} MYSQL_TYPE_TIMESTAMP2, MYSQL_TYPE_DATETIME2, MYSQL_TYPE_TIME2, + {$IFDEF mysql80} + MYSQL_TYPE_TYPED_ARRAY, // Used for replication only + MYSQL_TYPE_INVALID := 243, + MYSQL_TYPE_BOOL := 244, // Currently just a placeholder + MYSQL_TYPE_JSON := 245, + {$ENDIF} {$ENDIF} MYSQL_TYPE_NEWDECIMAL := 246, {$ENDIF} MYSQL_TYPE_ENUM := 247, - MYSQL_TYPE_SET := 248,MYSQL_TYPE_TINY_BLOB := 249, - MYSQL_TYPE_MEDIUM_BLOB := 250,MYSQL_TYPE_LONG_BLOB := 251, - MYSQL_TYPE_BLOB := 252,MYSQL_TYPE_VAR_STRING := 253, - MYSQL_TYPE_STRING := 254,MYSQL_TYPE_GEOMETRY := 255 + MYSQL_TYPE_SET := 248, + MYSQL_TYPE_TINY_BLOB := 249, + MYSQL_TYPE_MEDIUM_BLOB := 250, + MYSQL_TYPE_LONG_BLOB := 251, + MYSQL_TYPE_BLOB := 252, + MYSQL_TYPE_VAR_STRING := 253, + MYSQL_TYPE_STRING := 254, + MYSQL_TYPE_GEOMETRY := 255 ); { For backward compatibility } @@ -907,15 +973,57 @@ uses MYSQL_DATA = st_mysql_data; PMYSQL_DATA = ^MYSQL_DATA; - mysql_option = (MYSQL_OPT_CONNECT_TIMEOUT,MYSQL_OPT_COMPRESS, - MYSQL_OPT_NAMED_PIPE,MYSQL_INIT_COMMAND, - MYSQL_READ_DEFAULT_FILE,MYSQL_READ_DEFAULT_GROUP, - MYSQL_SET_CHARSET_DIR,MYSQL_SET_CHARSET_NAME, - MYSQL_OPT_LOCAL_INFILE,MYSQL_OPT_PROTOCOL, - MYSQL_SHARED_MEMORY_BASE_NAME,MYSQL_OPT_READ_TIMEOUT, - MYSQL_OPT_WRITE_TIMEOUT,MYSQL_OPT_USE_RESULT, - MYSQL_OPT_USE_REMOTE_CONNECTION,MYSQL_OPT_USE_EMBEDDED_CONNECTION, - MYSQL_OPT_GUESS_CONNECTION,MYSQL_SET_CLIENT_IP, + mysql_option = ( + MYSQL_OPT_CONNECT_TIMEOUT, + MYSQL_OPT_COMPRESS, + MYSQL_OPT_NAMED_PIPE, + MYSQL_INIT_COMMAND, + MYSQL_READ_DEFAULT_FILE, + MYSQL_READ_DEFAULT_GROUP, + MYSQL_SET_CHARSET_DIR, + MYSQL_SET_CHARSET_NAME, + MYSQL_OPT_LOCAL_INFILE, + MYSQL_OPT_PROTOCOL, + MYSQL_SHARED_MEMORY_BASE_NAME, + MYSQL_OPT_READ_TIMEOUT, + MYSQL_OPT_WRITE_TIMEOUT, + MYSQL_OPT_USE_RESULT, + {$IFDEF MYSQL80} + MYSQL_REPORT_DATA_TRUNCATION, + MYSQL_OPT_RECONNECT, + MYSQL_PLUGIN_DIR, + MYSQL_DEFAULT_AUTH, + MYSQL_OPT_BIND, + MYSQL_OPT_SSL_KEY, + MYSQL_OPT_SSL_CERT, + MYSQL_OPT_SSL_CA, + MYSQL_OPT_SSL_CAPATH, + MYSQL_OPT_SSL_CIPHER, + MYSQL_OPT_SSL_CRL, + MYSQL_OPT_SSL_CRLPATH, + MYSQL_OPT_CONNECT_ATTR_RESET, + MYSQL_OPT_CONNECT_ATTR_ADD, + MYSQL_OPT_CONNECT_ATTR_DELETE, + MYSQL_SERVER_PUBLIC_KEY, + MYSQL_ENABLE_CLEARTEXT_PLUGIN, + MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, + MYSQL_OPT_MAX_ALLOWED_PACKET, + MYSQL_OPT_NET_BUFFER_LENGTH, + MYSQL_OPT_TLS_VERSION, + MYSQL_OPT_SSL_MODE, + MYSQL_OPT_GET_SERVER_PUBLIC_KEY, + MYSQL_OPT_RETRY_COUNT, + MYSQL_OPT_OPTIONAL_RESULTSET_METADATA, + MYSQL_OPT_SSL_FIPS_MODE, + MYSQL_OPT_TLS_CIPHERSUITES, + MYSQL_OPT_COMPRESSION_ALGORITHMS, + MYSQL_OPT_ZSTD_COMPRESSION_LEVEL, + MYSQL_OPT_LOAD_DATA_LOCAL_DIR + {$ELSE} + MYSQL_OPT_USE_REMOTE_CONNECTION, + MYSQL_OPT_USE_EMBEDDED_CONNECTION, + MYSQL_OPT_GUESS_CONNECTION, + MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH {$IFDEF MYSQL50} ,MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT @@ -936,6 +1044,7 @@ uses {$ENDIF} {$ENDIF} {$ENDIF} +{$ENDIF} {$ENDIF} ); @@ -1000,6 +1109,19 @@ uses shared_memory_base_name : Pchar; {$ENDIF} max_allowed_packet : culong; +{$IFDEF Mysql80} + compress : my_bool; + named_pipe : my_bool; + bind_address: Pchar; + report_data_truncation: my_bool; + { function pointers for local infile support } + local_infile_init : function (_para1:Ppointer; _para2:Pchar; _para3:pointer):cint;cdecl; + local_infile_read : function (_para1:pointer; _para2:Pchar; _para3:cuint):cint; + local_infile_end : procedure (_para1:pointer); + local_infile_error : function (_para1:pointer; _para2:Pchar; _para3:cuint):cint; + local_infile_userdata : pointer; + extension : ^st_mysql_options_extention; +{$ELSE} use_ssl : my_bool; // if to use SSL or not compress : my_bool; named_pipe : my_bool; @@ -1043,6 +1165,7 @@ uses {$IFDEF mysql51} extension : ^st_mysql_options_extention; {$ENDIF} +{$ENDIF} {$ENDIF} end; @@ -1144,6 +1267,8 @@ uses free_me : my_bool; // If free in mysql_close reconnect : my_bool; // set to 1 if automatic reconnect scramble : array[0..(SCRAMBLE_LENGTH+1)-1] of char; // session-wide random string +{$IFDEF mysql80} +{$ELSE} { Set if this is the original connection, not a master or a slave we have added though mysql_rpl_probe() or mysql_set_master()/ mysql_add_slave() } rpl_pivot : my_bool; @@ -1153,6 +1278,7 @@ uses next_slave : Pst_mysql; last_used_slave : Pst_mysql; // needed for round-robin slave pick last_used_con : Pst_mysql; // needed for send/read/store/use result to work correctly with replication +{$ENDIF} {$IFDEF mysql41} stmts : Pointer; // was PList, list of all statements methods : Pst_mysql_methods; @@ -2099,3 +2225,4 @@ end; initialization Refcount := 0; {$ENDIF} +end. diff --git a/packages/mysql/src/mysql80dyn.pp b/packages/mysql/src/mysql80dyn.pp new file mode 100644 index 0000000000..754435f2f3 --- /dev/null +++ b/packages/mysql/src/mysql80dyn.pp @@ -0,0 +1,12 @@ +{ + Contains the MySQL calls for MySQL 8.0 +} + +unit mysql80dyn; + +{$DEFINE LinkDynamically} +{$DEFINE MYSQL80} + +{$i mysql.inc} + +end.