Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions drizzle-kit/src/dialects/postgres/aws-introspect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -965,13 +965,12 @@ export const fromDatabase = async (
SELECT
pg_catalog.json_build_object(
'oid', opclass.oid,
'name', pg_am.amname,
'name', pg_opclass.opcname,
'default', pg_opclass.opcdefault
)
FROM
pg_catalog.unnest(indclass) WITH ORDINALITY AS opclass(oid, ordinality)
JOIN pg_catalog.pg_opclass ON opclass.oid OPERATOR(pg_catalog.=) pg_opclass.oid
JOIN pg_catalog.pg_am ON pg_opclass.opcmethod OPERATOR(pg_catalog.=) pg_am.oid
ORDER BY opclass.ordinality
) as "opclasses"
FROM
Expand Down
3 changes: 1 addition & 2 deletions drizzle-kit/src/dialects/postgres/introspect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -977,13 +977,12 @@ export const fromDatabase = async (
SELECT
pg_catalog.json_build_object(
'oid', opclass.oid,
'name', pg_am.amname,
'name', pg_opclass.opcname,
'default', pg_opclass.opcdefault
)
FROM
pg_catalog.unnest(indclass) WITH ORDINALITY AS opclass(oid, ordinality)
JOIN pg_catalog.pg_opclass ON opclass.oid OPERATOR(pg_catalog.=) pg_opclass.oid
JOIN pg_catalog.pg_am ON pg_opclass.opcmethod OPERATOR(pg_catalog.=) pg_am.oid
ORDER BY opclass.ordinality
) as "opclasses"
FROM
Expand Down
25 changes: 25 additions & 0 deletions drizzle-kit/tests/postgres/pull.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1977,3 +1977,28 @@ test('issue No4655. Problem with backslash in check constraint + custom type', a
expect(sqlStatements).toStrictEqual([]);
expect(statements).toStrictEqual([]);
});

// https://github.com/drizzle-team/drizzle-orm/issues/5495
test('ivfflat index opclass introspection returns operator class name not access method name', async () => {
await db.query(`CREATE EXTENSION IF NOT EXISTS vector;`);

await db.query(`
CREATE TABLE public.items (
id integer NOT NULL,
embedding vector(3) NOT NULL
);
`);
await db.query(`
CREATE INDEX items_embedding_idx ON public.items USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
`);

const { indexes } = await fromDatabase(db, () => true);

const vectorIdx = indexes.find((idx) => idx.name === 'items_embedding_idx');
expect(vectorIdx).toBeDefined();
expect(vectorIdx!.method).toBe('ivfflat');
expect(vectorIdx!.columns[0]!.opclass).toStrictEqual({
name: 'vector_cosine_ops',
default: false,
});
});