Files
ruflo/docs/ruvector-postgres/scripts/test-connection.sh
T
rUvandClaude Opus 4.5 7eff4ba8f4 Checkpoint: File edits
Automatic checkpoint created by Claude Code
- Branch: main
- Timestamp: 2026-01-17T20:40:57Z
- Changes: 10 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 20:40:57 +00:00

176 lines
5.9 KiB
Bash
Executable File

#!/bin/bash
# Test connection to RuVector PostgreSQL
#
# Tests:
# - Basic connection
# - RuVector extension
# - Schema and tables
# - HNSW indices
# - Local embedding generation
# - Sample data
set -e
HOST="${PGHOST:-localhost}"
PORT="${PGPORT:-5432}"
DATABASE="${PGDATABASE:-claude_flow}"
USER="${PGUSER:-claude}"
PASSWORD="${PGPASSWORD:-claude-flow-test}"
echo "============================================"
echo "RuVector PostgreSQL Connection Test"
echo "============================================"
echo ""
echo "Host: $HOST:$PORT"
echo "Database: $DATABASE"
echo "User: $USER"
echo ""
# 1. Test basic connection
echo "1. Testing connection..."
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -c "SELECT 1;" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo " ✅ Connection successful"
else
echo " ❌ Connection failed"
exit 1
fi
# 2. Check PostgreSQL version
echo ""
echo "2. PostgreSQL version:"
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c "SELECT version();" | head -1 | xargs
# 3. Check RuVector extension
echo ""
echo "3. Checking RuVector extension..."
RESULT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT extversion FROM pg_extension WHERE extname = 'ruvector';" 2>/dev/null | tr -d ' ')
if [ -n "$RESULT" ]; then
echo " ✅ RuVector version: $RESULT"
else
# Fallback to check for vector extension (pgvector compatibility)
RESULT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT extversion FROM pg_extension WHERE extname = 'vector';" 2>/dev/null | tr -d ' ')
if [ -n "$RESULT" ]; then
echo " ⚠️ pgvector found (version: $RESULT) - RuVector not installed"
echo " Consider using ruvector/postgres:latest for full features"
else
echo " ❌ No vector extension found"
fi
fi
# 4. Check schema
echo ""
echo "4. Checking claude_flow schema..."
RESULT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT COUNT(*) FROM information_schema.schemata WHERE schema_name = 'claude_flow';" | tr -d ' ')
if [ "$RESULT" = "1" ]; then
echo " ✅ Schema exists"
else
echo " ❌ Schema not found"
fi
# 5. Check tables
echo ""
echo "5. Checking tables..."
TABLES=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT table_name FROM information_schema.tables WHERE table_schema = 'claude_flow' ORDER BY table_name;" | tr -d ' ' | grep -v "^$")
for table in $TABLES; do
echo " ✅ Table: $table"
done
# 6. Check HNSW indices
echo ""
echo "6. Checking HNSW indices..."
INDICES=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT indexname FROM pg_indexes WHERE schemaname = 'claude_flow' AND (indexdef LIKE '%hnsw%' OR indexdef LIKE '%ruvector_hnsw%');" | tr -d ' ' | grep -v "^$")
if [ -n "$INDICES" ]; then
for idx in $INDICES; do
echo " ✅ Index: $idx"
done
else
echo " ⚠️ No HNSW indices found"
fi
# 7. Test local embedding generation
echo ""
echo "7. Testing local embedding generation..."
RESULT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT CASE WHEN ruvector.fastembed('test', 'all-MiniLM-L6-v2') IS NOT NULL THEN 'success' ELSE 'failed' END;" 2>/dev/null | tr -d ' ')
if [ "$RESULT" = "success" ]; then
echo " ✅ Local embedding generation works"
else
# Try with basic vector function as fallback
echo " ⚠️ ruvector.fastembed not available"
echo " (May need full RuVector extension)"
fi
# 8. Count sample data
echo ""
echo "8. Sample data counts:"
COUNT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT COUNT(*) FROM claude_flow.embeddings;" 2>/dev/null | tr -d ' ')
echo " 📊 Embeddings: ${COUNT:-0} rows"
COUNT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT COUNT(*) FROM claude_flow.patterns;" 2>/dev/null | tr -d ' ')
echo " 📊 Patterns: ${COUNT:-0} rows"
COUNT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT COUNT(*) FROM claude_flow.agents;" 2>/dev/null | tr -d ' ')
echo " 📊 Agents: ${COUNT:-0} rows"
# 9. Check RuVector-specific features
echo ""
echo "9. RuVector feature availability:"
# Check for attention functions
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT ruvector.softmax_attention(NULL::ruvector.vector(384), NULL::ruvector.vector(384), 1.0);" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo " ✅ Attention mechanisms"
else
echo " ⚠️ Attention mechanisms not available"
fi
# Check for hyperbolic functions
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT ruvector.exp_map_poincare(NULL::ruvector.vector(384), -1.0);" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo " ✅ Hyperbolic embeddings"
else
echo " ⚠️ Hyperbolic embeddings not available"
fi
# Check for GNN functions
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT ruvector.gnn_aggregate(NULL::ruvector.vector(384)[], 'mean');" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo " ✅ GNN operations"
else
echo " ⚠️ GNN operations not available"
fi
# Check for self-learning
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
"SELECT ruvector.learn_optimize('claude_flow.embeddings', 'embedding');" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo " ✅ Self-learning optimization"
else
echo " ⚠️ Self-learning not available"
fi
echo ""
echo "============================================"
echo "✅ Connection test complete!"
echo "============================================"
echo ""
echo "Connection string:"
echo " postgresql://$USER:****@$HOST:$PORT/$DATABASE"
echo ""
echo "To run example queries:"
echo " psql postgresql://$USER@$HOST:$PORT/$DATABASE -f examples/basic-queries.sql"
echo ""