[ 
https://issues.apache.org/jira/browse/CASSANDRA-11274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15174400#comment-15174400
 ] 

Adam Holmberg commented on CASSANDRA-11274:
-------------------------------------------

Looks good. One minor change I noted: inet is now being formatted green instead 
of yellow. It actually looks like it wasn't hitting 
{{@formatter_for('inet')}} in previously, and now it is. I guess this is 
probably correct, but I'm just pointing out the difference.

bq. cassandra.cqltypes.DateType.deserialize. This has nothing to do with 
formatting and so I did not change it. Will this cause us problems when running 
the driver with cython extensions?
Yes. It's not to do with formatting, but it does handle what happens when the 
stored value overflows the date range that Python can handle in datetime. Right 
now we have a problem with or without Cython when querying large timestamps 
(insert '10000-01-02' for example).
Without Cython, the formatter assumptions fail:
{code}
Failed to format value 253402408800000 : 'int' object has no attribute 
'utctimetuple'
{code}
It actually still ends up printing the numerical value just like the overridden 
deserializer would, just with that error printed. Maybe this is ok.

With Cython, the deserializer has the same overflow that the patch is working 
around:
{code}
try timestamp (DateType) overflow
    OverflowError: date value out of range
{code}
(cross-reference CASSANDRA-10625)
We would need to remove the Cython deserializer and fall back to the patched 
version, or replace it with a new Cython counterpart that does the same thing.


> cqlsh: interpret CQL type for formatting blob types
> ---------------------------------------------------
>
>                 Key: CASSANDRA-11274
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11274
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Stefania
>            Assignee: Stefania
>             Fix For: 3.x
>
>
> During the development of CASSANDRA-11053 we have added changes to the cqlsh 
> formatting code so that we can format {{blob}} types correctly even if they 
> are represented as {{str}} rather than {{bytearray}}.
> At the moment we ensure {{blob}} are of type {{bytearray}} via the following 
> shortcut:
> {code}
> cassandra.cqltypes.BytesType.deserialize = staticmethod(lambda byts, 
> protocol_version: bytearray(byts))
> {code}
> After CASSANDRA-11053 is committed there will be a similar shortcut to 
> override the fast serializers implemented in cython. 
> Decoding the CQL type is safer in that it decouples cqlsh formatting from the 
> types returned by the driver deserializers but it is also unnecessary for 
> CASSANDRA-11053 performance goals and risky for older releases. 
> Therefore this ticket delivers this functionality but only on trunk.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to