diff --git a/src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/Configuration.java b/src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/Configuration.java
index 960d358..6e340c3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/Configuration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/Configuration.java
@@ -58,10 +58,6 @@
     }
   }
 
-  final String getSpannerInstanceName() {
-    return spannerInstance;
-  }
-
   final DatabaseId getDatabaseId() {
     return DatabaseId.of(options.getProjectId(), spannerInstance, spannerDatabase);
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabase.java b/src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabase.java
index 940743e..021bb0f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabase.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/spannerrefdb/SpannerRefDatabase.java
@@ -191,18 +191,7 @@
   @Override
   public boolean exists(Project.NameKey project, String refName) {
     logger.atInfo().log("Checking if ref %s %s exists.", project.get(), refName);
-    try (ResultSet resultSet =
-        dbClient
-            .singleUse()
-            .executeQuery(
-                Statement.newBuilder("SELECT * FROM refs WHERE project = @project and ref = @ref")
-                    .bind("project")
-                    .to(project.get())
-                    .bind("ref")
-                    .to(refName)
-                    .build())) {
-      return resultSet.next();
-    }
+    return get(project, refName) != null;
   }
 
   @Override
@@ -221,7 +210,7 @@
             .singleUse()
             .executeQuery(
                 Statement.newBuilder(
-                        "SELECT value FROM refs WHERE project = @project and ref = @ref")
+                        "SELECT value FROM refs WHERE project = @project AND ref = @ref")
                     .bind("project")
                     .to(project.get())
                     .bind("ref")
@@ -232,7 +221,8 @@
       }
       return null;
     } catch (Exception e) {
-      throw new GlobalRefDbSystemError(String.format("Cannot get value for %s", project.get()), e);
+      throw new GlobalRefDbSystemError(
+          String.format("Cannot get value for %s %s", project.get(), refName), e);
     }
   }
 
