[MDEV-28051] Error on compiling of libmariadb/plugins/compress/c_zstd.c Created: 2022-03-13  Updated: 2022-03-16  Resolved: 2022-03-16

Status: Closed
Project: MariaDB Server
Component/s: libmariadb
Affects Version/s: None
Fix Version/s: 10.8.3

Type: Bug Priority: Blocker
Reporter: Dmitry Shulga Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: None


 Description   

server-10.8/libmariadb/plugins/compress/c_zstd.c:37:28: error: redefinition of typedef 'ZSTD_CCtx' is a C11 feature [-Werror,-Wtypedef-redefinition]
typedef struct ZSTD_CCtx_s ZSTD_CCtx;
                           ^
/usr/local/include/zstd.h:200:28: note: previous definition is here
typedef struct ZSTD_CCtx_s ZSTD_CCtx;
                           ^
server-10.8/libmariadb/plugins/compress/c_zstd.c:38:28: error: redefinition of typedef 'ZSTD_DCtx' is a C11 feature [-Werror,-Wtypedef-redefinition]
typedef struct ZSTD_DCtx_s ZSTD_DCtx;
                           ^
/usr/local/include/zstd.h:223:28: note: previous definition is here
typedef struct ZSTD_DCtx_s ZSTD_DCtx;
                           ^
2 errors generated.

Running make with the option VERBOSE=1 shows that compiler is invoked with the option -std=gnu99 that is the reason of the above compilation failure.



 Comments   
Comment by Marko Mäkelä [ 2022-03-14 ]

For some reason, I am unable to compile libmariadb with Zstd compression when building MariaDB Server 10.8. I am also unable to repeat this when configuring and building Connector/C directly.

On a quick look, the following should fix this:

diff --git a/plugins/compress/c_zstd.c b/plugins/compress/c_zstd.c
index e50898e..9a725f7 100644
--- a/plugins/compress/c_zstd.c
+++ b/plugins/compress/c_zstd.c
@@ -34,9 +34,6 @@
 #define ZSTD_CLEVEL_DEFAULT 3
 #endif
 
-typedef struct ZSTD_CCtx_s ZSTD_CCtx;
-typedef struct ZSTD_DCtx_s ZSTD_DCtx;
-
 static void ma_free_ctx(ma_compress_ctx *ctx)
 {
   if (ctx)

After those lines, there are no references to any of those data type names. The data members compress_ctx and decompress_ctx of the anonymous struct that the type alias ma_compress_ctx refers to are of type void*. So, I think that the above patch should fix this.

georg, as the maintainer of the component, please fix this.

Comment by Marko Mäkelä [ 2022-03-16 ]

shulga confirmed that my fix works. I fixed it in Connector/C 3.3 and updated the submodule in MariaDB Server 10.8 and 10.9.

Generated at Thu Feb 08 09:57:40 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.