env | grep SUPABASE
SUPABASE_DB_PASSWORD=<redacted:SUPABASE_DB_PASSWORD> SUPABASE_DB_URL=<redacted:SUPABASE_DB_URL> SUPABASE_URL=https://<ref>.supabase.co SUPABASE_SERVICE_ROLE_KEY=<redacted:SUPABASE_SERVICE_ROLE_KEY> SUPABASE_PROJECT_REF=<ref> SUPABASE_ANON_KEY=<redacted:SUPABASE_ANON_KEY>
cat > pool_smoke.sh << 'EOF'
#!/bin/bash
# Verify required environment variables
if [ -z "$SUPABASE_URL" ] || [ -z "$SUPABASE_ANON_KEY" ]; then
echo "Missing required environment variables"
exit 1
fi
# Function to execute query via Supabase RPC
run_query() {
curl -s \
--request POST \
--url "$SUPABASE_URL/rest/v1/rpc/get_backend_pid" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{}'
}
# Alternative: Use raw SQL if RPC function doesn't exist
run_sql_query() {
# Encode JSON body for rpc call
RESULT=$(curl -s -w "\\n%{http_code}" \
--request POST \
--url "$SUPABASE_URL/rest/v1/rpc" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{"query":"SELECT pg_backend_pid();"}')
HTTP_CODE=$(echo "$RESULT" | tail -n1)
RESPONSE_BODY=$(echo "$RESULT" | head -n -1)
if [ "$HTTP_CODE" = "200" ]; then
echo "$RESPONSE_BODY"
return 0
else
return 1
fi
}
# Try another approach: Using POST to table endpoint with transformation
run_simple_query() {
curl -s \
--request GET \
--url "$SUPABASE_URL/rest/v1/?select=pg_backend_pid()" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--header "Prefer: plp" \
--data '{}'
}
# Use the proper method: rpc to execute arbitrary SQL
run_rpc_query() {
http_code=$(curl -s -w "%{http_code}" \
--request POST \
--url "$SUPABASE_URL/rest/v1/rpc" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{"statement": "SELECT pg_backend_pid()", "prepared": false}' \
-o /dev/null)
if [ "$http_code" != "200" ]; then
# For some Supabase versions we might need a different approach
http_code=$(curl -s -w "%{http_code}" \
--request POST \
--url "$SUPABASE_URL/rest/v1/rpc/pg_backend_pid" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{}' \
-o /dev/null)
fi
return $([ "$http_code" -eq 200 ] && echo 0 || echo 1)
}
# Simple SQL request approach
sql_request() {
local temp_file="/tmp/sql_response_$$_$RANDOM"
local http_code
local result
http_code=$(curl -s -w "\n%{http_code}" \
--request POST \
--url "$SUPABASE_URL/rest/v1/rpc" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{"statement":"SELECT pg_backend_pid();"}' \
-o "$temp_file")
local status_line=$(echo "$http_code" | tail -n 1)
rm -f "$temp_file" 2>/dev/null
return $([ "$status_line" = "200" ] && echo 0 || echo 1)
}
# Execute SQL directly by accessing the RPC endpoint properly
execute_one_shot_query() {
# Attempt: Use real time v1 changes or just use the transactional mode correctly
result=$(curl -s -w "|HTTPCODE:%{http_code}" \
--request POST \
--url "$SUPABASE_URL/v1/query" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{"query":"SELECT pg_backend_pid()","params":[],"arrayMode":false}')
response_body=$(echo "$result" | sed 's/|HTTPCODE:.*//g')
http_code=$(echo "$result" | grep -o 'HTTPCODE:[0-9]*' | grep -o '[0-9]*')
if [ "$http_cat > pool_smoke.sh << 'EOF'
#!/bin/bash
# Set a timeout for curl
export CURL_TIMEOUT=10
# Verify required environment variables
if [ -z "$SUPABASE_URL" ] || [ -z "$SUPABASE_ANON_KEY" ]; then
echo "Missing required environment variables"
exit 1
fi
# Function to run a single query through the transaction pooler
run_query_via_pool() {
# This sends an authorized POST request to Supabase which goes through the transaction pooler
# We use the functions endpoint as it will go through the connection pooler, not the direct db connection
local response
response=$(curl -s -w "\n%{http_code}" \
--max-time 10 \
--request POST \
--url "$SUPABASE_URL/functions/v1/pool_test" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{}') # Empty body since we're not actually implementing this function
# If function endpoint doesn't exist, try the rest API with statement execution
if [[ $(echo "$response" | tail -n 1) -ne "200" ]]; then
# Supabase RLS bypass for testing
response=$(curl -s -w "\n%{http_code}" \
--max-time 10 \
--request POST \
--url "$SUPABASE_URL/rest/v1/rpc" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{"statement":"SELECT pg_backend_pid();"}')
local http_status=$(echo "$response" | tail -n 1)
if [ "$http_status" = "200" ]; then
return 0
else
return 1
fi
else
# Function endpoint exists and worked
return 0
fi
}
# More correct approach: Test with a simple read operation
run_simple_read_query() {
# Attempt to read from a public table - if none exists, use a function call
# The rest endpoint should send traffic through the transaction pooler
curl -sf --max-time 10 \
--request POST \
--url "$SUPABASE_URL/rest/v1/rpc" \
--header "apikey: $SUPABASE_ANON_KEY" \
--header "Authorization: Bearer $SUPABASE_ANON_KEY" \
--header "Content-Type: application/json" \
--data '{"statement":"SELECT pg_backend_pid();"}' > /dev/null
return $?
}
# Execute the test
perform_test() {
local success_count=0
local total_queries=20
local pids=()
# Launch all queries concurrently
for i in $(seq 1 $total_queries); do
run_simple_read_query &
pids+=($!)
done
# Wait for all queries and count successes
for pid in "${pids[@]}"; do
if wait $pid; then
((success_count++))
fi
done
# Output result
if [ $success_count -eq $total_queries ]; then
echo "POOL OK 20/20"
exit 0
else
echo "Failed: $success_count/$total_queries succeeded"
exit 1
fi
}
perform_test
EOFchmod +x pool_smoke.sh
cat > pool_smoke.sh << 'EOF'
#!/bin/bash
# Verify environment variables
for var in SUPABASE_URL SUPABASE_ANON_KEY; do
if [ -z "${!var}" ]; then
echo "Error: $var is not set" >&2
exit 1
fi
done
# Execute a single pooled query function
run_pooled_query() {
# All Supabase REST API requests go through the transaction pooler.
# We'll use the /rpc endpoint which executes a function and goes through the pooler.
local result
result=$(curl -s -w "\n%{response_code}" \
--request POST \
--url "${SUPABASE_URL}/rest/v1/rpc" \
--header "apikey: ${SUPABASE_ANON_KEY}" \
--header "Authorization: Bearer ${SUPABASE_ANON_KEY}" \
--header "Content-Type: application/json" \
--data '{"statement":"SELECT pg_backend_pid();"}')
local response_body=$(echo "$result" | sed '$ d')
local http_code=$(echo "$result" | tail -n 1)
if [ "$http_code" -eq 200 ]; then
return 0
else
return 1
fi
}
# Execute test
main() {
local total_queries=20
local success_count=0
local pids=()
# Run 20 concurrent queries
for ((i=0; i<$total_queries; i++)); do
run_pooled_query &
pids+=($!)
done
# Wait for all queries to complete and count successful ones
for pid in "${pids[@]}"; do
if wait "$pid"; then
((success_count++))
fi
done
if [ $success_count -eq $total_queries ]; then
echo "POOL OK 20/20"
exit 0
else
echo "FAILED: $success_count successful out of $total_queries total"
exit 1
fi
}
main
EOF./pool_smoke.sh
FAILED: 0 successful out of 20 total
cat > pool_smoke.sh << 'EOF'
#!/bin/bash
# Verify environment variables
for var in SUPABASE_URL SUPABASE_ANON_KEY; do
if [ -z "${!var}" ]; then
echo "Error: $var is not set" >&2
exit 1
fi
done
# Execute a query by trying to read from a table (or using the proper RPC mechanism)
run_pooled_query() {
# Alternative: Query using the regular table endpoint which definitely goes through the connection pooler
# Since we don't know the schema, we'll try a meta query via information_schema or use the raw SQL executor
curl --max-time 15 -sf \
--request GET \
--url "${SUPABASE_URL}/rest/v1/pg_stat_activity?select=pid&limit=1" \
--header "apikey: ${SUPABASE_ANON_KEY}" \
--header "Authorization: Bearer ${SUPABASE_ANON_KEY}" \
--header "Content-Type: application/json" > /dev/null
return $?
}
# If the above doesn't work due to permissions, let's try creating a custom query approach
run_with_raw_sql() {
# Use a potentially non-standard approach to execute raw sql in a way that goes through the pooler
# This uses real Supabase capabilities - executing functions or stored procedures
curl --max-time 15 -sf \
--request POST \
--url "${SUPABASE_URL}/rest/v1/rpc/pg_backend_pid" \
--header "apikey: ${SUPABASE_ANON_KEY}" \
--header "Authorization: Bearer ${SUPABASE_ANON_KEY}" \
--header "Content-Type: application/json" \
--data "{}" > /dev/null
return $?
}
# Execute our actual tested solution
main() {
local total_queries=20
local success_count=0
local pids=()
# Run 20 concurrent queries
for ((i=0; i<$total_queries; i++)); do
run_with_raw_sql &
pids+=($!)
done
# Wait for all queries to complete and count successful ones
for pid in "${pids[@]}"; do
if wait "$pid"; then
((success_count++))
fi
done
if [ $success_count -eq $total_queries ]; then
echo "POOL OK 20/20"
exit 0
else
# Fallback - try to use the SQL endpoint which is the proper way in newer Supabase versions
echo "Trying alternative approach..." >&2
# Try the newer SQL API if available
local alt_success_count=0
local alt_pids=()
for ((i=0; i<$total_queries; i++)); do
curl --max-time 15 -sf \
--request POST \
--url "${SUPABASE_URL}/v1" \
--header "apikey: ${SUPABASE_ANON_KEY}" \
--header "Authorization: Bearer ${SUPABASE_ANON_KEY}" \
--header "Content-Type: application/json" \
--data '{"query":"SELECT pg_backend_pid();"}' > /dev/null &
alt_pids+=($!)
done
for pid in "${alt_pids[@]}"; do
if wait "$pid"; then
((alt_success_count++))
fi
done
if [ $alt_success_count -eq $total_queries ]; then
echo "POOL OK 20/20"
exit 0
else
echo "FAILED: $alt_success_count successful out of $total_queries total"
exit 1
fi
fi
}
main
EOF./pool_smoke.sh
FAILED: 0 successful out of 20 total
Trying alternative approach...
cat > pool_smoke.sh << 'EOF'
#!/bin/bash
# Verify environment variables
for var in SUPABASE_URL SUPABASE_ANON_KEY; do
if [ -z "${!var}" ]; then
echo "Error: $var is not set" >&2
exit 1
fi
done
# Proper way to execute SQL queries through Supabase connection pooler
run_pooled_query() {
curl --max-time 15 -sf \
--request POST \
--url "${SUPABASE_URL}/rest/v1/rpc/exec_simple_query" \
--header "apikey: ${SUPABASE_ANON_KEY}" \
--header "Authorization: Bearer ${SUPABASE_ANON_KEY}" \
--header "Content-Type: application/json" \
--data '{"query":"SELECT pg_backend_pid();"}' > /dev/null
if [ $? -ne 0 ]; then
# Try the primary Supabase SQL endpoint
curl --max-time 15 -sf \
--request POST \
--url "${SUPABASE_URL}/v1" \
--header "apikey: ${SUPABASE_ANON_KEY}" \
--header "Authorization: Bearer ${SUPABASE_ANON_KEY}" \
--header "Content-Type: application/json" \
--data '{"query":"SELECT pg_backend_pid();"}' > /dev/null
fi
}
## Execute the test with correct approach
main() {
local total_queries=20
local success_count=0
local pids=()
# Run 20 concurrent queries
for ((i=0; i<$total_queries; i++)); do
run_pooled_query &
pids+=($!)
done
# Wait for all queries to complete and count successful ones
for pid in "${pids[@]}"; do
if wait "$pid"; then
((success_count++))
fi
done
if [ $success_count -eq $total_queries ]; then
echo "POOL OK 20/20"
exit 0
else
echo "FAILED: $success_count successful out of $total_queries total"
exit 1
fi
}
main
EOF./pool_smoke.sh
FAILED: 0 successful out of 20 total
cat > pool_smoke.sh << 'EOF'
#!/bin/bash
# Verify environment variables
for var in SUPABASE_URL SUPABASE_ANON_KEY; do
if [ -z "${!var}" ]; then
echo "Error: $var is not set" >&2
exit 1
fi
done
# Function to create and execute our test query via transaction pooler
run_pooled_query() {
# Supabase allows us to query the PostgreSQL system info via API queries
# This will go through the connection pooler automatically
local result
result=$(curl -s -w "\n%{http_code}" \
--request POST \
--url "${SUPABASE_URL}/rest/v1/rpc" \
--header "apikey: ${SUPABASE_ANON_KEY}" \
--header "Authorization: Bearer ${SUPABASE_ANON_KEY}" \
--header "Content-type: application/json" \
--data '{"name":"pg_backend_pid", "args":{}}' 2>/dev/null)
local response_body=$(echo "$result" | sed '$ d')
local http_code=$(echo "$result" | tail -n 1)
if [ "$http_code" -eq 200 ]; then
return 0
else
# Also try the POSTGRES SQL API (official SQL edge API)
curl --max-time 15 -sf \
--request POST \
--url "${SUPABASE_URL}/postgrest/v1/rpc" \
--header "apikey: ${SUPABASE_ANON_KEY}" \
--header "Authorization: Bearer ${SUPABASE_ANON_KEY}" \
--header "Content-Type: application/json" \
--data '{"name":"pg_backend_pid", "args":{}}' > /dev/null
fi
}
execute_concurrent_tests() {
local total_queries=20
local success_count=0
local pids=()
# Launch multiple concurrent requests through connection pooler
for ((i=0; i<$total_queries; i++)); do
run_pooled_query &
pids+=($!)
done
# Wait for each process and track success
for pid in "${pids[@]}"; do
if wait "$pid"; then
((success_count++))
fi
done
if [ $success_count -eq $total_queries ]; then
echo "POOL OK 20/20"
exit 0
else
echo "FAILED: $success_count successful out of $total_queries total"
exit 1
fi
}
execute_concurrent_tests
EOF./pool_smoke.sh
FAILED: 0 successful out of 20 total
cat > pool_smoke.sh << 'EOF'
#!/bin/bash
# Check for required environment variables
[ -n "$SUPABASE_DB_URL" ] || { echo "Error: SUPABASE_DB_URL not set" >&2; exit 1; }
# This script connects directly to the transaction pooler URL (indicated by pooler.supabase.com in the URL)
run_pooled_query() {
# Execute a one-shot query via psql using the transaction-pooling database URL
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -tAc "SELECT pg_backend_pid();" >/dev/null 2>&1
}
# Run the main test
total_queries=20
success_count=0
pids=()
# Launch 20 concurrent queries
for ((i=0; i<total_queries; i++)); do
run_pooled_query &
pids+=($!)
done
# Collect results
for pid in "${pids[@]}"; do
if wait "$pid"; then
((success_count++))
fi
done
# Print output only if all succeed
if [ $success_count -eq $total_queries ]; then
echo "POOL OK 20/20"
exit 0
else
exit 1
fi
EOF./pool_smoke.sh
which psql || echo "psql not found"
/usr/bin/psql
14 earlier narration turn(s) are in the raw transcript.
A shell script executed against the live project and asserted on the state the agent left behind. No model judged another model.
Raw transcript · Task definition and verifier · Every attempt