mariadb: Update to the latest version 10.9.3
Update to the latest upstream version. For more details, see: https://mariadb.com/kb/en/changes-improvements-in-mariadb-109/ Added new dependency on libfmt. Following two patches dropped as the issues were fixed in upstream. * 130-c11_atomics.patch * 140-mips-connect-unaligned.patch The rest of the patches were refreshed. Don't need to disable cassandra and tokudb anymore as they were dropped from upstream tarball. Signed-off-by: Michal Hrusecky <michal@hrusecky.net>
This commit is contained in:
parent
52570d4242
commit
6328e3e9fe
8 changed files with 14 additions and 335 deletions
|
@ -9,13 +9,13 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mariadb
|
||||
PKG_VERSION:=10.6.4
|
||||
PKG_VERSION:=10.9.3
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL := https://archive.mariadb.org/$(PKG_NAME)-$(PKG_VERSION)/source
|
||||
|
||||
PKG_HASH:=75bf9b147a95d38160d01a73b098d50a1960563b46d16a235971fff64d99643c
|
||||
PKG_HASH:=9a1e229972fcccc8270e633f68d3fb824da151dcf4f53da1df8d947aca876bee
|
||||
PKG_MAINTAINER:=Michal Hrusecky <Michal@Hrusecky.net>
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
PKG_LICENSE_FILES:=COPYING THIRDPARTY
|
||||
|
@ -35,14 +35,12 @@ SHARE_DIR:=/usr/share/mariadb
|
|||
MARIADB_SOCKET=/var/run/mysql/mysql.sock
|
||||
|
||||
MARIADB_DISABLE_ENGINES := \
|
||||
cassandra \
|
||||
columnstore \
|
||||
example \
|
||||
mroonga \
|
||||
oqgraph \
|
||||
rocksdb \
|
||||
test_sql_discovery \
|
||||
tokudb
|
||||
test_sql_discovery
|
||||
|
||||
MARIADB_DISABLE_PLUGINS := \
|
||||
audit_null \
|
||||
|
@ -171,6 +169,7 @@ include $(INCLUDE_DIR)/cmake.mk
|
|||
MARIADB_COMMON_DEPENDS := \
|
||||
$(ICONV_DEPENDS) \
|
||||
+libatomic \
|
||||
+libfmt \
|
||||
+libopenssl \
|
||||
+libstdcpp \
|
||||
+zlib
|
||||
|
@ -368,6 +367,7 @@ CMAKE_OPTIONS += \
|
|||
-DWITH_INNODB_SNAPPY=OFF \
|
||||
-DWITH_JEMALLOC=OFF \
|
||||
-DWITH_LIBARCHIVE=OFF \
|
||||
-DWITH_LIBFMT=system \
|
||||
-DWITH_LIBWRAP=OFF \
|
||||
-DWITH_MARIABACKUP=ON \
|
||||
-DWITH_NUMA=OFF \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/scripts/mysql_install_db.sh
|
||||
+++ b/scripts/mysql_install_db.sh
|
||||
@@ -419,7 +419,7 @@ fi
|
||||
@@ -437,7 +437,7 @@ fi
|
||||
|
||||
|
||||
# Try to determine the hostname
|
||||
|
|
|
@ -1,64 +0,0 @@
|
|||
Author: Vicențiu Ciorbaru <vicentiu@mariadb.org>
|
||||
Date: Fri Dec 21 19:14:04 2018 +0200
|
||||
|
||||
Link with libatomic to enable C11 atomics support
|
||||
|
||||
Some architectures (mips) require libatomic to support proper
|
||||
atomic operations. Check first if support is available without
|
||||
linking, otherwise use the library.
|
||||
|
||||
--- a/configure.cmake
|
||||
+++ b/configure.cmake
|
||||
@@ -866,7 +866,25 @@ int main()
|
||||
long long int *ptr= &var;
|
||||
return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
|
||||
}"
|
||||
-HAVE_GCC_C11_ATOMICS)
|
||||
+HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
|
||||
+IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
|
||||
+ SET(HAVE_GCC_C11_ATOMICS True)
|
||||
+ELSE()
|
||||
+ SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
|
||||
+ LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
|
||||
+ CHECK_CXX_SOURCE_COMPILES("
|
||||
+ int main()
|
||||
+ {
|
||||
+ long long int var= 1;
|
||||
+ long long int *ptr= &var;
|
||||
+ return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
|
||||
+ }"
|
||||
+ HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
|
||||
+ IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
|
||||
+ SET(HAVE_GCC_C11_ATOMICS True)
|
||||
+ ENDIF()
|
||||
+ SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
|
||||
+ENDIF()
|
||||
|
||||
IF(WITH_VALGRIND)
|
||||
SET(HAVE_valgrind 1)
|
||||
--- a/mysys/CMakeLists.txt
|
||||
+++ b/mysys/CMakeLists.txt
|
||||
@@ -168,6 +168,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings
|
||||
${LIBNSL} ${LIBM} ${LIBRT} ${CMAKE_DL_LIBS} ${LIBSOCKET} ${LIBEXECINFO})
|
||||
DTRACE_INSTRUMENT(mysys)
|
||||
|
||||
+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
|
||||
+ TARGET_LINK_LIBRARIES(mysys atomic)
|
||||
+ENDIF()
|
||||
+
|
||||
IF(HAVE_BFD_H)
|
||||
TARGET_LINK_LIBRARIES(mysys bfd)
|
||||
ENDIF(HAVE_BFD_H)
|
||||
--- a/sql/CMakeLists.txt
|
||||
+++ b/sql/CMakeLists.txt
|
||||
@@ -324,6 +324,10 @@ IF(WITH_MYSQLD_LDFLAGS)
|
||||
"${MYSQLD_LINK_FLAGS} ${WITH_MYSQLD_LDFLAGS}")
|
||||
ENDIF()
|
||||
|
||||
+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
|
||||
+ TARGET_LINK_LIBRARIES(sql atomic)
|
||||
+ENDIF()
|
||||
+
|
||||
|
||||
FIND_PACKAGE(BISON 2.0)
|
||||
|
|
@ -1,257 +0,0 @@
|
|||
From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
|
||||
Date: Thu, 10 Aug 2017 20:40:28 +0200
|
||||
Subject: mips-connect-unaligned
|
||||
|
||||
---
|
||||
storage/connect/valblk.cpp | 41 ++++++++++++++++++-------------------
|
||||
storage/connect/valblk.h | 51 +++++++++++++++++++++++++++++-----------------
|
||||
2 files changed, 52 insertions(+), 40 deletions(-)
|
||||
|
||||
--- a/storage/connect/valblk.cpp
|
||||
+++ b/storage/connect/valblk.cpp
|
||||
@@ -268,14 +268,14 @@ bool TYPBLK<TYPE>::Init(PGLOBAL g, bool
|
||||
template <class TYPE>
|
||||
char *TYPBLK<TYPE>::GetCharString(char *p, int n)
|
||||
{
|
||||
- sprintf(p, Fmt, Typp[n]);
|
||||
+ sprintf(p, Fmt, UnalignedRead(n));
|
||||
return p;
|
||||
} // end of GetCharString
|
||||
|
||||
template <>
|
||||
char *TYPBLK<double>::GetCharString(char *p, int n)
|
||||
{
|
||||
- sprintf(p, Fmt, Prec, Typp[n]);
|
||||
+ sprintf(p, Fmt, Prec, UnalignedRead(n));
|
||||
return p;
|
||||
} // end of GetCharString
|
||||
|
||||
@@ -291,7 +291,7 @@ void TYPBLK<TYPE>::SetValue(PVAL valp, i
|
||||
ChkTyp(valp);
|
||||
|
||||
if (!(b = valp->IsNull()))
|
||||
- Typp[n] = GetTypedValue(valp);
|
||||
+ UnalignedWrite(n, GetTypedValue(valp));
|
||||
else
|
||||
Reset(n);
|
||||
|
||||
@@ -353,9 +353,9 @@ void TYPBLK<TYPE>::SetValue(PCSZ p, int
|
||||
ulonglong val = CharToNumber(p, strlen(p), maxval, Unsigned, &minus);
|
||||
|
||||
if (minus && val < maxval)
|
||||
- Typp[n] = (TYPE)(-(signed)val);
|
||||
+ UnalignedWrite(n, (TYPE)(-(signed)val));
|
||||
else
|
||||
- Typp[n] = (TYPE)val;
|
||||
+ UnalignedWrite(n, (TYPE)val);
|
||||
|
||||
SetNull(n, false);
|
||||
} // end of SetValue
|
||||
@@ -398,7 +398,7 @@ void TYPBLK<double>::SetValue(PCSZ p, in
|
||||
throw Type;
|
||||
} // endif Check
|
||||
|
||||
- Typp[n] = atof(p);
|
||||
+ UnalignedWrite(n, atof(p));
|
||||
SetNull(n, false);
|
||||
} // end of SetValue
|
||||
|
||||
@@ -430,7 +430,7 @@ void TYPBLK<TYPE>::SetValue(PVBLK pv, in
|
||||
ChkTyp(pv);
|
||||
|
||||
if (!(b = pv->IsNull(n2) && Nullable))
|
||||
- Typp[n1] = GetTypedValue(pv, n2);
|
||||
+ UnalignedWrite(n1, GetTypedValue(pv, n2));
|
||||
else
|
||||
Reset(n1);
|
||||
|
||||
@@ -481,10 +481,10 @@ void TYPBLK<TYPE>::SetMin(PVAL valp, int
|
||||
{
|
||||
CheckParms(valp, n)
|
||||
TYPE tval = GetTypedValue(valp);
|
||||
- TYPE& tmin = Typp[n];
|
||||
+ TYPE tmin = UnalignedRead(n);
|
||||
|
||||
if (tval < tmin)
|
||||
- tmin = tval;
|
||||
+ UnalignedWrite(n, tval);
|
||||
|
||||
} // end of SetMin
|
||||
|
||||
@@ -496,10 +496,10 @@ void TYPBLK<TYPE>::SetMax(PVAL valp, int
|
||||
{
|
||||
CheckParms(valp, n)
|
||||
TYPE tval = GetTypedValue(valp);
|
||||
- TYPE& tmin = Typp[n];
|
||||
+ TYPE tmin = UnalignedRead(n);
|
||||
|
||||
if (tval > tmin)
|
||||
- tmin = tval;
|
||||
+ UnalignedWrite(n, tval);
|
||||
|
||||
} // end of SetMax
|
||||
|
||||
@@ -513,8 +513,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
|
||||
CheckType(pv)
|
||||
TYPE *lp = ((TYPBLK*)pv)->Typp;
|
||||
|
||||
- for (int i = k; i < n; i++) // TODO
|
||||
- Typp[i] = lp[i];
|
||||
+ memcpy(Typp + k, lp + k, sizeof(TYPE) * n);
|
||||
|
||||
} // end of SetValues
|
||||
#endif // 0
|
||||
@@ -525,7 +524,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
|
||||
template <class TYPE>
|
||||
void TYPBLK<TYPE>::Move(int i, int j)
|
||||
{
|
||||
- Typp[j] = Typp[i];
|
||||
+ UnalignedWrite(j, UnalignedRead(i));
|
||||
MoveNull(i, j);
|
||||
} // end of Move
|
||||
|
||||
@@ -539,7 +538,7 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
|
||||
ChkIndx(n);
|
||||
ChkTyp(vp);
|
||||
#endif // _DEBUG
|
||||
- TYPE mlv = Typp[n];
|
||||
+ TYPE mlv = UnalignedRead(n);
|
||||
TYPE vlv = GetTypedValue(vp);
|
||||
|
||||
return (vlv > mlv) ? 1 : (vlv < mlv) ? (-1) : 0;
|
||||
@@ -551,8 +550,8 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
|
||||
template <class TYPE>
|
||||
int TYPBLK<TYPE>::CompVal(int i1, int i2)
|
||||
{
|
||||
- TYPE lv1 = Typp[i1];
|
||||
- TYPE lv2 = Typp[i2];
|
||||
+ TYPE lv1 = UnalignedRead(i1);
|
||||
+ TYPE lv2 = UnalignedRead(i2);
|
||||
|
||||
return (lv1 > lv2) ? 1 : (lv1 < lv2) ? (-1) : 0;
|
||||
} // end of CompVal
|
||||
@@ -589,7 +588,7 @@ int TYPBLK<TYPE>::Find(PVAL vp)
|
||||
TYPE n = GetTypedValue(vp);
|
||||
|
||||
for (i = 0; i < Nval; i++)
|
||||
- if (n == Typp[i])
|
||||
+ if (n == UnalignedRead(i))
|
||||
break;
|
||||
|
||||
return (i < Nval) ? i : (-1);
|
||||
@@ -605,7 +604,7 @@ int TYPBLK<TYPE>::GetMaxLength(void)
|
||||
int i, n, m;
|
||||
|
||||
for (i = n = 0; i < Nval; i++) {
|
||||
- m = sprintf(buf, Fmt, Typp[i]);
|
||||
+ m = sprintf(buf, Fmt, UnalignedRead(i));
|
||||
n = MY_MAX(n, m);
|
||||
} // endfor i
|
||||
|
||||
@@ -1335,7 +1334,7 @@ char *DATBLK::GetCharString(char *p, int
|
||||
char *vp;
|
||||
|
||||
if (Dvalp) {
|
||||
- Dvalp->SetValue(Typp[n]);
|
||||
+ Dvalp->SetValue(UnalignedRead(n));
|
||||
vp = Dvalp->GetCharString(p);
|
||||
} else
|
||||
vp = TYPBLK<int>::GetCharString(p, n);
|
||||
@@ -1351,7 +1350,7 @@ void DATBLK::SetValue(PCSZ p, int n)
|
||||
if (Dvalp) {
|
||||
// Decode the string according to format
|
||||
Dvalp->SetValue_psz(p);
|
||||
- Typp[n] = Dvalp->GetIntValue();
|
||||
+ UnalignedWrite(n, Dvalp->GetIntValue());
|
||||
} else
|
||||
TYPBLK<int>::SetValue(p, n);
|
||||
|
||||
--- a/storage/connect/valblk.h
|
||||
+++ b/storage/connect/valblk.h
|
||||
@@ -139,6 +139,7 @@ class VALBLK : public BLOCK {
|
||||
int Prec; // Precision of float values
|
||||
}; // end of class VALBLK
|
||||
|
||||
+
|
||||
/***********************************************************************/
|
||||
/* Class TYPBLK: represents a block of typed values. */
|
||||
/***********************************************************************/
|
||||
@@ -151,40 +152,41 @@ class TYPBLK : public VALBLK {
|
||||
// Implementation
|
||||
virtual bool Init(PGLOBAL g, bool check);
|
||||
virtual int GetVlen(void) {return sizeof(TYPE);}
|
||||
- virtual char GetTinyValue(int n) {return (char)Typp[n];}
|
||||
- virtual uchar GetUTinyValue(int n) {return (uchar)Typp[n];}
|
||||
- virtual short GetShortValue(int n) {return (short)Typp[n];}
|
||||
- virtual ushort GetUShortValue(int n) {return (ushort)Typp[n];}
|
||||
- virtual int GetIntValue(int n) {return (int)Typp[n];}
|
||||
- virtual uint GetUIntValue(int n) {return (uint)Typp[n];}
|
||||
- virtual longlong GetBigintValue(int n) {return (longlong)Typp[n];}
|
||||
- virtual ulonglong GetUBigintValue(int n) {return (ulonglong)Typp[n];}
|
||||
- virtual double GetFloatValue(int n) {return (double)Typp[n];}
|
||||
+
|
||||
+ virtual char GetTinyValue(int n) {return (char)UnalignedRead(n);}
|
||||
+ virtual uchar GetUTinyValue(int n) {return (uchar)UnalignedRead(n);}
|
||||
+ virtual short GetShortValue(int n) {return (short)UnalignedRead(n);}
|
||||
+ virtual ushort GetUShortValue(int n) {return (ushort)UnalignedRead(n);}
|
||||
+ virtual int GetIntValue(int n) {return (int)UnalignedRead(n);}
|
||||
+ virtual uint GetUIntValue(int n) {return (uint)UnalignedRead(n);}
|
||||
+ virtual longlong GetBigintValue(int n) {return (longlong)UnalignedRead(n);}
|
||||
+ virtual ulonglong GetUBigintValue(int n) {return (ulonglong)UnalignedRead(n);}
|
||||
+ virtual double GetFloatValue(int n) {return (double)UnalignedRead(n);}
|
||||
virtual char *GetCharString(char *p, int n);
|
||||
- virtual void Reset(int n) {Typp[n] = 0;}
|
||||
+ virtual void Reset(int n) {UnalignedWrite(n, 0);}
|
||||
|
||||
// Methods
|
||||
using VALBLK::SetValue;
|
||||
virtual void SetValue(PCSZ sp, int n);
|
||||
virtual void SetValue(const char *sp, uint len, int n);
|
||||
virtual void SetValue(short sval, int n)
|
||||
- {Typp[n] = (TYPE)sval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
|
||||
virtual void SetValue(ushort sval, int n)
|
||||
- {Typp[n] = (TYPE)sval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
|
||||
virtual void SetValue(int lval, int n)
|
||||
- {Typp[n] = (TYPE)lval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
|
||||
virtual void SetValue(uint lval, int n)
|
||||
- {Typp[n] = (TYPE)lval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
|
||||
virtual void SetValue(longlong lval, int n)
|
||||
- {Typp[n] = (TYPE)lval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
|
||||
virtual void SetValue(ulonglong lval, int n)
|
||||
- {Typp[n] = (TYPE)lval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
|
||||
virtual void SetValue(double fval, int n)
|
||||
- {Typp[n] = (TYPE)fval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)fval); SetNull(n, false);}
|
||||
virtual void SetValue(char cval, int n)
|
||||
- {Typp[n] = (TYPE)cval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
|
||||
virtual void SetValue(uchar cval, int n)
|
||||
- {Typp[n] = (TYPE)cval; SetNull(n, false);}
|
||||
+ {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
|
||||
virtual void SetValue(PVAL valp, int n);
|
||||
virtual void SetValue(PVBLK pv, int n1, int n2);
|
||||
virtual void SetMin(PVAL valp, int n);
|
||||
@@ -206,6 +208,17 @@ class TYPBLK : public VALBLK {
|
||||
// Members
|
||||
TYPE* const &Typp;
|
||||
const char *Fmt;
|
||||
+
|
||||
+ // Unaligned access
|
||||
+ TYPE UnalignedRead(int n) const {
|
||||
+ TYPE result;
|
||||
+ memcpy(&result, Typp + n, sizeof(TYPE));
|
||||
+ return result;
|
||||
+ }
|
||||
+
|
||||
+ void UnalignedWrite(int n, TYPE value) {
|
||||
+ memcpy(Typp + n, &value, sizeof(TYPE));
|
||||
+ }
|
||||
}; // end of class TYPBLK
|
||||
|
||||
/***********************************************************************/
|
|
@ -1,6 +1,6 @@
|
|||
--- a/scripts/mysql_install_db.sh
|
||||
+++ b/scripts/mysql_install_db.sh
|
||||
@@ -358,6 +358,14 @@ then
|
||||
@@ -369,6 +369,14 @@ then
|
||||
exit 1
|
||||
fi
|
||||
plugindir=`find_in_dirs --dir auth_pam.so $basedir/lib*/plugin $basedir/lib*/mysql/plugin $basedir/lib/*/mariadb19/plugin`
|
||||
|
@ -15,7 +15,7 @@
|
|||
pamtooldir=$plugindir
|
||||
# relative from where the script was run for a relocatable install
|
||||
elif test -n "$dirname0" -a -x "$rel_mysqld" -a ! "$rel_mysqld" -ef "@sbindir@/mariadbd"
|
||||
@@ -478,7 +486,9 @@ do
|
||||
@@ -501,7 +509,9 @@ do
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
|||
then
|
||||
if test -z "$srcdir" -a "$in_rpm" -eq 0
|
||||
then
|
||||
@@ -499,6 +509,10 @@ then
|
||||
@@ -522,6 +532,10 @@ then
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/scripts/mysqld_safe.sh
|
||||
+++ b/scripts/mysqld_safe.sh
|
||||
@@ -246,7 +246,7 @@ wsrep_recover_position() {
|
||||
@@ -247,7 +247,7 @@ wsrep_recover_position() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
|||
|
||||
local wr_options="--disable-log-error --pid-file='$wr_pidfile'"
|
||||
|
||||
@@ -667,7 +667,7 @@ then
|
||||
@@ -669,7 +669,7 @@ then
|
||||
* ) err_log="$DATADIR/$err_log" ;;
|
||||
esac
|
||||
else
|
||||
|
@ -18,7 +18,7 @@
|
|||
fi
|
||||
fi
|
||||
|
||||
@@ -746,7 +746,7 @@ fi
|
||||
@@ -755,7 +755,7 @@ fi
|
||||
|
||||
if test -z "$pid_file"
|
||||
then
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/support-files/CMakeLists.txt
|
||||
+++ b/support-files/CMakeLists.txt
|
||||
@@ -61,7 +61,7 @@ IF(UNIX AND NOT WITHOUT_SERVER)
|
||||
@@ -62,7 +62,7 @@ IF(UNIX AND NOT WITHOUT_SERVER)
|
||||
INSTALL(FILES magic DESTINATION ${inst_location} COMPONENT SupportFiles)
|
||||
INSTALL(DIRECTORY policy DESTINATION ${inst_location} COMPONENT SupportFiles)
|
||||
FIND_PROGRAM(CHECKMODULE checkmodule)
|
||||
|
|
|
@ -18,4 +18,4 @@
|
|||
-# error "my_checksum() is defined in mysys/crc32/crc32_ppc64.c"
|
||||
#endif
|
||||
extern "C"
|
||||
unsigned int my_checksum(unsigned int crc, const void *data, size_t len)
|
||||
uint32 my_checksum(uint32 crc, const void *data, size_t len)
|
||||
|
|
Loading…
Reference in a new issue