diff --git a/inc/lektor/uri.h b/inc/lektor/uri.h
index caf9342595517146ef32e9ae22a4c69c93dce474..bf73b9fc1089d0cfe79759dae9df7bc4fe65ef9e 100644
--- a/inc/lektor/uri.h
+++ b/inc/lektor/uri.h
@@ -16,6 +16,7 @@ enum lkt_uri_type {
 
 struct lkt_uri {
     enum lkt_uri_type type;
+    const char *column_name;
     union {
         void *value;
         size_t id;
diff --git a/src/uri.c b/src/uri.c
index 926dbd429317e83eea1a988eef58a5c91620b482..523a46f804879aa9343bbb8d1ca88a9f2ce279da 100644
--- a/src/uri.c
+++ b/src/uri.c
@@ -23,24 +23,31 @@ __prefix(char *str, struct lkt_uri *ret)
         return NULL;
 
     if (STR_NMATCH(str, "id", 2)) {
+        ret->column_name = LKT_DATABASE_NAME_KID;
         ret->type = uri_id;
         val = str + 2;
     } else if (STR_NMATCH(str, "playlist", 8)) {
+        ret->column_name = NULL;
         ret->type = uri_playlist;
         val = str + 3;
     } else if (STR_NMATCH(str, "type", 4)) {
+        ret->column_name = LKT_DATABASE_NAME_KTYPE;
         ret->type = uri_type;
         val = str + 4;
     } else if (STR_NMATCH(str, "author", 6)) {
+        ret->column_name = LKT_DATABASE_NAME_KAUTHOR;
         ret->type = uri_author;
         val = str + 6;
     } else if (STR_NMATCH(str, "category", 8)) {
+        ret->column_name = LKT_DATABASE_NAME_KCAT;
         ret->type = uri_category;
         val = str + 8;
     } else if (STR_NMATCH(str, "lang", 4)) {
+        ret->column_name = LKT_DATABASE_NAME_KLANG;
         ret->type = uri_language;
         val = str + 4;
     } else if (STR_NMATCH(str, "query", 5)) {
+        ret->column_name = LKT_DATABASE_KARA_ALL;
         ret->type = uri_query;
         val = str + 5;
     } else