[development] using db_insert with big ints

nan wich nan_wich at bellsouth.net
Tue Dec 28 21:30:51 UTC 2010

'size' => 'big',
Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, Jr.

From: Andre Angelantoni <aangel at mac.com>
To: development at drupal.org
Sent: Tue, December 28, 2010 2:28:32 PM
Subject: [development] using db_insert with big ints

When I use db_insert in D7 (RC3), drupal_write_record (the engine behind 
db_insert) allows ints, serials, and floats for numbers.

If it sees int in the schema definition, it casts the number in PHP as an int 
before writing the record. Thus my facebook id of 100000412533411 becomes much 
much smaller. I have D6 code that I'm bringing to D7, btw.

In common.inc:

    // Type cast to proper datatype, except when the value is NULL and the
    // column allows this.
    // MySQL PDO silently casts e.g. FALSE and '' to 0 when inserting the value
    // into an integer column, but PostgreSQL PDO does not. Also type cast NULL
    // when the column does not allow this.
    if (isset($object->$field) || !empty($info['not null'])) {
      if ($info['type'] == 'int' || $info['type'] == 'serial') {
        $fields[$field] = (int) $fields[$field];      // ****HERE***
      elseif ($info['type'] == 'float') {
        $fields[$field] = (float) $fields[$field];
      else {
        $fields[$field] = (string) $fields[$field];

There doesn't appear to be a way to insert bigints using db_insert

...or am I completely missing something?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20101228/0f355506/attachment-0001.html 

More information about the development mailing list