We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Agate type inference is too clever
### Describe the bug
We’re trying to set a value from a {% call statement %} and within the call, one line is SELECT 0 AS my_value...and it then treats it as a boolean (false) in the returned values. 

The same happens if we try SELECT 1 AS my_value, but as soon as we do SELECT 2 AS my_value it treats it like a number (as it should).

### Steps To Reproduce
Create a call statement that selects 0, or 1. false, and true respectively will be returned.

### Expected behavior
0, or 1 to be returned, as integers.

### Screenshots and log output

### System information
**Which database are you using dbt with?**
- [ ] postgres
- [ ] redshift
- [x] bigquery
- [ ] snowflake
- [ ] other (specify: ____________)


**The output of `dbt --version`:**
```
installed version: 0.15.0-a1
  latest version: 0.14.2
Your version of dbt is ahead of the latest release!
```

FYI, we run a fork, but that shouldn't have affected anything here.

**The operating system you're using:**

Mojave

**The output of `python --version`:**

Python 3.7.1

### Additional context
We'd love a quick fix for this, even if it's ugly!


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `core/dbt/clients/agate_helper.py`
Content:
```
1 from codecs import BOM_UTF8
2 
3 import agate
4 import json
5 
6 
7 BOM = BOM_UTF8.decode('utf-8')  # '\ufeff'
8 
9 DEFAULT_TYPE_TESTER = agate.TypeTester(types=[
10     agate.data_types.Number(null_values=('null', '')),
11     agate.data_types.TimeDelta(null_values=('null', '')),
12     agate.data_types.Date(null_values=('null', '')),
13     agate.data_types.DateTime(null_values=('null', '')),
14     agate.data_types.Boolean(true_values=('true',),
15                              false_values=('false',),
16                              null_values=('null', '')),
17     agate.data_types.Text(null_values=('null', ''))
18 ])
19 
20 
21 def table_from_data(data, column_names):
22     "Convert list of dictionaries into an Agate table"
23 
24     # The agate table is generated from a list of dicts, so the column order
25     # from `data` is not preserved. We can use `select` to reorder the columns
26     #
27     # If there is no data, create an empty table with the specified columns
28 
29     if len(data) == 0:
30         return agate.Table([], column_names=column_names)
31     else:
32         table = agate.Table.from_object(data, column_types=DEFAULT_TYPE_TESTER)
33         return table.select(column_names)
34 
35 
36 def table_from_data_flat(data, column_names):
37     "Convert list of dictionaries into an Agate table"
38 
39     rows = []
40     for _row in data:
41         row = []
42         for value in list(_row.values()):
43             if isinstance(value, (dict, list, tuple)):
44                 row.append(json.dumps(value))
45             else:
46                 row.append(value)
47         rows.append(row)
48 
49     return agate.Table(rows, column_names)
50 
51 
52 def empty_table():
53     "Returns an empty Agate table. To be used in place of None"
54 
55     return agate.Table(rows=[])
56 
57 
58 def as_matrix(table):
59     "Return an agate table as a matrix of data sans columns"
60 
61     return [r.values() for r in table.rows.values()]
62 
63 
64 def from_csv(abspath):
65     with open(abspath, encoding='utf-8') as fp:
66         if fp.read(1) != BOM:
67             fp.seek(0)
68         return agate.Table.from_csv(fp, column_types=DEFAULT_TYPE_TESTER)
69
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/core/dbt/clients/agate_helper.py b/core/dbt/clients/agate_helper.py
--- a/core/dbt/clients/agate_helper.py
+++ b/core/dbt/clients/agate_helper.py
@@ -46,7 +46,7 @@
                 row.append(value)
         rows.append(row)
 
-    return agate.Table(rows, column_names)
+    return agate.Table(rows, column_names, column_types=DEFAULT_TYPE_TESTER)
 
 
 def empty_table():

{"golden_diff": "diff --git a/core/dbt/clients/agate_helper.py b/core/dbt/clients/agate_helper.py\n--- a/core/dbt/clients/agate_helper.py\n+++ b/core/dbt/clients/agate_helper.py\n@@ -46,7 +46,7 @@\n                 row.append(value)\n         rows.append(row)\n \n-    return agate.Table(rows, column_names)\n+    return agate.Table(rows, column_names, column_types=DEFAULT_TYPE_TESTER)\n \n \n def empty_table():\n", "issue": "Agate type inference is too clever\n### Describe the bug\r\nWe\u2019re trying to set a value from a {% call statement %} and within the call, one line is SELECT 0 AS my_value...and it then treats it as a boolean (false) in the returned values. \r\n\r\nThe same happens if we try SELECT 1 AS my_value, but as soon as we do SELECT 2 AS my_value it treats it like a number (as it should).\r\n\r\n### Steps To Reproduce\r\nCreate a call statement that selects 0, or 1. false, and true respectively will be returned.\r\n\r\n### Expected behavior\r\n0, or 1 to be returned, as integers.\r\n\r\n### Screenshots and log output\r\n\r\n### System information\r\n**Which database are you using dbt with?**\r\n- [ ] postgres\r\n- [ ] redshift\r\n- [x] bigquery\r\n- [ ] snowflake\r\n- [ ] other (specify: ____________)\r\n\r\n\r\n**The output of `dbt --version`:**\r\n```\r\ninstalled version: 0.15.0-a1\r\n  latest version: 0.14.2\r\nYour version of dbt is ahead of the latest release!\r\n```\r\n\r\nFYI, we run a fork, but that shouldn't have affected anything here.\r\n\r\n**The operating system you're using:**\r\n\r\nMojave\r\n\r\n**The output of `python --version`:**\r\n\r\nPython 3.7.1\r\n\r\n### Additional context\r\nWe'd love a quick fix for this, even if it's ugly!\r\n\n", "before_files": [{"content": "from codecs import BOM_UTF8\n\nimport agate\nimport json\n\n\nBOM = BOM_UTF8.decode('utf-8')  # '\\ufeff'\n\nDEFAULT_TYPE_TESTER = agate.TypeTester(types=[\n    agate.data_types.Number(null_values=('null', '')),\n    agate.data_types.TimeDelta(null_values=('null', '')),\n    agate.data_types.Date(null_values=('null', '')),\n    agate.data_types.DateTime(null_values=('null', '')),\n    agate.data_types.Boolean(true_values=('true',),\n                             false_values=('false',),\n                             null_values=('null', '')),\n    agate.data_types.Text(null_values=('null', ''))\n])\n\n\ndef table_from_data(data, column_names):\n    \"Convert list of dictionaries into an Agate table\"\n\n    # The agate table is generated from a list of dicts, so the column order\n    # from `data` is not preserved. We can use `select` to reorder the columns\n    #\n    # If there is no data, create an empty table with the specified columns\n\n    if len(data) == 0:\n        return agate.Table([], column_names=column_names)\n    else:\n        table = agate.Table.from_object(data, column_types=DEFAULT_TYPE_TESTER)\n        return table.select(column_names)\n\n\ndef table_from_data_flat(data, column_names):\n    \"Convert list of dictionaries into an Agate table\"\n\n    rows = []\n    for _row in data:\n        row = []\n        for value in list(_row.values()):\n            if isinstance(value, (dict, list, tuple)):\n                row.append(json.dumps(value))\n            else:\n                row.append(value)\n        rows.append(row)\n\n    return agate.Table(rows, column_names)\n\n\ndef empty_table():\n    \"Returns an empty Agate table. To be used in place of None\"\n\n    return agate.Table(rows=[])\n\n\ndef as_matrix(table):\n    \"Return an agate table as a matrix of data sans columns\"\n\n    return [r.values() for r in table.rows.values()]\n\n\ndef from_csv(abspath):\n    with open(abspath, encoding='utf-8') as fp:\n        if fp.read(1) != BOM:\n            fp.seek(0)\n        return agate.Table.from_csv(fp, column_types=DEFAULT_TYPE_TESTER)\n", "path": "core/dbt/clients/agate_helper.py"}], "after_files": [{"content": "from codecs import BOM_UTF8\n\nimport agate\nimport json\n\n\nBOM = BOM_UTF8.decode('utf-8')  # '\\ufeff'\n\nDEFAULT_TYPE_TESTER = agate.TypeTester(types=[\n    agate.data_types.Number(null_values=('null', '')),\n    agate.data_types.TimeDelta(null_values=('null', '')),\n    agate.data_types.Date(null_values=('null', '')),\n    agate.data_types.DateTime(null_values=('null', '')),\n    agate.data_types.Boolean(true_values=('true',),\n                             false_values=('false',),\n                             null_values=('null', '')),\n    agate.data_types.Text(null_values=('null', ''))\n])\n\n\ndef table_from_data(data, column_names):\n    \"Convert list of dictionaries into an Agate table\"\n\n    # The agate table is generated from a list of dicts, so the column order\n    # from `data` is not preserved. We can use `select` to reorder the columns\n    #\n    # If there is no data, create an empty table with the specified columns\n\n    if len(data) == 0:\n        return agate.Table([], column_names=column_names)\n    else:\n        table = agate.Table.from_object(data, column_types=DEFAULT_TYPE_TESTER)\n        return table.select(column_names)\n\n\ndef table_from_data_flat(data, column_names):\n    \"Convert list of dictionaries into an Agate table\"\n\n    rows = []\n    for _row in data:\n        row = []\n        for value in list(_row.values()):\n            if isinstance(value, (dict, list, tuple)):\n                row.append(json.dumps(value))\n            else:\n                row.append(value)\n        rows.append(row)\n\n    return agate.Table(rows, column_names, column_types=DEFAULT_TYPE_TESTER)\n\n\ndef empty_table():\n    \"Returns an empty Agate table. To be used in place of None\"\n\n    return agate.Table(rows=[])\n\n\ndef as_matrix(table):\n    \"Return an agate table as a matrix of data sans columns\"\n\n    return [r.values() for r in table.rows.values()]\n\n\ndef from_csv(abspath):\n    with open(abspath, encoding='utf-8') as fp:\n        if fp.read(1) != BOM:\n            fp.seek(0)\n        return agate.Table.from_csv(fp, column_types=DEFAULT_TYPE_TESTER)\n", "path": "core/dbt/clients/agate_helper.py"}]}