[mythtv] Guide service API "Group By" usage

Michael T. Dean mtdean at thirdcontact.com
Mon Sep 28 17:28:22 UTC 2020


On 09/28/2020 11:43 AM, Peter Bennett wrote:
> On 9/28/20 9:25 AM, Michael T. Dean wrote:
>>> On 9/25/20 2:56 PM, Peter Bennett wrote:
>>>>
>>>> The Guide API uses "Group by Callsign" with the result that if you 
>>>> have two channels with the same callsign, one gets dropped off the 
>>>> list. Is there any reason for this? I plan to fix it with the other 
>>>> bugs I am fixing, if nobody knows of a reason for grouping that way.
>>>>
...
...
>> In theory, the guide should only condense multiple channels to a 
>> single listing if both the call sign and channel number are identical 
>> for the channels.  If you're saying that's not the case in the 
>> services API or something (it condenses if the call sign is identical 
>> regardless of the channel number), that may be a bug.
>>
> Yes that is what the services API does for the GetProgramGuide (Group 
> by call sign and not channel number). My particular case was where two 
> channels have the same call sign but different numbers and only one 
> showed.

Yeah, TTBOMK, we still show multiple rows if either call sign or channel 
number differs in the frontend guide and should in all other guides 
(MythWeb and/or backend services).  I don't have duplicate channels, so 
it's possible things have been changed in recent years and I didn't 
notice, but it seems to be a bug to me.  With the distinctions between 
identical channel numbers, identical call signs, and identical channel 
numbers and call signs I described in my previous message, we seem to 
cover cases that allow users fine-grained control over "what kind of 
duplicate channel is this," so I wouldn't expect we should remove some 
portion of that control. I'd think the service should be changed to 
condense channels like the frontend channel guide.

> Here in the USA with cable we prefer channel number, the callsigns 
> filled in by the guide service are not consistent. Many times they are 
> some sort of abbreviation of the channel name, sometimes with -DT, 
> -DT2, -DT3 etc. appended.
>
> I recently came across somebody (I don't know where located) who has 
> null channel numbers. I did not think that was allowed but it may mess 
> up grouping by channel number.

Yeah, though it shouldn't have an effect on scheduling, it would almost 
definitely have negative effects elsewhere (such as Live TV's inability 
to tune by channel number, display problems, or in transmitting 
ProgramInfo using Myth backend protocol--because of null-terminated 
strings).

> I am not sure if SQL will correctly group items that have null in 
> their group by column.
>
> Should null channel numbers be allowed?

The column is defined as NOT NULL:

https://github.com/MythTV/mythtv/blob/master/mythtv/libs/libmythtv/dbcheck.cpp#L3894

and I don't see any changes anywhere that removed that restriction (nor 
can I imagine changes that would do that).  Not sure what the preferred 
approach is regarding coding to handle that invalid data transparently 
or requiring valid data, but we probably should at least alert the user 
that their DB (and, seemingly DB schema) is borked if we notice 
that--whether we fail hard or "just try and see" or insert some value in 
code when reading null from the DB column to try to prevent errors.  My 
personal preference is to not spend a lot of time coding to handle 
invalid data, but to log a message that makes it possible for the user 
to figure out what's wrong and correct it.  That said, I'm not at all 
against bulletproof (or bullet-resistant?) code.  (So, I guess that's 
completely useless advice, and maybe someone else can be more helpful. :)

Mike


More information about the mythtv-dev mailing list