Closed
Bug 305981
Opened 21 years ago
Closed 3 years ago
rdf bound tree - doesn't sort correct for <binding> columns, if assertion doesn't exist
Categories
(Core :: XUL, defect)
Tracking
()
RESOLVED
INCOMPLETE
People
(Reporter: u130342, Unassigned)
References
Details
Attachments
(1 file)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6
in case one has these rdf-triples
s1 -> a -> 1
s1 -> b -> 2
s2 -> a -> 2
s3 -> a -> 3
s4 -> a -> 4
s4 -> b -> 4
and a tree with triple
?uri -> a -> ?a
and a binding
?uri -> b -> ?b
he cannot sort by predicate b because for s2 and s3 there is no triple
I believe the problem resides in nsXULTreeBuilder.cpp
nsXULTreeBuilder::CompareMatches(nsTemplateMatch* aLeft, nsTemplateMatch* aRight)
http://lxr.mozilla.org/seamonkey/source/content/xul/templates/src/nsXULTreeBuilder.cpp#1843
It only compares resources of same type nsIRDFLiteral/nsIRDFLiteral,
nsIRDFDate/nsIRDFDate, nsIRDFInt/nsIRDFInt, nsIRDFBlob/nsIRDFBlob.
All other combinations result in equal. This terribly affects the quicksort
algorithm.
Reproducible: Always
Steps to Reproduce:
1. create rdf with missing assertions
2. create sortable xul-tree
3. sort by column which have missing targets (?item -> #predicate -> (not
available)
Actual Results:
sort order incorrect
Expected Results:
I suggest two things (pseudocode):
1. Comparison with missing nodes:
if l and r are missing return 0 // l==r
if just l is missing return -1 // l<r
if just r is missing return 1 // l>r
compare String(l) with String(r) and return result of comparison
2. Comparison of resources
because targets could be resources as well (web sites), resources should be
compared like literals.
FF1.0.6
DeerPark alpha 2
tried to make some code, added the changed code snippet
(note: just have the source code .. it may contain errors)
Maybe changing it mor solves the bug for unstable sort.
Sort will be stable if it never returns 0. This could be achived by performing
a natural sort of items whenever 0 gets returned at the moment.
Comment 2•20 years ago
|
||
You might want to discuss this in newsgroups (netscape.public.dev.xul) or attach
a CVS diff and ask for a review.
Component: General → XP Toolkit/Widgets: XUL
Product: Firefox → Core
QA Contact: general → xptoolkit.xul
Version: unspecified → 1.7 Branch
Seems code moved to
nsXULTemplateQueryProcessorRDF::CompareResults
http://lxr.mozilla.org/seamonkey/source/content/xul/templates/src/nsXULTemplateQueryProcessorRDF.cpp#453
Unfortunately apples and eggs are still equal :-(
Updated•20 years ago
|
Attachment #194031 -
Flags: review?(enndeakin)
Comment 4•20 years ago
|
||
Comment on attachment 194031 [details]
possible imlementation
You, or someone, needs to make a patch for this, and against nsXULTemplateQueryProcessorRDF
Attachment #194031 -
Flags: review?(enndeakin) → review-
Component: XP Toolkit/Widgets: XUL → XUL
QA Contact: xptoolkit.xul → xptoolkit.widgets
Comment 5•3 years ago
|
||
In the process of migrating remaining bugs to the new severity system, the severity for this bug cannot be automatically determined. Please retriage this bug using the new severity system.
Severity: major → --
Comment 6•3 years ago
|
||
Out of date.
Status: UNCONFIRMED → RESOLVED
Closed: 3 years ago
Resolution: --- → INCOMPLETE
You need to log in
before you can comment on or make changes to this bug.
Description
•