[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [GSoC] blends-gen-control hints (Was: blends-dev, gsoc 2013)



Hello Andreas


On Thu, Jul 11, 2013 at 4:59 PM, Andreas Tille <andreas@an3as.eu> wrote:
On Thu, Jul 11, 2013 at 03:01:21PM +0200, Andreas Tille wrote:
> On Thu, Jul 11, 2013 at 02:47:19PM +0200, Andreas Tille wrote:
> >     query = """PREPARE blend_check_existing_package_provides AS
> >                  SELECT DISTINCT provides, p.distribution, component, r.sort FROM packages p
> >                  JOIN releases r ON p.release = r.release
> >                  WHERE provides ~ ('[ ,]*'||$1||'[ ,]*')
> >                  ORDER BY r.sort DESC
> >                  LIMIT 1"""
>
> I think
>
>     provides ~ ('\b'||'freeb'||'\b');

Damn:

udd=# SELECT DISTINCT provides, p.distribution, component, r.sort FROM packages p
                 JOIN releases r ON p.release = r.release
                 WHERE provides ~ ('\b'||'djvu-viewer'||'\b');
 provides | distribution | component | sort
----------+--------------+-----------+------
(0 Zeilen)


While we get no false positives like freeb we also do not get what we
really want to catch. :-(

Keep on thinking what regexp will fetch those *real* virtual packages.

If all else fails we need to create a function that turns the string
into an array and then query the array ...

Any idea?

Oups I did not think of this case (like the "freeb" example). Instead of regex(to be honest I did not find anything new on this) I think this fits us:

query="""
                 SELECT DISTINCT provides, p.distribution, component, r.sort FROM packages p
                  JOIN releases r ON p.release = r.release
                  WHERE provides SIMILAR TO '{0}|{0},%|% {0} %|% {0}, %'
                  ORDER BY r.sort DESC
                  LIMIT 1
""".format('djvu-viewer') 

A "similar to"  with multiple OR statements inside to cover our cases: single OR virtual, % OR % virtual % OR % virtual.
At first it looks fine, I need to make more tests. This example does not catch "freeb" and catches correctly the "djvu-viewer"
Let me know what you think.

PS: I have a local UDD instance, the extra "," was a mistake, probably from a copy paste without testing :-(

Kind regards

Emmanouil

Reply to: