Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 74513 invoked from network); 11 Nov 2005 20:56:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 11 Nov 2005 20:56:11 -0000 Received: (qmail 99455 invoked by uid 500); 11 Nov 2005 20:56:10 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 99427 invoked by uid 500); 11 Nov 2005 20:56:09 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 99418 invoked by uid 99); 11 Nov 2005 20:56:09 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 Nov 2005 12:56:09 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: neutral (asf.osuosl.org: local policy) Received: from [32.97.182.146] (HELO e6.ny.us.ibm.com) (32.97.182.146) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 Nov 2005 12:56:02 -0800 Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e6.ny.us.ibm.com (8.12.11/8.12.11) with ESMTP id jABKtmhJ003017 for ; Fri, 11 Nov 2005 15:55:48 -0500 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay02.pok.ibm.com (8.12.10/NCO/VERS6.7) with ESMTP id jABKtmPu117292 for ; Fri, 11 Nov 2005 15:55:48 -0500 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.12.11/8.13.3) with ESMTP id jABKtlkk028532 for ; Fri, 11 Nov 2005 15:55:47 -0500 Received: from [127.0.0.1] (sig-9-48-111-64.mts.ibm.com [9.48.111.64]) by d01av04.pok.ibm.com (8.12.11/8.12.11) with ESMTP id jABKtjSC028439 for ; Fri, 11 Nov 2005 15:55:46 -0500 Message-ID: <4375054A.6050002@debrunners.com> Date: Fri, 11 Nov 2005 21:55:38 +0100 From: Daniel John Debrunner User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.3) Gecko/20040910 X-Accept-Language: de, en-us, en MIME-Version: 1.0 To: derby-dev@db.apache.org Subject: Re: [jira] Created: (DERBY-703) VTI Interface "IQualifyable" Semantics Unclear or Broken References: <1991439125.1131740223026.JavaMail.jira@ajax.apache.org> In-Reply-To: <1991439125.1131740223026.JavaMail.jira@ajax.apache.org> X-Enigmail-Version: 0.90.0.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Kurt Westerfeld (JIRA) wrote: > VTI Interface "IQualifyable" Semantics Unclear or Broken > -------------------------------------------------------- > > Key: DERBY-703 > URL: http://issues.apache.org/jira/browse/DERBY-703 > Project: Derby > Type: Improvement > Components: Store > Versions: 10.1.2.1, 10.1.2.0, 10.1.1.2, 10.1.1.1, 10.1.1.0, 10.0.2.1, 10.0.2.0 > Environment: This is not a platform-specific issue--more of the programming interface for internal VTI genration > Reporter: Kurt Westerfeld > > > Our application wishes to generate some custom VTI implementations. The VTI package has an interface called IQualifyable, which when implemented seems like it should pass all query parameters for the table. It actually does this, but when implemented by the VTI, effectlively removes all "WHERE" clause filtering from the SQL engine processing the VTI table request. Implementing this interface requires the VTI to handle all such processing. > > As an example, if you had a VTI with table columns "one", "two" and "three", and wanted to do some special processing for one of the columns by intercepting the IQualifyable interface (say, column "one"), processing for all three columns would be the responsibility for the VTI. > > I would propose one of two improvements to resolve this issue: > 1. Allow the IQualifyable interface to simply have a "crack at it" to see what the query parameters are, and then allow additional selection processing to occur by the SQL engine, or > 2. Implement a new marker interface or sub-interface of IQualifyable which allows for the new semantic of intercepting the query parameters provided--similar to IQualifyable but allowing filtering to occur > That was the original thought, if you see the code you can see a commented out (partial) method called handleQualifier. This would be called to dertermine which qualifiers can be pushed down. I think that currently only qualifiers that can be pushed to the store are pushed into a vti, thus with this where clause: WHERE NAME LIKE 'Smith%' and balance < ? only the balance < ? would be pushed into the VTI. The LIKE would be executed with the Derby engine itself. Dan.