This cast is a cheat.
You should have a const TableTuple method for use in other const TableTuple methods that gets a const data pointer
and a non-const TableTuple method for use in other non-const TableTuple methods that gets a non-const data pointer.

I have often seen this done with overloading like:

    const char* getDataPtr(const TupleSchema::ColumnInfo * colInfo) const;
    char* getDataPtr(const TupleSchema::ColumnInfo * colInfo);

but I prefer different but similar names to make the code clearer, a short one for the most common case and a longer one for the rarer case:

    const char* getDataPtr(const TupleSchema::ColumnInfo * colInfo) const;
    char* getWritableDataPtr(const TupleSchema::ColumnInfo * colInfo);

If you define them close together, their relationship is easy to figure out. You could also give them fancy javadoc "@See" cross-references to each other -- I don't remember how to do that.
Also, I prefer something like getWritableDataPtr over getDataPtrForWrite so I can grep specifically for getDataPtr without a fancy regexp.