Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extension status toward v1.2.0 #259

Open
carlopi opened this issue Jan 9, 2025 · 3 comments
Open

Extension status toward v1.2.0 #259

carlopi opened this issue Jan 9, 2025 · 3 comments

Comments

@carlopi
Copy link
Collaborator

carlopi commented Jan 9, 2025

Opening this issue to track status of community extensions moving towards release v1.2.0, that will happen later this month.

Current status looks great to me, many extensions are already compatible with both versions and require no changes, some are having problem in selected platforms (possible way forward is disable them) and others are incompatible with current duckdb main branch.

Relevant changes in platforms

  • platform windows_amd64_rtools has been renamed windows_amd64_mingw
  • platform linux_amd64_musl platform has been added (might be disabled via excluded_platforms: linux_amd64_musl if not workable)
  • vcpkg commit has been bumped, this means dependencies might have changed
  • many DuckDB PRs, some breaking APIs your extension might have been using
  • CAPI extensions are now stable, API version v1.2.0 (Bump Extension C API to stable duckdb#14992)

Recommended path forward

If extension works already, great. No required action.

If there are problems in selected platforms, consider skipping them via excluded_platforms: "platform_name".
_musl problems connected to rust toolchains most likely require a general fix. We might consider disabling unsupported platforms automatically.

If there are incompatibilities due to duckdb source code changes, provide a ref_next in the extension descriptor, see https://duckdb.org/community_extensions/development#how-to-maintain-an-extension-through-duckdb-releases.
On changing a descriptor for an extension CI is run both for latest stable release (v1.1.3) and for current main.
You could use that to double check the status of your extension.

Note that extensions that on release day compile and tests successfully will be automatically available to users on duckdb updates.
This is a plus / nice to have, but NOT a requirement.
Extensions that can't be built on the release hash will be made available as soon as successful update of the extension descriptor.
Note that after v1.2.0 lands, extensions will stop to receive updates for v1.1.3, and v1.2.0 will be considered the latest stable release.

Thanks everyone.

Please do open issues to duckdb/community-extensions or discuss at https://discord.duckdb.org, looking forward to improve this.

Help is also welcome, especially if you want to help fellow or new extension developers.

One area that could use more love if for example improving the documentation on how to develop extensions.
That's hosted at https://duckdb.org/community_extensions/development, feel free to send improvements to the files in the community_extensions folder to duckdb/duckdb-web.


Current status as of 10 January 2025

CI run: https://github.com/duckdb/community-extensions/actions/runs/12685119358/job/35355040692

name status
avro
bigquery TableFunction ToString API change, see PR
capi_quack move hardcoded CAPI version to v1.2.0, see duckdb/extension-template-c#4
chsql
chsql_native move hardcoded CAPI version to v1.2.0, see duckdb/extension-template-c#4
cronjob
crypto
datasketches ✅ (fixed via ref_next in #266)
duckpgq build error on Musl + needs bump duckdb submodule
evalexpr_rhai ✅ (#267)
faiss musl build problem for dependency, Windows build problem at https://github.com/duckdb/community-extensions/actions/runs/12685119358/job/35355057084#step:18:1155
flockmtl
fuzzycomplete
gheets
h3
hostfs
httpclient
httpserver
lindel
magic
open_prompt
pivot_table
prql
psql
pyroscope move hardcoded CAPI version to v1.2.0, see duckdb/extension-template-c#4
quack
rusty_quack move hardcoded CAPI version to v1.2.0, possibly musl problem also
scrooge remove hardcode on httpfs, see example fix here
sheetreader
shellfs ✅ (fixed via ref_next in #265)
tarfs build problem connected to FileHandle API change
tsid
ulid
webmacro

Except of some build problems (most likely due to changes in APIs duckdb-side)

bigquery

https://github.com/duckdb/community-extensions/actions/runs/12685119358/job/35355064200#step:17:10024

/duckdb_build_dir/src/bigquery_scan.cpp:367:17: error: invalid conversion from 'std::__cxx11::string (*)(const duckdb::FunctionData*) {aka std::__cxx11::basic_string<char> (*)(const duckdb::FunctionData*)}' to 'duckdb::table_function_to_string_t {aka duckdb::InsertionOrderPreservingMap<std::__cxx11::basic_string<char> > (*)(duckdb::TableFunctionToStringInput&)}' [-fpermissive]
     to_string = BigqueryToString;
                 ^~~~~~~~~~~~~~~~
/duckdb_build_dir/src/bigquery_scan.cpp: In constructor 'duckdb::bigquery::BigqueryQueryFunction::BigqueryQueryFunction()':
/duckdb_build_dir/src/bigquery_scan.cpp:385:17: error: invalid conversion from 'std::__cxx11::string (*)(const duckdb::FunctionData*) {aka std::__cxx11::basic_string<char> (*)(const duckdb::FunctionData*)}' to 'duckdb::table_function_to_string_t {aka duckdb::InsertionOrderPreservingMap<std::__cxx11::basic_string<char> > (*)(duckdb::TableFunctionToStringInput&)}' [-fpermissive]
     to_string = BigqueryToString;
                 ^~~~~~~~~~~~~~~~

datasketches

https://github.com/duckdb/community-extensions/actions/runs/12685119358/job/35354989255#step:17:2113

/duckdb_build_dir/duckdb/src/include/duckdb/function/aggregate_function.hpp:236:87:   required from 'static duckdb::AggregateFunction duckdb::AggregateFunction::UnaryAggregateDestructor(duckdb::LogicalType, duckdb::LogicalType) [with STATE = duckdb_datasketches::DSCPCState; INPUT_TYPE = signed char; RESULT_TYPE = duckdb::string_t; OP = duckdb_datasketches::DSCPCCreateOperation<duckdb_datasketches::DSCPCBindData>; duckdb::AggregateDestructorType destructor_type = duckdb::AggregateDestructorType::STANDARD]'
  236 |                 auto aggregate = UnaryAggregate<STATE, INPUT_TYPE, RESULT_TYPE, OP, destructor_type>(input_type, return_type);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/duckdb_build_dir/src/generated.cpp:4541:121:   required from 'duckdb::AggregateFunction duckdb_datasketches::DSCPCCreateAggregate(const duckdb::LogicalType&, const duckdb::LogicalType&) [with T = signed char]'
 4541 |         return AggregateFunction::UnaryAggregateDestructor<DSCPCState, T, string_t, DSCPCCreateOperation<DSCPCBindData>>(
      |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
 4542 |             type, result_type);
      |             ~~~~~~~~~~~~~~~~~~                                                                                           
/duckdb_build_dir/src/generated.cpp:4618:56:   required from here
 4618 |                 auto fun = DSCPCCreateAggregate<int8_t>(LogicalType::TINYINT, sketch_type);
      |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/duckdb_build_dir/duckdb/src/include/duckdb/function/aggregate_function.hpp:263:82: error: static assertion failed: Aggregate state must be trivially move constructible
  263 |                 static_assert(std::is_trivially_move_constructible<STATE>::value ||
      |                                                                            ~~~~~~^~
  264 |                                   destructor_type == AggregateDestructorType::LEGACY,
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

duckpgq

https://github.com/duckdb/community-extensions/actions/runs/12685119358/job/35354998020

In file included from /duckdb_build_dir/duckdb/third_party/libpg_query/include/pg_definitions.hpp:8,
                 from /duckdb_build_dir/duckdb/third_party/libpg_query/include/pg_functions.hpp:8,
                 from third_party/libpg_query/grammar/grammar.hpp:44:
third_party/libpg_query/grammar/statements/pgq.y: In function 'int duckdb_libpgquery::base_yyparse(core_yyscan_t)':
third_party/libpg_query/grammar/statements/pgq.y:573:74: error: cannot convert 'std::nullptr_t' to 'int' in assignment
ninja: subcommand failed
make: *** [extension-ci-tools/makefiles/duckdb_extension.Makefile:72: release] Error 1

scrooge

https://github.com/duckdb/community-extensions/actions/runs/12685119358/job/35355040043#step:17:311

  "/Users/runner/work/community-extensions/community-extensions/duckdb/extension/httpfs"
  which is not an existing directory.

shellfs

https://github.com/duckdb/community-extensions/actions/runs/12685119358/job/35355028445

   39 |  ShellFileHandle(FileSystem &file_system, string path, FILE *pipe) : FileHandle(file_system, std::move(path)), pipe(pipe) {
      |                                                                                                                         ^
In file included from /duckdb_build_dir/src/shell_file_system.hpp:3,
                 from /duckdb_build_dir/src/shell_file_system.cpp:1:
/duckdb_build_dir/duckdb/src/include/duckdb/common/file_system.hpp:56:13: note: candidate: ‘duckdb::FileHandle::FileHandle(duckdb::FileSystem&, std::string, duckdb::FileOpenFlags)’
   56 |  DUCKDB_API FileHandle(FileSystem &file_system, string path, FileOpenFlags flags);
      |             ^~~~~~~~~~
@rustyconover
Copy link
Contributor

@carlopi thanks for doing this!

@carlopi
Copy link
Collaborator Author

carlopi commented Jan 10, 2025

@rustyconover, great, adapted the table to after your PRs.

@carlopi
Copy link
Collaborator Author

carlopi commented Jan 10, 2025

@lmangani, @queryproc, @Dtenwolde, @isaacbrodsky, @ywelsch, @hannes, @archiewood, @hafenkran, @JAicewizard, @pdet, @gropaul, @Alex-Monahan, @Maxxen, @freddie-freeloader

This issue might be relevant to have a look.

Basically, we are are doing some preparatory work for v1.2.0, above some checks we performed on current status and some of the major changes / how to get ready.

Thanks a lot!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants