CREATE EXTENSION.
Extension availability
Extensions marked Always enabled are part of Neki’s managed configuration and cannot be toggled. Other extensions can use either of these workflows:- A checkbox enables server configuration that the extension needs, such as a preload setting. Changing it creates a configuration-profile change.
- An extension without a checkbox does not require a profile-level toggle. You
install it in a logical database with
CREATE EXTENSIONwhen it is available.
CREATE EXTENSION
installs objects in the logical database to which you are connected.
Enable an extension for a profile
You must have permission to update the database, and the branch must be ready.1
From the PlanetScale dashboard, select your Neki database and branch.
2
Open Clusters and select the configuration profile used by the target shards.
3
Select the Extensions tab.
4
Enable the extension. If the extension exposes parameters, review and update them.
5
Select Apply now for any parameter changes.
6
Open Changes and wait for the configuration change to finish before using the extension.
pscale branch config-profile extensions. Enable or disable a catalog
extension that the profile marks as enablable with
pscale branch config-profile extensions enable or
pscale branch config-profile extensions disable.
Install an extension in a logical database
After any required profile change has completed, connect to the target logical database with its default role. When the extension’s instructions require database installation, run:extension_name with the extension you want to install. Repeat
the command for each logical database that needs the extension.
To see extensions that are installed in the current logical database:
Supported extensions
Always enabled
These extensions are part of Neki’s managed configuration and cannot be disabled.Customer-configurable
Extension-specific caveats
Neki can use an extension without implementing every function, cast, or cross-shard query shape that Postgres accepts on a single node. Prefer the working forms below. A rejected shape often returnsNK013 for an
unimplemented input, receive, or user-defined function.
pgvector
Install pgvector after you enable it on the configuration profile:vector, halfvec, sparsevec, and binary
vectors, including HNSW and IVFFlat indexes. Tenant-scoped and shard-targeted
searches work. Cross-shard search works when the distance expression is
projected once and the global sort references that projected value:
<=>), inner product (<#>), L1,
halfvec, sparsevec, Hamming, and Jaccard distance.
Repeating the distance expression in ORDER BY fails on sharded Neki:
- A prepared parameter declared as
vectorfails withNK013becausevector_inis not implemented. Declare the parameter astextand cast$1::vectorinside the query. ARRAY[...]::vectorandARRAY[...]::vector(8)are rejected. Use a vector literal such as'[1,0,0]'::vector.l2_norm(embedding)is rejected as ambiguous even when the column type isvector.- Global
avg(vector)andsum(vector)fail on sharded tables withvector_recv. Tenant-scoped and direct-shard aggregates work. - Routed
INSERT ... SELECTof vector values can hit the samevector_recvlimit. Insert vector literals, or load rows with a query that stays on one shard. - IVFFlat recall is poor at the default
ivfflat.probes=1. Raiseprobeswhen you need higher recall. HNSW recall depends onhnsw.ef_search.
vectorscale
vectorscale adds StreamingDiskANN indexes on top of pgvector. Installvector first, then:
ORDER BY distance shape. The pgvector
parameter-binding, literal-cast, and vector_recv limits also apply, including
routed INSERT ... SELECT of vector values.
After vectorscale is enabled, the Extensions tab exposes these DiskANN query parameters:
Change extension parameters
Parameters associated with an extension appear beneath it after the extension is enabled. Their valid values, defaults, and restart requirements are shown in the dashboard. Updating them creates the same kind of configuration-profile change as other configuration parameters.Disable or remove an extension
Disabling a profile-level extension setting does not runDROP EXTENSION and
does not remove database objects from logical databases. Before disabling it,
remove or migrate any database objects and application features that depend on
it according to that extension’s instructions.
DROP EXTENSION is a separate Postgres operation and can remove dependent
objects. Review the objects that depend on an extension before running it.

