diff --git a/src/db-helper.cc b/src/db-helper.cc
index 538e137..dca3bdc 100644
--- a/src/db-helper.cc
+++ b/src/db-helper.cc
@@ -68,8 +68,13 @@
                              << errmsg_info_str ("Cannot create function ``directory_name''"));
     }
 
-  // Alex: determine if tables initialized. if not, initialize... not sure what is the best way to go...
-  // for now, just attempt to create everything
+  res = sqlite3_create_function (m_db, "is_dir_prefix", 2, SQLITE_ANY, 0, DbHelper::is_dir_prefix_xFun, 0, 0);
+  if (res != SQLITE_OK)
+    {
+      BOOST_THROW_EXCEPTION (Error::Db ()
+                             << errmsg_info_str ("Cannot create function ``is_dir_prefix''"));
+    }
+
   sqlite3_exec (m_db, INIT_DATABASE.c_str (), NULL, NULL, NULL);
   _LOG_DEBUG_COND (sqlite3_errcode (m_db) != SQLITE_OK, sqlite3_errmsg (m_db));
 }
@@ -208,3 +213,45 @@
       sqlite3_result_text (context, dirPath.c_str (), dirPath.size (), SQLITE_TRANSIENT);
     }
 }
+
+void
+DbHelper::is_dir_prefix_xFun (sqlite3_context *context, int argc, sqlite3_value **argv)
+{
+  int len1 = sqlite3_value_bytes (argv[0]);
+  int len2 = sqlite3_value_bytes (argv[1]);
+
+  if (len1 == 0)
+    {
+      sqlite3_result_int (context, 1);
+      return;
+    }
+
+  if (len1 > len2) // first parameter should be at most equal in length to the second one
+    {
+      sqlite3_result_int (context, 0);
+      return;
+    }
+
+  if (memcmp (sqlite3_value_blob (argv[0]), sqlite3_value_blob (argv[1]), len1) == 0)
+    {
+      if (len1 == len2)
+        {
+          sqlite3_result_int (context, 1);
+        }
+      else
+        {
+          if (reinterpret_cast<const char*> (sqlite3_value_blob (argv[1]))[len1] == '/')
+            {
+              sqlite3_result_int (context, 1);
+            }
+          else
+            {
+              sqlite3_result_int (context, 0);
+            }
+        }
+    }
+  else
+    {
+      sqlite3_result_int (context, 0);
+    }
+}
