Skip to content

Commit 660c96c

Browse files
committed
Add check for existing 'age' extension before loading in AgeConnectionManager
1 parent 87545a2 commit 660c96c

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/ManagedCode.GraphRag.Postgres/ApacheAge/AgeConnectionManager.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,27 @@ private async Task LoadAgeAsync(NpgsqlConnection connection, CancellationToken c
132132
{
133133
try
134134
{
135+
await using var checkCommand = connection.CreateCommand();
136+
checkCommand.CommandText = "SELECT 1 FROM pg_extension WHERE extname = 'age';";
137+
checkCommand.CommandTimeout = 0;
138+
var result = await checkCommand.ExecuteScalarAsync(cancellationToken).ConfigureAwait(false);
139+
140+
if (result is not null)
141+
{
142+
LogMessages.ExtensionLoaded(_logger, ConnectionString);
143+
return;
144+
}
145+
135146
await using var load = connection.CreateCommand();
136147
load.CommandText = "LOAD 'age';";
137148
load.CommandTimeout = 0;
138149
await load.ExecuteNonQueryAsync(cancellationToken).ConfigureAwait(false);
139150
LogMessages.ExtensionLoaded(_logger, ConnectionString);
140151
}
152+
catch (PostgresException ex) when (ex.SqlState == "42501")
153+
{
154+
LogMessages.ExtensionLoaded(_logger, ConnectionString);
155+
}
141156
catch (PostgresException ex)
142157
{
143158
LogMessages.ExtensionNotLoadedError(_logger, ConnectionString, ex.MessageText);

0 commit comments

Comments
 (0)