diff options
Diffstat (limited to 'packages/fcl-db/src/sqldb/mysql')
-rw-r--r-- | packages/fcl-db/src/sqldb/mysql/Makefile | 94 | ||||
-rw-r--r-- | packages/fcl-db/src/sqldb/mysql/fpmake.inc | 2 | ||||
-rw-r--r-- | packages/fcl-db/src/sqldb/mysql/mysqlconn.inc | 38 |
3 files changed, 115 insertions, 19 deletions
diff --git a/packages/fcl-db/src/sqldb/mysql/Makefile b/packages/fcl-db/src/sqldb/mysql/Makefile index 75dab6bce8..300e713dab 100644 --- a/packages/fcl-db/src/sqldb/mysql/Makefile +++ b/packages/fcl-db/src/sqldb/mysql/Makefile @@ -1,9 +1,9 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-02-06 rev 26692] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213] # default: all -MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-android jvm-java jvm-android i8086-msdos -BSDs = freebsd netbsd openbsd darwin +MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos +BSDs = freebsd netbsd openbsd darwin dragonfly UNIXs = linux $(BSDs) solaris qnx haiku aix LIMIT83fs = go32v2 os2 emx watcom msdos OSNeedsComspecToRunBatch = go32v2 watcom @@ -184,6 +184,12 @@ $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t endif override FPCOPT+=-Cp$(SUBARCH) endif +ifeq ($(FULL_TARGET),mipsel-embedded) +ifeq ($(SUBARCH),) +$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined) +endif +override FPCOPT+=-Cp$(SUBARCH) +endif ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -390,6 +396,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -477,6 +486,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -531,6 +543,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_UNITS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -612,6 +627,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),i386-aros) +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),m68k-linux) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -699,6 +717,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),arm-linux) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -753,6 +774,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn +endif ifeq ($(FULL_TARGET),mipsel-android) override TARGET_RSTS+=mysql40conn mysql41conn mysql50conn mysql51conn mysql55conn mysql56conn endif @@ -835,6 +859,9 @@ endif ifeq ($(FULL_TARGET),i386-android) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),i386-aros) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),m68k-linux) override COMPILER_OPTIONS+=-S2 endif @@ -922,6 +949,9 @@ endif ifeq ($(FULL_TARGET),x86_64-embedded) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),arm-linux) override COMPILER_OPTIONS+=-S2 endif @@ -976,6 +1006,9 @@ endif ifeq ($(FULL_TARGET),mipsel-linux) override COMPILER_OPTIONS+=-S2 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +override COMPILER_OPTIONS+=-S2 +endif ifeq ($(FULL_TARGET),mipsel-android) override COMPILER_OPTIONS+=-S2 endif @@ -1230,6 +1263,12 @@ EXEEXT= HASSHAREDLIB=1 SHORTSUFFIX=lnx endif +ifeq ($(OS_TARGET),dragonfly) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=df +endif ifeq ($(OS_TARGET),freebsd) BATCHEXT=.sh EXEEXT= @@ -1275,6 +1314,11 @@ EXEEXT= SHAREDLIBEXT=.library SHORTSUFFIX=amg endif +ifeq ($(OS_TARGET),aros) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=aros +endif ifeq ($(OS_TARGET),morphos) EXEEXT= SHAREDLIBEXT=.library @@ -1857,6 +1901,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_MYSQL=1 endif +ifeq ($(FULL_TARGET),i386-aros) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_MYSQL=1 +endif ifeq ($(FULL_TARGET),m68k-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2147,6 +2201,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_MYSQL=1 endif +ifeq ($(FULL_TARGET),x86_64-dragonfly) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_MYSQL=1 +endif ifeq ($(FULL_TARGET),arm-linux) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2327,6 +2391,16 @@ REQUIRE_PACKAGES_FPMKUNIT=1 REQUIRE_PACKAGES_FCL-XML=1 REQUIRE_PACKAGES_MYSQL=1 endif +ifeq ($(FULL_TARGET),mipsel-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_PASZLIB=1 +REQUIRE_PACKAGES_FCL-PROCESS=1 +REQUIRE_PACKAGES_HASH=1 +REQUIRE_PACKAGES_LIBTAR=1 +REQUIRE_PACKAGES_FPMKUNIT=1 +REQUIRE_PACKAGES_FCL-XML=1 +REQUIRE_PACKAGES_MYSQL=1 +endif ifeq ($(FULL_TARGET),mipsel-android) REQUIRE_PACKAGES_RTL=1 REQUIRE_PACKAGES_PASZLIB=1 @@ -2784,7 +2858,7 @@ endif ifdef CREATESHARED override FPCOPT+=-Cg endif -ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),) +ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),) ifeq ($(CPU_TARGET),x86_64) override FPCOPT+=-Cg endif @@ -2814,17 +2888,23 @@ ifdef ACROSSCOMPILE override FPCOPT+=$(CROSSOPT) endif override COMPILER:=$(strip $(FPC) $(FPCOPT)) -ifeq (,$(findstring -s ,$(COMPILER))) +ifneq (,$(findstring -sh ,$(COMPILER))) +UseEXECPPAS=1 +endif +ifneq (,$(findstring -s ,$(COMPILER))) +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +UseEXECPPAS=1 +endif +endif +ifneq ($(UseEXECPPAS),1) EXECPPAS= else -ifeq ($(FULL_SOURCE),$(FULL_TARGET)) ifdef RUNBATCH EXECPPAS:=@$(RUNBATCH) $(PPAS) else EXECPPAS:=@$(PPAS) endif endif -endif .PHONY: fpc_units ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) override ALLTARGET+=fpc_units diff --git a/packages/fcl-db/src/sqldb/mysql/fpmake.inc b/packages/fcl-db/src/sqldb/mysql/fpmake.inc index 50fcd03c85..87491373c9 100644 --- a/packages/fcl-db/src/sqldb/mysql/fpmake.inc +++ b/packages/fcl-db/src/sqldb/mysql/fpmake.inc @@ -6,4 +6,4 @@ Targets.ResetDefaults; Targets.DefaultDir:='db/sqldb/mysql'; { Drivers only for the following OSes } -Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,darwin,linux,haiku]; +Targets.DefaultOS:=[win32,openbsd,netbsd,freebsd,darwin,linux,haiku,dragonfly]; diff --git a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc index 648227e822..49839fbd0a 100644 --- a/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc +++ b/packages/fcl-db/src/sqldb/mysql/mysqlconn.inc @@ -59,6 +59,12 @@ Const {$endif} {$endif} {$ENDIF} + MariaDBVersion = +{$IFDEF mysql56} // MariaDB 10.0 is compatible with MySQL 5.6 + '10.0'; +{$ELSE} // MariaDB 5.1..5.5 presumably report the same version number as MySQL + MySQLVersion; +{$ENDIF} Type TTransactionName = Class(TSQLHandle) @@ -93,11 +99,11 @@ Type procedure ExecuteDirectMySQL(const query : string); function EscapeString(const Str : string) : string; protected - function StrToStatementType(s : string) : TStatementType; override; Procedure ConnectToServer; virtual; Procedure SelectDatabase; virtual; function MySQLDataType(AField: PMYSQL_FIELD; var NewType: TFieldType; var NewSize: Integer): Boolean; function MySQLWriteData(AField: PMYSQL_FIELD; FieldDef: TFieldDef; Source, Dest: PChar; Len: integer; out CreateBlob : boolean): Boolean; + // SQLConnection methods procedure DoInternalConnect; override; procedure DoInternalDisconnect; override; @@ -110,6 +116,7 @@ Type Procedure DeAllocateCursorHandle(var cursor : TSQLCursor); override; Function AllocateTransactionHandle : TSQLHandle; override; + function StrToStatementType(s : string) : TStatementType; override; procedure PrepareStatement(cursor: TSQLCursor;ATransaction : TSQLTransaction;buf : string; AParams : TParams); override; procedure UnPrepareStatement(cursor:TSQLCursor); override; procedure FreeFldBuffers(cursor : TSQLCursor); override; @@ -127,6 +134,7 @@ Type function GetSchemaInfoSQL(SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; override; procedure UpdateIndexDefs(IndexDefs : TIndexDefs;TableName : string); override; function RowsAffected(cursor: TSQLCursor): TRowsCount; override; + function RefreshLastInsertID(Query : TCustomSQLQuery; Field : TField): Boolean; override; Public constructor Create(AOwner : TComponent); override; procedure GetFieldNames(const TableName : string; List : TStrings); override; @@ -323,7 +331,7 @@ begin Result := mysql_stat(FMYSQL); end; -function TConnectionName.GetInsertID: Int64; +Function TConnectionName.GetInsertID: int64; begin CheckConnected; Result:=mysql_insert_id(GetHandle); @@ -398,14 +406,14 @@ begin end; -procedure TConnectionName.ConnectToServer; +Procedure TConnectionName.ConnectToServer; begin ConnectMySQL(FMySQL); FServerInfo := strpas(mysql_get_server_info(FMYSQL)); FHostInfo := strpas(mysql_get_host_info(FMYSQL)); end; -procedure TConnectionName.SelectDatabase; +Procedure TConnectionName.SelectDatabase; begin if mysql_select_db(FMySQL,pchar(DatabaseName))<>0 then MySQLError(FMySQL,SErrDatabaseSelectFailed,Self); @@ -459,13 +467,15 @@ end; procedure TConnectionName.DoInternalConnect; var - FullVersion, - ClientVerStr: string; + FullVersion: string; begin InitialiseMysql; Fullversion:=strpas(mysql_get_client_info()); - ClientVerStr := copy(FullVersion,1,3); - If (ClientVerStr<>MySQLVersion) then + // Version string should start with version number: + // Note: in case of MariaDB version mismatch: tough luck, we report MySQL + // version only. + if (pos(MySQLVersion, Fullversion) <> 1) and + (pos(MariaDBVersion, Fullversion) <> 1) then Raise EInOutError.CreateFmt(SErrVersionMisMatch,[ClassName,MySQLVersion,FullVersion]); inherited DoInternalConnect; ConnectToServer; @@ -485,7 +495,7 @@ begin Result:=FMySQL; end; -function TConnectionName.AllocateCursorHandle: TSQLCursor; +Function TConnectionName.AllocateCursorHandle: TSQLCursor; begin {$IFDEF mysql56} Result:=TMySQL56Cursor.Create; @@ -516,7 +526,7 @@ begin FreeAndNil(cursor); end; -function TConnectionName.AllocateTransactionHandle: TSQLHandle; +Function TConnectionName.AllocateTransactionHandle: TSQLHandle; begin // Result:=TTransactionName.Create; Result := nil; @@ -1110,11 +1120,17 @@ begin Result := -1; end; +function TConnectionName.RefreshLastInsertID(Query: TCustomSQLQuery; Field: TField): Boolean; +begin + Field.AsLargeInt:=GetInsertID; + Result := True; +end; + constructor TConnectionName.Create(AOwner: TComponent); const SingleBackQoutes: TQuoteChars = ('`','`'); begin inherited Create(AOwner); - FConnOptions := FConnOptions + [sqEscapeRepeat] + [sqEscapeSlash]; + FConnOptions := [sqEscapeRepeat, sqEscapeSlash, sqImplicitTransaction, sqLastInsertID]; FieldNameQuoteChars:=SingleBackQoutes; FMySQL := Nil; end; |