diff --git a/CHANGES.md b/CHANGES.md
index 3abb8f0..08715a0 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,9 @@
+### Apache MetaModel [WIP]
+
+ * [METAMODEL-1236] - Elasticsearch: not/empty and is/not null do not work for text based columns
+ * [METAMODEL-1235] - Elasticsearch: "String index out of range" when schema name and column name are equal
+ * [METAMODEL-1232] - Improve stability of Travis CI builds
+
 ### Apache MetaModel 5.3.3
 
  * [METAMODEL-1233] - Elasticsearch: "term" query is used for text search.
diff --git a/core/src/main/java/org/apache/metamodel/AbstractDataContext.java b/core/src/main/java/org/apache/metamodel/AbstractDataContext.java
index 87a3035..4a2984f 100644
--- a/core/src/main/java/org/apache/metamodel/AbstractDataContext.java
+++ b/core/src/main/java/org/apache/metamodel/AbstractDataContext.java
@@ -307,26 +307,24 @@
      *            in case of case-insensitive search)
      * @return
      */
-    private Column searchColumn(String schemaNameSearch, String columnNameOriginal, String columnNameSearch) {
-        if (columnNameSearch.startsWith(schemaNameSearch)) {
-            Schema schema = getSchemaByName(schemaNameSearch);
-            if (schema != null) {
+    private Column searchColumn(final String schemaNameSearch, final String columnNameOriginal,
+            final String columnNameSearch) {
+        final Schema schema = getSchemaByName(schemaNameSearch);
+        if (schema != null) {
+            if (columnNameSearch.equals(schemaNameSearch)) {
+                return getColumn(schema, columnNameSearch);
+            } else if (columnNameSearch.startsWith(schemaNameSearch)) {
                 String tableAndColumnPath = columnNameOriginal.substring(schemaNameSearch.length());
-
                 if (tableAndColumnPath.charAt(0) == '.') {
                     tableAndColumnPath = tableAndColumnPath.substring(1);
-
-                    Column column = getColumn(schema, tableAndColumnPath);
-                    if (column != null) {
-                        return column;
-                    }
+                    return getColumn(schema, tableAndColumnPath);
                 }
             }
         }
         return null;
     }
 
-    private final Column getColumn(final Schema schema, final String tableAndColumnPath) {
+    private Column getColumn(final Schema schema, final String tableAndColumnPath) {
         Table table = null;
         String columnPath = tableAndColumnPath;
         final List<String> tableNames = schema.getTableNames();
