diff --git a/src/adapter/postgres.spec.ts b/src/adapter/postgres.spec.ts
index 85687ae05e9c39882bce0ff22e6fe86dcb848746..8b77b18409a350412f1b99eceac53c716f45a535 100644
--- a/src/adapter/postgres.spec.ts
+++ b/src/adapter/postgres.spec.ts
@@ -279,4 +279,23 @@ describe("postgres adapter", () => {
             done();
         });
     });
+
+    it("should get data when a filter does not have any effect on the query", (done) => {
+        let view = adapterScenario.notMatchFilterView;
+        adapter.getDataFromView(view, (err, result) => {
+            expect(err).to.be.a("null");
+            expect(result).to.be.an("array");
+            expect(result).to.have.length(5);
+            expect(result[0]).to.be.an("object");
+            let keys: string[] = [];
+            keys = keys.concat(view.metrics.map((item) => item.name));
+            keys = keys.concat(view.dimensions.map((item) => item.name));
+            result.forEach((row) => {
+                expect(row).to.be.an("object");
+                expect(row).to.have.all.keys(keys);
+            });
+
+            done();
+        });
+    });
 });
diff --git a/src/adapter/postgres.ts b/src/adapter/postgres.ts
index 2e5cd81248dff79dcd5cbf29a039a27c72309e3e..9055d2b998aab7023bb7b4f4c52a77922513d415 100644
--- a/src/adapter/postgres.ts
+++ b/src/adapter/postgres.ts
@@ -179,7 +179,12 @@ export class PostgresAdapter extends Adapter {
             return clause.id === item.id;
         }));
 
-        toCover.forEach((item) => conds.push("(" + this.translateClause(item, nameMap) + ")"));
+        toCover.forEach((item) => {
+            const clause = "(" + this.translateClause(item, nameMap) + ")";
+            if (clause !== "()") {
+                conds.push(clause);
+            }
+        });
 
         // Assembly
 
@@ -249,11 +254,19 @@ export class PostgresAdapter extends Adapter {
     }
 
     private translateClause(clause: Clause, map: {[key: string]: View}): string {
-        let r = clause.filters.map((item) => this.translateFilter(item, map));
+        const r = clause.filters.map((item) => {
+            return this.translateFilter(item, map);
+        }).filter((item) => {
+            return item !== "";
+        });
         return r.join(" OR ");
     }
 
     private translateFilter(filter: Filter, map: {[key: string]: View}): string {
+        if (!map[filter.target.name]) {
+            return "";
+        }
+
         const viewId = map[filter.target.name].id;
         const leftSide = this.buildColumn(filter.target, viewId);
         const op = this.translateOperator(filter.operator);
diff --git a/test/scenario.ts b/test/scenario.ts
index a26bb2ab5e423571a5d3c756de9dd798c8615b59..fa42a2207b4a37b80c3f5a0ad26d3ae31738fc62 100644
--- a/test/scenario.ts
+++ b/test/scenario.ts
@@ -50,6 +50,7 @@ interface AdapterScenario {
     notEqualView: View;
     gtltView: View;
     geleView: View;
+    notMatchFilterView: View;
 }
 
 interface DataCtrlScenario {
@@ -257,6 +258,15 @@ const geleView = new View({
     clauses: [clauses.view0ge, clauses.view0le]
 });
 
+const notMatchFilterView = new View({
+    metrics: [mets[0]],
+    dimensions: [dims[0]],
+    materialized: false,
+    origin: false,
+    childViews: [views[0]],
+    clauses: [clauses.view7dim5]
+});
+
 const subDimView = new View({
     metrics: [mets[0]],
     dimensions: [subdims[0], subdims[1], dims[7], dims[8]],
@@ -311,7 +321,8 @@ export const adapterScenario: AdapterScenario = {
     multiClauseView: multiClauseView,
     notEqualView: notEqualView,
     gtltView: gtltView,
-    geleView: geleView
+    geleView: geleView,
+    notMatchFilterView: notMatchFilterView
 };
 
 export const dataCtrlScenario: DataCtrlScenario = {