From b636050aaa97147ba1516450d37d0454e67de408 Mon Sep 17 00:00:00 2001
From: klarysz <klarysz@viantinc.com>
Date: Wed, 13 Jul 2022 23:56:05 +0200
Subject: [PATCH] patched criteria column in

---
 cmd/cli_test.go                               |  2 +-
 cmd/testdata/case003_columns_codec/events.sql | 23 +++++++++++--------
 cmd/testdata/case003_columns_codec/log.txt    |  5 +++-
 router/criteria/parse.go                      |  7 +++++-
 4 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/cmd/cli_test.go b/cmd/cli_test.go
index f94ff6d7..b1b312ca 100644
--- a/cmd/cli_test.go
+++ b/cmd/cli_test.go
@@ -78,7 +78,7 @@ func TestRun(t *testing.T) {
 		{
 			description: "column codec",
 			URI:         "case003_columns_codec",
-			args:        []string{"-N=events", "-D=sqlite3", "-X=testdata/case003_columns_codec/events.sql"},
+			args:        []string{"-N=events", "-D=sqlite3", "-A=/tmp/datly/generator/db.db", "-X=testdata/case003_columns_codec/events.sql"},
 			viewURL:     "/v1/api/meta/view/dev/events",
 			dataURL:     "/v1/api/dev/events",
 			dataMethod:  http.MethodGet,
diff --git a/cmd/testdata/case003_columns_codec/events.sql b/cmd/testdata/case003_columns_codec/events.sql
index b7d1b77f..ef468ae5 100644
--- a/cmd/testdata/case003_columns_codec/events.sql
+++ b/cmd/testdata/case003_columns_codec/events.sql
@@ -1,10 +1,13 @@
-SELECT events.*,
-       name,
-       (CASE
-            WHEN COLUMN_X = 1 THEN
-                'x1,x2'
-            WHEN COLUMN_X = 2 THEN
-                'x3,x4'
-            ELSE ''
-           END) AS slice /* {"Codec":{"Ref":"AsStrings"}}  */
-FROM events as events
\ No newline at end of file
+SELECT events.*
+--        event_type.*
+FROM (
+         SELECT id,
+                name,
+                (CASE
+                     WHEN COLUMN_X = 1 THEN
+                         'x1,x2'
+                     WHEN COLUMN_X = 2 THEN
+                         'x3,x4'
+                    END) AS slice /* {"Codec":{"Ref":"AsStrings"}}  */
+         FROM events
+     ) events
diff --git a/cmd/testdata/case003_columns_codec/log.txt b/cmd/testdata/case003_columns_codec/log.txt
index 6f4ee2df..d7263560 100644
--- a/cmd/testdata/case003_columns_codec/log.txt
+++ b/cmd/testdata/case003_columns_codec/log.txt
@@ -32,7 +32,7 @@
 }
 ---------- connections: -----------
 	mem://localhost/dev/Datly/dependencies/connections.yamlConnectors:
-    - DSN: ${Username}:${Password}@tcp(localhost:3306)/dev?parseTime=true
+    - DSN: /tmp/datly/generator/db.db
       Driver: sqlite3
       Name: dev
       Secret:
@@ -48,6 +48,7 @@ Resource:
         - CaseFormat: lc
           Connector:
             Ref: dev
+          FromURL: events_from.sql
           Name: events
           Selector:
             Constraints:
@@ -60,6 +61,7 @@ Resource:
                 Projection: true
             Limit: 40
           Table: events
+          UseBindingPositions: true
 Routes:
     - Cardinality: Many
       CaseFormat: lc
@@ -73,6 +75,7 @@ Routes:
             - '*'
         ExposeHeaders:
             - '*'
+      EnableAudit: false
       Method: GET
       Namespace:
         ev: events
diff --git a/router/criteria/parse.go b/router/criteria/parse.go
index 63b9b4ed..15d94cbc 100644
--- a/router/criteria/parse.go
+++ b/router/criteria/parse.go
@@ -131,7 +131,12 @@ func matchDataSet(cursor *parsly.Cursor, columns view.ColumnIndex, column *view.
 				return dataSetCursor.NewError(comaMatcher)
 			}
 
-			if err := matchFieldValue(valueCursor, columns, column.ColumnType(), column.Format, buffer, placeholders, methods); err != nil {
+			columnType := column.ColumnType()
+			if columnType.Kind() == reflect.Ptr {
+				columnType = columnType.Elem()
+			}
+
+			if err := matchFieldValue(valueCursor, columns, columnType, column.Format, buffer, placeholders, methods); err != nil {
 				return err
 			}