I can’t see a good reason not to support it. Seems like extra work to avoid
with no benefit.

—
Jon Haddad
Rustyrazorblade Consulting
rustyrazorblade.com


On Thu, Apr 25, 2024 at 7:16 AM Štefan Miklošovič <
stefan.mikloso...@gmail.com> wrote:

> Can you elaborate on intentionally not supporting some conversions? Are we
> safe to base these conversions on DataStorageUnit? We have set of units
> from BYTES to GIBIBYTES and respective methods on them which convert from
> that unit to whatever else. Is this OK to be used for the purposes of this
> feature? I would expect that once we have units like these and methods on
> them to convert from-to, it can be reused in wherever else.
>
> On Thu, Apr 25, 2024 at 4:06 PM Ekaterina Dimitrova <e.dimitr...@gmail.com>
> wrote:
>
>> All I am saying is be careful with adding those conversions not to end up
>> used while setting our configuration. Thanks 🙏
>>
>> On Thu, 25 Apr 2024 at 6:53, Štefan Miklošovič <
>> stefan.mikloso...@gmail.com> wrote:
>>
>>> Well, technically I do not need DataStorageSpec at all. All I need is
>>> DataStorageUnit for that matter. That can convert from one unit to another
>>> easily.
>>>
>>> We can omit tebibytes, that's just fine. People would need to live with
>>> gibibytes at most in cqlsh output. They would not get 5 TiB but 5120 GiB, I
>>> guess that is just enough to have a picture of what magnitude that value
>>> looks like.
>>>
>>> On Thu, Apr 25, 2024 at 3:36 PM Ekaterina Dimitrova <
>>> e.dimitr...@gmail.com> wrote:
>>>
>>>> Quick comment:
>>>>
>>>> DataRateSpec, DataStorageSpec, or DurationSpec
>>>> - we intentionally do not support going smaller to bigger size in those
>>>> classes which are specific for cassandra.yaml - precision issues. Please
>>>> keep it that way. That is why the notion of min unit was added in
>>>> cassandra.yaml for parameters that are internally represented in a bigger
>>>> unit.
>>>>
>>>> I am not sure that people want to add TiB. There was explicit agreement
>>>> what units we will allow in cassandra.yaml. I suspect any new units should
>>>> be approved on the ML
>>>>
>>>> Hope this helps
>>>>
>>>>
>>>>
>>>> On Thu, 25 Apr 2024 at 5:55, Claude Warren, Jr via dev <
>>>> dev@cassandra.apache.org> wrote:
>>>>
>>>>> TiB is not yet in DataStorageSpec (perhaps we should add it).
>>>>>
>>>>> A quick review tells me that all the units are unique across the 3
>>>>> specs.  As long as we guarantee that in the future the method you propose
>>>>> should be easily expandable to the other specs.
>>>>>
>>>>> +1 to this idea.
>>>>>
>>>>> On Thu, Apr 25, 2024 at 12:26 PM Štefan Miklošovič <
>>>>> stefan.mikloso...@gmail.com> wrote:
>>>>>
>>>>>> That is a very interesting point, Claude. My so-far implementation is
>>>>>> using FileUtils.stringifyFileSize which is just dividing a value by a
>>>>>> respective divisor based on how big a value is. While this works, it will
>>>>>> prevent you from specifying what unit you want that value to be converted
>>>>>> to as well as it will prevent you from specifying what unit a value you
>>>>>> provided is of. So, for example, if a column is known to be in kibibytes
>>>>>> and we want that to be converted into gibibytes, that won't be possible
>>>>>> because that function will think that a value is in bytes.
>>>>>>
>>>>>> It would be more appropriate to have something like this:
>>>>>>
>>>>>> to_human_size(val) -> alias to FileUtils.stringifyFileSize, without
>>>>>> any source nor target unit, it will consider it to be in bytes and it 
>>>>>> will
>>>>>> convert it like in FileUtils.stringifyFileSize
>>>>>>
>>>>>> to_human_size(val, 'MiB') -> alias for to_human_size(val, 'B', 'MiB')
>>>>>> to_human_size(val, 'GiB') -> alias for to_human_size(val, 'B', 'GiB')
>>>>>>
>>>>>> the first argument is the source unit, the second argument is target
>>>>>> unit
>>>>>>
>>>>>> to_human_size(val, 'B', 'MiB')
>>>>>> to_human_size(val, 'B', 'GiB')
>>>>>> to_human_size(val, 'KiB', 'GiB')
>>>>>> to_human_size(val, 'KiB', 'TiB')
>>>>>>
>>>>>> I think this is more flexible and we should funnel this via
>>>>>> DataStorageSpec and similar as you mentioned.
>>>>>>
>>>>>> In the future, we might also add to_human_duration which would be
>>>>>> implemented against DurationSpec so similar conversions are possible.
>>>>>>
>>>>>> On Fri, Apr 19, 2024 at 10:53 AM Claude Warren, Jr via dev <
>>>>>> dev@cassandra.apache.org> wrote:
>>>>>>
>>>>>>> I like the idea.  Is the intention to have the of the function be
>>>>>>> parsable by the config  parsers like DataRateSpec, DataStorageSpec, or
>>>>>>> DurationSpec?
>>>>>>>
>>>>>>> Claude
>>>>>>>
>>>>>>> On Thu, Apr 18, 2024 at 9:47 PM Ariel Weisberg <ar...@weisberg.ws>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I think it’s a good quality of life improvement, but I am someone
>>>>>>>> who believes in a rich set of built-in functions being a good thing.
>>>>>>>>
>>>>>>>> A format function is a bit more scope and kind of orthogonal. It
>>>>>>>> would still be good to have shorthand functions for things like size.
>>>>>>>>
>>>>>>>> Ariel
>>>>>>>>
>>>>>>>> On Tue, Apr 9, 2024, at 8:09 AM, Štefan Miklošovič wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I want to propose CASSANDRA-19546. It would be possible to convert
>>>>>>>> raw numbers to something human-friendly.
>>>>>>>> There are cases when we write just a number of bytes in our system
>>>>>>>> tables but these numbers are just hard to parse visually. Users can 
>>>>>>>> indeed
>>>>>>>> use this for their tables too if they find it useful.
>>>>>>>>
>>>>>>>> Also, a user can indeed write a UDF for this but I would prefer if
>>>>>>>> we had something baked in.
>>>>>>>>
>>>>>>>> Does this make sense to people? Are there any other approaches to
>>>>>>>> do this?
>>>>>>>>
>>>>>>>> https://issues.apache.org/jira/browse/CASSANDRA-19546
>>>>>>>> https://github.com/apache/cassandra/pull/3239/files
>>>>>>>>
>>>>>>>> Regards
>>>>>>>>
>>>>>>>>
>>>>>>>>

Reply via email to