Merge lp:~oontvoo/akiban-sql-parser/mediumint_parser into lp:~akiban-technologies/akiban-sql-parser/trunk

Proposed by Vy Nguyen
Status: Merged
Approved by: Thomas Jones-Low
Approved revision: 287
Merged at revision: 284
Proposed branch: lp:~oontvoo/akiban-sql-parser/mediumint_parser
Merge into: lp:~akiban-technologies/akiban-sql-parser/trunk
Diff against target: 189 lines (+54/-1)
5 files modified
src/main/java/com/akiban/sql/types/DataTypeDescriptor.java (+6/-0)
src/main/java/com/akiban/sql/types/TypeId.java (+24/-1)
src/main/javacc/SQLGrammar.jj (+10/-0)
src/test/resources/com/akiban/sql/parser/create-table-mediumint-1.expected (+13/-0)
src/test/resources/com/akiban/sql/parser/create-table-mediumint-1.sql (+1/-0)
To merge this branch: bzr merge lp:~oontvoo/akiban-sql-parser/mediumint_parser
Reviewer Review Type Date Requested Status
Thomas Jones-Low Approve
Review via email: mp+143208@code.launchpad.net

Description of the change

support simple MEDIUMINT

To post a comment you must log in.
285. By Vy Nguyen
286. By Vy Nguyen

add MEDIUMINT_UNSIGNED

287. By Vy Nguyen

more helpful error msg

Revision history for this message
Vy Nguyen (oontvoo) wrote :

ping

Revision history for this message
Thomas Jones-Low (tjoneslo) wrote :

