# BUG: component\_percona\_udf Does Not Register Any UDFs on Percona Server 8.4.7‑7 (EL9)

**URL:** <https://forums.percona.com/t/bug-component-percona-udf-does-not-register-any-udfs-on-percona-server-8-4-7-7-el9/40305>\
**Category:** Percona Server for MySQL 8.0\
**Tags:** bugs\
**Created:** [February 27, 2026, 3:29pm UTC](https://forums.percona.com/t/bug-component-percona-udf-does-not-register-any-udfs-on-percona-server-8-4-7-7-el9/40305 "2026-02-27T15:29:19Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![mikepalmergee](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/mikepalmergee/32/23315_2.png) [@mikepalmergee](https://forums.percona.com/u/mikepalmergee)\
**Post date:** [February 27, 2026, 3:29pm UTC](https://forums.percona.com/t/bug-component-percona-udf-does-not-register-any-udfs-on-percona-server-8-4-7-7-el9/40305/1 "2026-02-27T15:29:19Z")

</div>

# **BUG: `component_percona_udf` Does Not Register Any UDFs on Percona Server 8.4.7‑7 (EL9)**

### Missing `component_udf_registration` Component in EL9 Packaging

I believe I’ve encountered a **packaging bug** in Percona Server for MySQL **8.4.7‑7** on **EL9** (Oracle).

The `component_percona_udf` component installs _metadata_ correctly, but **never loads** , **never registers UDFs** , and writes **no error log entries**.  
The root cause appears to be that the required dependency component **`component_udf_registration` is not included** in the EL9 packages.

Below are full details.

* * *

## **Environment**

- **OS:** Oracle Linux 9 (EL9 family)

- **Server version:**

- **Installed RPMs:**

* * *

## **Summary of the issue**

Running:

SQL

INSTALL COMPONENT ‘file://component\_percona\_udf’;

Show more lines

adds an entry to `mysql.component`, but:

- **No UDFs appear in `mysql.func`**

- **No attempts to load the `.so` file appear in `mysqld.log`**

- **The required dependency component `component_udf_registration` is missing entirely**

This results in the UDF component being registered but **never initialised**.

* * *

## **Steps to reproduce**

1. Confirm the UDF component exists on disk:

```auto
/usr/lib64/mysql/plugin/component_percona_udf.so

```

1. Install the component:

`INSTALL COMPONENT 'file://component_percona_udf';`

1. Check components:

```auto
SELECT component_id, component_group_id, component_urn
FROM mysql.component
ORDER BY component_group_id, component_id;

```

**Actual output:**

```auto
file://component_validate_password
file://component_percona_telemetry
file://component_percona_udf

```

**Expected:**

Also include:

```auto
file://component_udf_registration

```

1. Check UDFs:

`SELECT * FROM mysql.func;`

**Actual:**  
Empty set.

1. Check error log:

```auto
grep -i percona_udf /var/log/mysqld.log

```

**Actual:**  
No output at all — indicating the component loader never attempted to load the `.so`.

* * *

## **Expected behaviour**

Percona documentation says:

> “Once the installation is complete, execute  
> `INSTALL COMPONENT 'file://component_percona_udf'`  
> to install these functions.”  
> (Percona Toolkit UDFs page) [[docs.percona.com]](https://docs.percona.com/percona-server/8.4/udf-percona-toolkit.html)

And the 8.4 component migration guide says:

> “After running INSTALL COMPONENT, all functions are automatically registered.”  
> (Upgrade from plugins to components) [[docs.percona.com]](https://docs.percona.com/percona-server/8.4/upgrade-components.html)

Therefore:

- The UDF component should load

- Functions should automatically register in `mysql.func`

- The error log should show component load activity

* * *

## **Actual behaviour**

- Component metadata is inserted

- **The component never loads**

- **UDFs never register**

- **No errors or warnings are logged**

- `component_udf_registration` is completely absent from the EL9 packages

* * *

## **Analysis**

Based on behaviour and package contents, this appears to be a **packaging omission** :

- `component_percona_udf.so` **is** shipped

- But **`component_udf_registration.so` is not shipped** in any of the Percona Server EL9 packages

Since `component_percona_udf` depends on the registration service, the component remains inert.

This silent failure matches what happens when a dependency component is missing: MySQL does not attempt to load the dependent `.so` and therefore logs nothing.

* * *

## **Impact**

- Percona Toolkit UDFs (e.g., fnv1a\_64, murmur\_hash, uuid\_to\_bin) cannot be used

- Tools that rely on these functions cannot operate

- No diagnostics are logged, making this difficult to troubleshoot

- Server behaviour contradicts the documentation

* * *

## **Request**

Please confirm whether:

1. `component_udf_registration.so` is unintentionally missing from the EL9 build, and

2. Whether this is a packaging bug that needs correction in future releases.

If the omission is intentional, please update documentation to reflect the dependency and how to install the missing component.

Happy to provide logs, package listings, component tables, directory listings if needed.

Thanks!

---

<div class="post-metadata">

**Author:** ![anderson.nogueira](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/anderson.nogueira/32/23141_2.png) [@anderson.nogueira](https://forums.percona.com/u/anderson.nogueira)\
**Post date:** [March 1, 2026, 9:09pm UTC](https://forums.percona.com/t/bug-component-percona-udf-does-not-register-any-udfs-on-percona-server-8-4-7-7-el9/40305/2 "2026-03-01T21:09:52Z")

</div>

Welcome to Percona Forum @mikepalmergee, and thanks for the detailed bug report.

I tested this on Percona Server 8.4.7-7 (Docker, EL9) and the component registers all three UDFs correctly. The key detail is that component-registered UDFs do not appear in `mysql.func`. That table only stores legacy UDFs created with `CREATE FUNCTION ... SONAME`. Component UDFs appear in `performance_schema.user_defined_functions` instead. This is standard MySQL 8.x component behavior, not a packaging issue.

Can you run this and share the output?

```sql
SELECT * FROM performance_schema.user_defined_functions
WHERE UDF_NAME IN ('fnv_64','fnv1a_64','murmur_hash');

```

On my test instance this returns all three functions with `UDF_LIBRARY = NULL` (meaning they’re provided by a component, not a standalone `.so`). You should also be able to call them directly:

```sql
SELECT fnv_64('test'), fnv1a_64('test'), murmur_hash('test');

```

Regarding `component_udf_registration`, this is not a separate `.so` file. The `udf_registration` service is built into `mysqld` itself (defined in `sql/server_component/server_component.cc`). When a component like `component_percona_udf` declares `REQUIRES_SERVICE(udf_registration)`, it binds to the server’s built-in implementation at load time. There is nothing missing from the packages.

If the query above returns empty, the most likely cause is an upgrade from PS 8.0. In 8.0, these same hash functions were delivered as standalone plugins (`libfnv_udf.so`, `libfnv1a_udf.so`, `libmurmur_udf.so`) and registered via `CREATE FUNCTION ... SONAME`. If those entries still exist in `mysql.func`, the server loads them into its internal hash table at startup, and when the component tries to register the same names, it fails silently due to a name collision. This is tracked in [PS-10326](https://perconadev.atlassian.net/browse/PS-10326).

**Fix for the upgrade scenario:**

```sql
-- Remove stale legacy UDFs from mysql.func
DROP FUNCTION IF EXISTS fnv_64;
DROP FUNCTION IF EXISTS fnv1a_64;
DROP FUNCTION IF EXISTS murmur_hash;

-- Reinstall the component
UNINSTALL COMPONENT 'file://component_percona_udf';
INSTALL COMPONENT 'file://component_percona_udf';

-- Verify in the correct table
SELECT * FROM performance_schema.user_defined_functions
WHERE UDF_NAME IN ('fnv_64','fnv1a_64','murmur_hash');

```

Was this a fresh install of PS 8.4.7, or an upgrade from an earlier version (8.0, 8.1)?

References:

- [Percona Toolkit UDFs docs](https://docs.percona.com/percona-server/8.4/udf-percona-toolkit.html)
- [PS 8.1.0-1 release notes](https://docs.percona.com/percona-server/innovation-release/release-notes/8.1.0-1.html) (UDF-to-component migration)
