# GDQ Data Type Support

## Detailed Connector Support Summary&#x20;

This document explains the supported and unsupported data types for different connectors within the Governed Data Query (GDQ) framework. It provides a reference to ensure compatibility and proper data handling across various data sources. The document is a work in progress, with connectors and data type research updated as new inputs become available.

## Connectors List

### GDQ Operators by Connector

#### **MySQL**

**Supported Operators and Data Types**

1. EQUALS
   1. GDQ Supported Data Types: CHAR, VARCHAR, TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXT
   2. GDQ not supported Data Types:
      1. Numeric Type:  TinyInt, SmallInt, MediumInt, Int, BigInt, Decimal, Double, Float (Since numeric literals are always quoted as strings, comparisons may fail or rely on MySQL’s implicit conversion—which can be unreliable.)
      2. Date/Time Types: YEAR, DATE, DATETIME, TIMESTAMP, TIME (These types require specific literal formats and handling that the current implementation does not provide.)
      3. Boolean Types: BOOLEAN (or TINYINT(1) when used as a boolean)\
         (No specialized logic is in place to handle true/false conditions.)
      4. Binary/Complex Types: BLOB, TINYBLOB, MEDIUMBLOB, LONGBLOB
   3. Not Supported by connector for the operator: JSON, BINARY, VARBINARY
   4. Sample Query:\
      SELECT \* FROM \`ovaledge\`.\`Customers\` WHERE \`ID\` = 1 AND \`orders\` = 2;
   5. Comments: Floating-point comparisons may be unreliable due to precision limitations.
2. **LIKE**
   1. GDQ Supported Data Types: CHAR, VARCHAR, TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXT
   2. Not Supported by connector for the operator: JSON, BINARY, VARBINARY, Numeric types, DATE, TIME
   3. Sample Query:\
      SELECT \* FROM \`ovaledge\`.\`Customers\` WHERE \`name\` LIKE 'J%'   AND \`Country\` LIKE '%a' AND \`Address\` LIKE '%Street%';
3. **I\_LIKE**
   1. GDQ Supported Data Types: CHAR, VARCHAR, TEXT
   2. Not Supported by connector for the operator:: JSON, BINARY, VARBINARY, Numeric types, DATE, TIME
   3. Sample Query: \
      SELECT \* FROM \`ovaledge\`.\`Customers\` WHERE \`name\` LIKE 'J%' COLLATE utf8mb4\_general\_ci;

{% hint style="info" %}
MySQL does not have a built-in ILIKE operator, but case-insensitive matching can be done using COLLATE utf8mb4\_general\_ci.
{% endhint %}

4. **IS\_NOT\_EMPTY / IS\_EMPTY**
   1. GDQ Supported Data Types: CHAR, VARCHAR, TEXT
   2. Not Supported by connector for the operator: JSON, BINARY, VARBINARY, Numeric types, DATE, TIME
   3. Sample Query: \
      SELECT \* FROM \`ovaledge\`.\`Customers\` WHERE COALESCE(LENGTH(TRIM(\`Name\`)), 0) <> 0;
5. **IS\_NULL / IS\_NOT\_NULL**
   1. GDQ Supported Data Types: CHAR, VARCHAR, TEXT
   2. Not Supported by connector for the operator: JSON, BINARY, VARBINARY, Numeric types, DATE, TIME
   3. Sample Query:\
      SELECT \* FROM \`ovaledge\`.\`Customers\` WHERE \`name\` IS NULL;

#### **Oracle**

**Supported Operators and Data Types**

1. **EQUALS**&#x20;
   1. GDQ Supported Data Types: CHAR, NCHAR, VARCHAR2, NVARCHAR2
   2. GDQ not supported Data Types:
      1. Numeric Types:\
         NUMBER, INTEGER, DECIMAL, FLOAT, BINARY\_FLOAT, BINARY\_DOUBLE\
         (Applying LOWER() on a numeric column or comparing a numeric literal wrapped in quotes will result in errors or unintended behavior.)
      2. Date/Time Types\
         DATE, TIMESTAMP, TIME,DATE, INTERVAL\
         (These require specific literal formats and conversion logic that this implementation does not provide.)
      3. **Boolean Types:**\
         (Oracle does not have a native Boolean type in SQL; however, if numeric or text-based booleans are used, they are not handled by this string-based logic.)
      4. **Binary/Other Complex Types:**
         1. BLOB, RAW.\
            (These types need specialized handling that isn’t included in the current query builder.)
         2. Not Supported by connector for the operator: Blob, Clob
   3. Sample Query\
      SELECT \* FROM "ORACLE"."customers" WHERE "ID" = 1 AND "ORDERS" = 2;
   4. Comments: Floating-point comparisons may be unreliable due to precision limits.
2. **LIKE**
   1. GDQ Supported Data Types: CHAR, NCHAR, VARCHAR2, NVARCHAR2
   2. Not Supported by connector for the operator: NUMBER, FLOAT, INTERVAL, DATE, TIMESTAMP, BLOB, CLOB
   3. Sample Query:\
      SELECT \* FROM "ORACLE"."customers" WHERE "NAME" LIKE 'john%';
3. **I\_LIKE**
   1. GDQ Supported Data Types: CHAR, NCHAR, VARCHAR2, NVARCHAR2 (Using LOWER, UPPER, INITCAP)
   2. Not Supported by connector for the operator: NUMBER, FLOAT, INTERVAL, DATE, TIMESTAMP, BLOB, CLOB
   3. Sample Query:\
      SELECT \* FROM "ORACLE"."customers" WHERE LOWER("NAME") LIKE 'sample%';

{% hint style="info" %}
Oracle does not support ILIKE; case-insensitive matching can be done using LOWER(), UPPER(), or INITCAP().
{% endhint %}

4. **IS\_NOT\_EMPTY / IS\_EMPTY**
   1. GDQ Supported Data Types: CHAR, NCHAR, VARCHAR2, NVARCHAR2
   2. Not Supported by connector for the operator: NUMBER, FLOAT, INTERVAL, DATE, TIMESTAMP, BLOB, CLOB
   3. Sample Query:\
      SELECT \* FROM "ORACLE"."customers" WHERE COALESCE(LENGTH(TRIM("NAME")), 0) <> 0;
5. **IS\_NULL / IS\_NOT\_NULL**
   1. GDQ Supported Data Types: CHAR, NCHAR, VARCHAR2, NVARCHAR2
   2. Not Supported by connector for the operator: NUMBER, FLOAT, INTERVAL, DATE, TIMESTAMP, BLOB, CLOB
   3. Sample Query:\
      SELECT \* FROM "ORACLE"."customers" WHERE "NAME" IS NULL

#### **Teradata**

**Supported Operators and Data Types**

1. **EQUALS**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. GDQ not supported Data Types:
      1. Numeric Types:\
         INTEGER, SMALLINT, BIGINT, BYTEINT, DECIMAL, FLOAT, etc.\
         (Because the code always treats condition values as strings, numeric comparisons may fail or cause conversion issues.)
      2. Date and Time Types:\
         DATE, TIME, TIMESTAMP, etc.\
         (These types require specific formatting and parsing, which the current implementation does not provide.)
      3. Boolean Types:\
         BOOLEAN\
         (There’s no logic to handle true/false conditions; these are not supported in the current approach.)
      4. Binary/Complex Types:\
         BLOB, VARBYTE, and other non-text types\
         (Such types usually need specialized handling that isn’t present in this string-focused query builder.)\
         Not Supported by connector for the operator:: Blob, Clob, Json
   3. Sample Query:\
      SELECT \* FROM "ovaledgedb"."customer" WHERE "ID" = 127;
2. **LIKE**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. Not Supported by connector for the operator: Numeric types, DATE, TIME, VARBYTE, BYTE, Blob, Clob, Json
   3. Sample Query:\
      SELECT \* FROM "ovaledgedb"."customer" WHERE "name" LIKE 'A%';
3. **I\_LIKE**
   1. GDQ Supported Data Types: VARCHAR, CHAR (Using NOT CASESPECIFIC)
   2. Not Supported by connector for the operator: NUMERIC, DATE, TIME, TIMESTAMP, VARBYTE, BYTE, BLOB, CLOB, JSON
4. **IS\_NOT\_EMPTY / IS\_EMPTY**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. Not Supported by connector for the operator: NUMERIC, DATE, TIME, TIMESTAMP, VARBYTE, BYTE, BLOB, CLOB, JSON
5. **IS\_NULL / IS\_NOT\_NULL**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. Not Supported by connector for the operator: NUMERIC, DATE, TIME, TIMESTAMP, VARBYTE, BYTE, BLOB, CLOB, JSON

#### **Redshift**

**Supported Operators and Data Types**

1. **EQUALS**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. GDQ not supported Data Types:
      1. Numeric Types:\
         INTEGER, BIGINT, DECIMAL, FLOAT, NT2, INT4, INT8, NUMERIC, FLOAT4, FLOAT8\
         (Enclosing numeric literals in quotes can lead to conversion issues unless Redshift performs an implicit cast, which isn’t guaranteed.)
      2. Date/Time Types:\
         DATE, TIMESTAMP, TIME.\
         (These require precise literal formatting and conversion logic that the current builder does not implement.)
      3. Boolean Types:\
         BOOLEAN\
         (There is no specific handling for true/false values, so conditions on boolean columns may not work as intended.)
      4. Binary or Complex Types:\
         BINARY, VARBYTE, and any other non-string types\
         (These need special functions or conversions that are not part of this implementation.)\
         Not Supported by connector for the operator: BLOB, CLOB, JSON
   3. Sample Query:\
      SELECT \* FROM "ovaledgedb"."salesinfo"."sales\_data" WHERE "id" = 1;
   4. Comments: In Redshift, the FLOAT and DOUBLE data types are used to represent approximate numeric values. The FLOAT type is a single-precision floating-point number stored in 4 bytes, while the DOUBLE type is a double-precision floating-point number stored in 8 bytes. Due to their approximate nature and limited precision, these types can lead to rounding errors when the number of digits exceeds their precision limits. Consequently, using the equality operator (=) for comparisons may not yield accurate results, as seemingly identical values might differ slightly in their binary representation.
2. **LIKE**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. Not Supported by connector for the operator: Numeric types, BOOLEAN, DATE, TIMESTAMP
   3. Sample Query:\
      SELECT \* FROM "ovaledgedb"."salesinfo"."sales\_data" WHERE "varchar\_col" LIKE 'Sample%';
3. **ILIKE**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. Not Supported by connector for the operator: NUMERIC, FLOAT types, BOOLEAN, TIMESTAMP, DATE
   3. Sample Query:\
      SELECT \* FROM "ovaledgedb"."salesinfo"."sales\_data" WHERE "varchar\_col" ILIKE 'Sample%';
4. **IS\_NOT\_EMPTY / IS\_EMPTY**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. Not Supported by connector for the operator: NUMERIC, FLOAT types, BOOLEAN, TIMESTAMP, DATE
5. **ILIKE**
   1. GDQ Supported Data Types: VARCHAR, CHAR, NUMERIC, FLOAT types, BOOLEAN, TIMESTAMP, DATE
   2. Not Supported by connector for the operator:&#x20;
6. **IS\_NULL / IS\_NOT\_NULL**
   1. GDQ Supported Data Types: VARCHAR, CHAR
   2. Not Supported by connector for the operator: NUMERIC, FLOAT types, BOOLEAN, TIMESTAMP, DATE

#### **SalesForce**

**Supported Operators and Data Types**

1. **EQUALS**
   1. GDQ Supported Data Types: ID, Reference, String, Picklist, Textarea, URL, Phone
   2. GDQ not supported Data Types: Boolean, Double, Int, Datetime, Date, currency
   3. Data Types with No Test Data Available: Address, Percent, Multi-picklist, email\
      (The above mentioned data types may or maynot work as we don’t have the test data for testing)
2. **LIKE**
   1. GDQ Supported Data Types: String, Picklist, Textarea, URL, Phone
   2. GDQ not supported Data Types: Boolean, Double, Int, Datetime, Date, currency, ID&#x20;
   3. Data Types with No Test Data Available: Address, Percent, Multi-picklist, email\
      (The above mentioned data types may or maynot work as we don’t have the test data for testing)
3. **IS EMPTY**
   1. GDQ Supported Data Types: ID, Reference, String, Picklist, Textarea, URL, Phone
   2. GDQ not supported Data Types: Boolean, Double, Int, Datetime, Date, currency
   3. Data Types with No Test Data Available: Address, Percent, Multi-picklist, email\
      (The above mentioned data types may or maynot work as we don’t have the test data for testing)
4. **IS NOT EMPTY**
   1. GDQ Supported Data Types: ID, Reference, String, Picklist, Textarea, URL, Phone
   2. GDQ not supported Data Types: Boolean, Double, Int, Datetime, Date, currency
   3. Data Types with No Test Data Available: Address, Percent, Multi-picklist, email\
      (The above mentioned data types may or maynot work as we don’t have the test data for testing)
5. **IS NULL**
   1. GDQ Supported Data Types: ID, Reference, String, Picklist, Textarea, URL, Phone
   2. GDQ not supported Data Types: Boolean, Double, Int, Datetime, Date, currency
   3. Data Types with No Test Data Available: Address, Percent, Multi-picklist, email\
      (The above mentioned data types may or maynot work as we don’t have the test data for testing)
6. **IS NOT NULL**\
   Currenlty not supporting for any data type

***

Copyright © 2025, OvalEdge LLC, Peachtree Corners, GA USA