Look good to me.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/main/java/com/akiban/sql/types/DataTypeDescriptor.java'
2--- src/main/java/com/akiban/sql/types/DataTypeDescriptor.java 2012-11-07 17:49:31 +0000
3+++ src/main/java/com/akiban/sql/types/DataTypeDescriptor.java 2013-01-19 23:03:21 +0000
4@@ -65,6 +65,12 @@
5 {
6 public static final int MAXIMUM_WIDTH_UNKNOWN = -1;
7
8+ public static final DataTypeDescriptor MEDIUMINT =
9+ new DataTypeDescriptor(TypeId.MEDIUMINT_ID, true);
10+
11+ public static final DataTypeDescriptor MEDIUMINT_NOT_NULL =
12+ MEDIUMINT.getNullabilityType(true);
13+
14 /**
15 * Runtime INTEGER type that is nullable.
16 */
17
18=== modified file 'src/main/java/com/akiban/sql/types/TypeId.java'
19--- src/main/java/com/akiban/sql/types/TypeId.java 2012-11-07 17:49:31 +0000
20+++ src/main/java/com/akiban/sql/types/TypeId.java 2013-01-19 23:03:21 +0000
21@@ -160,6 +160,7 @@
22 public static final String LONGVARBIT_NAME = "LONG VARCHAR FOR BIT DATA";
23 public static final String TINYINT_NAME = "TINYINT";
24 public static final String SMALLINT_NAME = "SMALLINT";
25+ public static final String MEDIUMINT_NAME = "MEDIUMINT";
26 public static final String INTEGER_NAME = "INTEGER";
27 public static final String INT_NAME = "INT";
28 public static final String LONGINT_NAME = "BIGINT";
29@@ -219,6 +220,7 @@
30 // MySQL compatible types.
31 public static final String TINYINT_UNSIGNED_NAME = "TINYINT UNSIGNED";
32 public static final String SMALLINT_UNSIGNED_NAME = "SMALLINT UNSIGNED";
33+ public static final String MEDIUMINT_UNSIGNED_NAME = "MEDIUMINT UNSIGNED";
34 public static final String INTEGER_UNSIGNED_NAME = "INTEGER UNSIGNED";
35 public static final String INT_UNSIGNED_NAME = "INT UNSIGNED";
36 public static final String LONGINT_UNSIGNED_NAME = "BIGINT UNSIGNED";
37@@ -288,10 +290,12 @@
38 public static final int ROW_MULTISET_TYPE_ID_IMPL = 23;
39 public static final int INTERVAL_YEAR_MONTH_ID = 24;
40 public static final int INTERVAL_DAY_SECOND_ID = 25;
41+ public static final int MEDIUMINT_ID = 26;
42 }
43
44 public static final TypeId BOOLEAN_ID = new TypeId(FormatIds.BOOLEAN_TYPE_ID);
45 public static final TypeId SMALLINT_ID = new TypeId(FormatIds.SMALLINT_TYPE_ID);
46+ public static final TypeId MEDIUMINT_ID = new TypeId(FormatIds.MEDIUMINT_ID);
47 public static final TypeId INTEGER_ID = new TypeId(FormatIds.INT_TYPE_ID);
48 public static final TypeId CHAR_ID = new TypeId(FormatIds.CHAR_TYPE_ID);
49 public static final TypeId TINYINT_ID = new TypeId(FormatIds.TINYINT_TYPE_ID);
50@@ -328,6 +332,7 @@
51 public static final TypeId INTERVAL_MINUTE_SECOND_ID = new TypeId(FormatIds.INTERVAL_DAY_SECOND_ID, INTERVAL_MINUTE_SECOND_NAME);
52
53 public static final TypeId SMALLINT_UNSIGNED_ID = new TypeId(FormatIds.SMALLINT_TYPE_ID, true);
54+ public static final TypeId MEDIUMINT_UNSIGNED_ID = new TypeId(FormatIds.MEDIUMINT_ID, true);
55 public static final TypeId INTEGER_UNSIGNED_ID = new TypeId(FormatIds.INT_TYPE_ID, true);
56 public static final TypeId TINYINT_UNSIGNED_ID = new TypeId(FormatIds.TINYINT_TYPE_ID, true);
57 public static final TypeId BIGINT_UNSIGNED_ID = new TypeId(FormatIds.LONGINT_TYPE_ID, true);
58@@ -341,6 +346,7 @@
59 private static final TypeId[] ALL_BUILTIN_TYPE_IDS = {
60 BOOLEAN_ID,
61 SMALLINT_ID,
62+ MEDIUMINT_ID,
63 INTEGER_ID,
64 CHAR_ID,
65 TINYINT_ID,
66@@ -624,6 +630,8 @@
67 if (SQLTypeName.equals(FLOAT_NAME)) {
68 return REAL_ID;
69 }
70+ if (SQLTypeName.equals(MEDIUMINT_NAME))
71+ return MEDIUMINT_ID;
72 if (SQLTypeName.equals(INTEGER_NAME) ||
73 SQLTypeName.equals(INT_NAME)) {
74 return INTEGER_ID;
75@@ -883,6 +891,18 @@
76 isFloatingPointTypeId = true;
77 break;
78
79+ case FormatIds.MEDIUMINT_ID:
80+ schemaName = null;
81+ unqualifiedName = TypeId.MEDIUMINT_NAME;
82+ JDBCTypeId = Types.OTHER;
83+ maxPrecision = TypeId.INT_PRECISION;
84+ maxScale = TypeId.INT_SCALE;
85+ typePrecedence = INT_PRECEDENCE;
86+ javaTypeName = "java.lang.Integer";
87+ maxMaxWidth = TypeId.INT_MAXWIDTH;
88+ isNumericTypeId = true;
89+ break;
90+
91 case FormatIds.INT_TYPE_ID:
92 schemaName = null;
93 unqualifiedName = TypeId.INTEGER_NAME;
94@@ -1136,8 +1156,11 @@
95 case FormatIds.TINYINT_TYPE_ID:
96 unqualifiedName = TypeId.TINYINT_UNSIGNED_NAME;
97 break;
98+ case FormatIds.MEDIUMINT_ID:
99+ unqualifiedName = TypeId.MEDIUMINT_UNSIGNED_NAME;
100+ break;
101 default:
102- assert false;
103+ assert false : "unknown formatId: " + formatId;
104 }
105 }
106 }
107
108=== modified file 'src/main/javacc/SQLGrammar.jj'
109--- src/main/javacc/SQLGrammar.jj 2013-01-17 21:09:49 +0000
110+++ src/main/javacc/SQLGrammar.jj 2013-01-19 23:03:21 +0000
111@@ -497,6 +497,7 @@
112 case CHAR:
113 case VARCHAR:
114 case INTEGER:
115+ case MEDIUMINT:
116 case INT:
117 case SMALLINT:
118 case LONGINT:
119@@ -1049,6 +1050,7 @@
120 case DECIMAL:
121 case DEC:
122 case INTEGER:
123+ case MEDIUMINT:
124 case INT:
125 case SMALLINT:
126 case LONGINT:
127@@ -2147,6 +2149,7 @@
128 | <INSERT: "insert">
129 | <INT: "int">
130 | <INTEGER: "integer">
131+| <MEDIUMINT: "mediumint">
132 | <INTERSECT: "intersect">
133 | <INTO: "into">
134 | <IS: "is">
135@@ -4135,6 +4138,8 @@
136 }
137 {
138 (
139+ <MEDIUMINT> {typeDescriptor = DataTypeDescriptor.MEDIUMINT;}
140+|
141 typeDescriptor = exactNumericType()
142 |
143 typeDescriptor = approximateNumericType()
144@@ -4208,6 +4213,10 @@
145 {
146 return DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.INTEGER);
147 }
148+ <MEDIUMINT>
149+ {
150+ return DataTypeDescriptor.MEDIUMINT;
151+ }
152 |
153 <SMALLINT>
154 {
155@@ -14574,6 +14583,7 @@
156 | tok = <INSERT>
157 | tok = <INT>
158 | tok = <INTEGER>
159+| tok = <MEDIUMINT>
160 | tok = <INTERSECT>
161 | tok = <INTERVAL>
162 | tok = <INTO>
163
164=== added directory 'src/main/resources'
165=== added file 'src/test/resources/com/akiban/sql/parser/create-table-mediumint-1.expected'
166--- src/test/resources/com/akiban/sql/parser/create-table-mediumint-1.expected 1970-01-01 00:00:00 +0000
167+++ src/test/resources/com/akiban/sql/parser/create-table-mediumint-1.expected 2013-01-19 23:03:21 +0000
168@@ -0,0 +1,13 @@
169+com.akiban.sql.parser.CreateTableNode@44ee06be
170+name: t
171+statementType: CREATE TABLE
172+lockGranularity: R
173+existenceCheck: NO_CONDITION
174+tableElementList:
175+ com.akiban.sql.parser.TableElementList@66fcc74c
176+
177+ [0]:
178+ com.akiban.sql.parser.ColumnDefinitionNode@5d808366
179+ type: MEDIUMINT
180+ name: c
181+ elementType: null
182\ No newline at end of file
183
184=== added file 'src/test/resources/com/akiban/sql/parser/create-table-mediumint-1.sql'
185--- src/test/resources/com/akiban/sql/parser/create-table-mediumint-1.sql 1970-01-01 00:00:00 +0000
186+++ src/test/resources/com/akiban/sql/parser/create-table-mediumint-1.sql 2013-01-19 23:03:21 +0000
187@@ -0,0 +1,1 @@
188+CREATE TABLE T (c MEDIUMINT)
189\ No newline at end of file

Subscribers

People subscribed via source and target branches

to all changes: