~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/field.cc

  • Committer: Monty Taylor
  • Date: 2008-10-20 20:10:35 UTC
  • mto: This revision was merged to the branch mainline in revision 531.
  • Revision ID: monty@inaugust.com-20081020201035-zinuds3179pe1ofw
Fixed the TINY=1 bit.

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
 
57
57
static enum_field_types field_types_merge_rules [FIELDTYPE_NUM][FIELDTYPE_NUM]=
58
58
{
59
 
  /* DRIZZLE_TYPE_DECIMAL -> */
60
 
  {
61
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
62
 
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_NEWDECIMAL,
63
 
  //DRIZZLE_TYPE_LONG
64
 
    DRIZZLE_TYPE_NEWDECIMAL,
65
 
  //DRIZZLE_TYPE_DOUBLE
66
 
    DRIZZLE_TYPE_DOUBLE,
67
 
  //DRIZZLE_TYPE_NULL         DRIZZLE_TYPE_TIMESTAMP
68
 
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_VARCHAR,
69
 
  //DRIZZLE_TYPE_LONGLONG
70
 
    DRIZZLE_TYPE_NEWDECIMAL,
71
 
  //DRIZZLE_TYPE_TIME
72
 
    DRIZZLE_TYPE_VARCHAR,
73
 
  //DRIZZLE_TYPE_DATETIME
74
 
    DRIZZLE_TYPE_VARCHAR,
75
 
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
76
 
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
77
 
  // DRIZZLE_TYPE_VIRTUAL
78
 
    DRIZZLE_TYPE_VIRTUAL,
79
 
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
80
 
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_VARCHAR,
81
 
  //DRIZZLE_TYPE_BLOB
82
 
    DRIZZLE_TYPE_BLOB,
83
 
  },
84
59
  /* DRIZZLE_TYPE_TINY -> */
85
60
  {
86
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
87
 
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_TINY,
 
61
  //DRIZZLE_TYPE_TINY
 
62
    DRIZZLE_TYPE_TINY,
88
63
  //DRIZZLE_TYPE_LONG
89
64
    DRIZZLE_TYPE_LONG,
90
65
  //DRIZZLE_TYPE_DOUBLE
99
74
    DRIZZLE_TYPE_VARCHAR,
100
75
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
101
76
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
102
 
  // DRIZZLE_TYPE_VIRTUAL
 
77
  //DRIZZLE_TYPE_VIRTUAL
103
78
    DRIZZLE_TYPE_VIRTUAL,
104
79
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
105
80
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_VARCHAR,
108
83
  },
109
84
  /* DRIZZLE_TYPE_LONG -> */
110
85
  {
111
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
112
 
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_LONG,
 
86
  //DRIZZLE_TYPE_TINY
 
87
    DRIZZLE_TYPE_LONG,
113
88
  //DRIZZLE_TYPE_LONG
114
89
    DRIZZLE_TYPE_LONG,
115
90
  //DRIZZLE_TYPE_DOUBLE
124
99
    DRIZZLE_TYPE_VARCHAR,
125
100
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
126
101
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
127
 
  // DRIZZLE_TYPE_VIRTUAL
 
102
  //DRIZZLE_TYPE_VIRTUAL
128
103
    DRIZZLE_TYPE_VIRTUAL,
129
104
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
130
105
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_VARCHAR,
133
108
  },
134
109
  /* DRIZZLE_TYPE_DOUBLE -> */
135
110
  {
136
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
137
 
    DRIZZLE_TYPE_DOUBLE,      DRIZZLE_TYPE_DOUBLE,
 
111
  //DRIZZLE_TYPE_TINY
 
112
    DRIZZLE_TYPE_DOUBLE,
138
113
  //DRIZZLE_TYPE_LONG
139
114
    DRIZZLE_TYPE_DOUBLE,
140
115
  //DRIZZLE_TYPE_DOUBLE
149
124
    DRIZZLE_TYPE_VARCHAR,
150
125
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
151
126
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
152
 
  // DRIZZLE_TYPE_VIRTUAL
 
127
  //DRIZZLE_TYPE_VIRTUAL
153
128
    DRIZZLE_TYPE_VIRTUAL,
154
129
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
155
130
    DRIZZLE_TYPE_DOUBLE,      DRIZZLE_TYPE_VARCHAR,
158
133
  },
159
134
  /* DRIZZLE_TYPE_NULL -> */
160
135
  {
161
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
162
 
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_TINY,
 
136
  //DRIZZLE_TYPE_TINY
 
137
    DRIZZLE_TYPE_TINY,
163
138
  //DRIZZLE_TYPE_LONG
164
139
    DRIZZLE_TYPE_LONG,
165
140
  //DRIZZLE_TYPE_DOUBLE
174
149
    DRIZZLE_TYPE_DATETIME,
175
150
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
176
151
    DRIZZLE_TYPE_NEWDATE,     DRIZZLE_TYPE_VARCHAR,
177
 
  // DRIZZLE_TYPE_VIRTUAL
 
152
  //DRIZZLE_TYPE_VIRTUAL
178
153
    DRIZZLE_TYPE_VIRTUAL,
179
154
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
180
155
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_ENUM,
183
158
  },
184
159
  /* DRIZZLE_TYPE_TIMESTAMP -> */
185
160
  {
186
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
187
 
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
 
161
  //DRIZZLE_TYPE_TINY
 
162
    DRIZZLE_TYPE_VARCHAR,
188
163
  //DRIZZLE_TYPE_LONG
189
164
    DRIZZLE_TYPE_VARCHAR,
190
165
  //DRIZZLE_TYPE_DOUBLE
199
174
    DRIZZLE_TYPE_DATETIME,
200
175
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
201
176
    DRIZZLE_TYPE_NEWDATE,     DRIZZLE_TYPE_VARCHAR,
202
 
  // DRIZZLE_TYPE_VIRTUAL
 
177
  //DRIZZLE_TYPE_VIRTUAL
203
178
    DRIZZLE_TYPE_VIRTUAL,
204
179
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
205
180
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
208
183
  },
209
184
  /* DRIZZLE_TYPE_LONGLONG -> */
210
185
  {
211
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
212
 
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_LONGLONG,
 
186
  //DRIZZLE_TYPE_TINY
 
187
    DRIZZLE_TYPE_LONGLONG,
213
188
  //DRIZZLE_TYPE_LONG
214
189
    DRIZZLE_TYPE_LONGLONG,
215
190
  //DRIZZLE_TYPE_DOUBLE
224
199
    DRIZZLE_TYPE_VARCHAR,
225
200
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
226
201
    DRIZZLE_TYPE_NEWDATE,     DRIZZLE_TYPE_VARCHAR,
227
 
  // DRIZZLE_TYPE_VIRTUAL
 
202
  //DRIZZLE_TYPE_VIRTUAL
228
203
    DRIZZLE_TYPE_VIRTUAL,
229
204
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
230
205
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_VARCHAR,
233
208
  },
234
209
  /* DRIZZLE_TYPE_TIME -> */
235
210
  {
236
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
237
 
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
 
211
  //DRIZZLE_TYPE_TINY
 
212
    DRIZZLE_TYPE_VARCHAR,
238
213
  //DRIZZLE_TYPE_LONG
239
214
    DRIZZLE_TYPE_VARCHAR,
240
215
  //DRIZZLE_TYPE_DOUBLE
249
224
    DRIZZLE_TYPE_DATETIME,
250
225
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
251
226
    DRIZZLE_TYPE_NEWDATE,     DRIZZLE_TYPE_VARCHAR,
252
 
  // DRIZZLE_TYPE_VIRTUAL
 
227
  //DRIZZLE_TYPE_VIRTUAL
253
228
    DRIZZLE_TYPE_VIRTUAL,
254
229
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
255
230
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
258
233
  },
259
234
  /* DRIZZLE_TYPE_DATETIME -> */
260
235
  {
261
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
262
 
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
 
236
  //DRIZZLE_TYPE_TINY
 
237
    DRIZZLE_TYPE_VARCHAR,
263
238
  //DRIZZLE_TYPE_LONG
264
239
    DRIZZLE_TYPE_VARCHAR,
265
240
  //DRIZZLE_TYPE_DOUBLE
274
249
    DRIZZLE_TYPE_DATETIME,
275
250
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
276
251
    DRIZZLE_TYPE_NEWDATE,     DRIZZLE_TYPE_VARCHAR,
277
 
  // DRIZZLE_TYPE_VIRTUAL
 
252
  //DRIZZLE_TYPE_VIRTUAL
278
253
    DRIZZLE_TYPE_VIRTUAL,
279
254
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
280
255
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
283
258
  },
284
259
  /* DRIZZLE_TYPE_NEWDATE -> */
285
260
  {
286
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
287
 
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
 
261
  //DRIZZLE_TYPE_TINY
 
262
    DRIZZLE_TYPE_VARCHAR,
288
263
  //DRIZZLE_TYPE_LONG
289
264
    DRIZZLE_TYPE_VARCHAR,
290
265
  //DRIZZLE_TYPE_DOUBLE
299
274
    DRIZZLE_TYPE_DATETIME,
300
275
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
301
276
    DRIZZLE_TYPE_NEWDATE,     DRIZZLE_TYPE_VARCHAR,
302
 
  // DRIZZLE_TYPE_VIRTUAL
 
277
  //DRIZZLE_TYPE_VIRTUAL
303
278
    DRIZZLE_TYPE_VIRTUAL,
304
279
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
305
280
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
308
283
  },
309
284
  /* DRIZZLE_TYPE_VARCHAR -> */
310
285
  {
311
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
312
 
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
 
286
  //DRIZZLE_TYPE_TINY
 
287
    DRIZZLE_TYPE_VARCHAR,
313
288
  //DRIZZLE_TYPE_LONG
314
289
    DRIZZLE_TYPE_VARCHAR,
315
290
  //DRIZZLE_TYPE_DOUBLE
324
299
    DRIZZLE_TYPE_VARCHAR,
325
300
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
326
301
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
327
 
  // DRIZZLE_TYPE_VIRTUAL
 
302
  //DRIZZLE_TYPE_VIRTUAL
328
303
    DRIZZLE_TYPE_VIRTUAL,
329
304
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
330
305
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
333
308
  },
334
309
  /* DRIZZLE_TYPE_VIRTUAL -> */
335
310
  {
336
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
337
 
    DRIZZLE_TYPE_VIRTUAL,  DRIZZLE_TYPE_VIRTUAL,
 
311
  //DRIZZLE_TYPE_TINY
 
312
    DRIZZLE_TYPE_VIRTUAL,
338
313
  //DRIZZLE_TYPE_LONG
339
314
    DRIZZLE_TYPE_VIRTUAL,
340
315
  //DRIZZLE_TYPE_DOUBLE
349
324
    DRIZZLE_TYPE_VIRTUAL,
350
325
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
351
326
    DRIZZLE_TYPE_VIRTUAL,     DRIZZLE_TYPE_VIRTUAL,
352
 
  // DRIZZLE_TYPE_VIRTUAL
 
327
  //DRIZZLE_TYPE_VIRTUAL
353
328
    DRIZZLE_TYPE_VIRTUAL,
354
329
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
355
330
    DRIZZLE_TYPE_VIRTUAL,  DRIZZLE_TYPE_VIRTUAL,
358
333
  },
359
334
  /* DRIZZLE_TYPE_NEWDECIMAL -> */
360
335
  {
361
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
362
 
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_NEWDECIMAL,
 
336
  //DRIZZLE_TYPE_TINY
 
337
    DRIZZLE_TYPE_NEWDECIMAL,
363
338
  //DRIZZLE_TYPE_LONG
364
339
    DRIZZLE_TYPE_NEWDECIMAL,
365
340
  //DRIZZLE_TYPE_DOUBLE
374
349
    DRIZZLE_TYPE_VARCHAR,
375
350
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
376
351
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
377
 
  // DRIZZLE_TYPE_VIRTUAL
 
352
  //DRIZZLE_TYPE_VIRTUAL
378
353
    DRIZZLE_TYPE_VIRTUAL,
379
354
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
380
355
    DRIZZLE_TYPE_NEWDECIMAL,  DRIZZLE_TYPE_VARCHAR,
383
358
  },
384
359
  /* DRIZZLE_TYPE_ENUM -> */
385
360
  {
386
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
387
 
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
 
361
  //DRIZZLE_TYPE_TINY
 
362
    DRIZZLE_TYPE_VARCHAR,
388
363
  //DRIZZLE_TYPE_LONG
389
364
    DRIZZLE_TYPE_VARCHAR,
390
365
  //DRIZZLE_TYPE_DOUBLE
399
374
    DRIZZLE_TYPE_VARCHAR,
400
375
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
401
376
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
402
 
  // DRIZZLE_TYPE_VIRTUAL
 
377
  //DRIZZLE_TYPE_VIRTUAL
403
378
    DRIZZLE_TYPE_VIRTUAL,
404
379
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
405
380
    DRIZZLE_TYPE_VARCHAR,     DRIZZLE_TYPE_VARCHAR,
408
383
  },
409
384
  /* DRIZZLE_TYPE_BLOB -> */
410
385
  {
411
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
412
 
    DRIZZLE_TYPE_BLOB,        DRIZZLE_TYPE_BLOB,
 
386
  //DRIZZLE_TYPE_TINY
 
387
    DRIZZLE_TYPE_BLOB,
413
388
  //DRIZZLE_TYPE_LONG
414
389
    DRIZZLE_TYPE_BLOB,
415
390
  //DRIZZLE_TYPE_DOUBLE
424
399
    DRIZZLE_TYPE_BLOB,
425
400
  //DRIZZLE_TYPE_NEWDATE      DRIZZLE_TYPE_VARCHAR
426
401
    DRIZZLE_TYPE_BLOB,        DRIZZLE_TYPE_BLOB,
427
 
  // DRIZZLE_TYPE_VIRTUAL
 
402
  //DRIZZLE_TYPE_VIRTUAL
428
403
    DRIZZLE_TYPE_VIRTUAL,
429
404
  //DRIZZLE_TYPE_NEWDECIMAL   DRIZZLE_TYPE_ENUM
430
405
    DRIZZLE_TYPE_BLOB,        DRIZZLE_TYPE_BLOB,
455
430
 
456
431
static Item_result field_types_result_type [FIELDTYPE_NUM]=
457
432
{
458
 
  //DRIZZLE_TYPE_DECIMAL      DRIZZLE_TYPE_TINY
459
 
  DECIMAL_RESULT,           INT_RESULT,
 
433
  //DRIZZLE_TYPE_TINY
 
434
  INT_RESULT,
460
435
  //DRIZZLE_TYPE_LONG
461
436
  INT_RESULT,
462
437
  //DRIZZLE_TYPE_DOUBLE
1622
1597
    if (interval)
1623
1598
    {
1624
1599
      if (f_is_enum(pack_flag))
 
1600
{
1625
1601
        return new Field_enum(ptr,field_length,null_pos,null_bit,
1626
1602
                                  unireg_check, field_name,
1627
 
                                  pack_length, interval, field_charset);
 
1603
                                  get_enum_pack_length(interval->count),
 
1604
                                  interval, field_charset);
 
1605
}
1628
1606
    }
1629
1607
  }
1630
1608