[Geotools-devel] JDBC stores hitting multiple schemas

2012-01-12 Thread Andrea Aime
Hi,
I'm looking into some options to have a JDBCDataStore work against multiple
schemas at the same time without troubles.

Right now the code works two ways:
- if you specify a schema during the store setup, we work against tables of
that
   schema and we're fine
- if you don't the list of possible feature types contains a list of tables
from
  multiple schemas, and the table names are never schema qualified when we
  do queries (which means, the table we actually pick is a matter of luck)

The second case is trouble. At first I was thinking about the possiblity of
specifying
the schema as a sidecar information with feature types, but there is a
fundamental
problem: if two schemas have the same table there must be a way for the
user to
identify which table is coming from which schema, and point at the right
one.

Name is not an option, since that is for namespace qualification, not
schema qualification,
besides, most of the client code is not really ready ot use Name instead of
a plain string.

I guess a better option is to return names that do contain the schema,
pretty much
like the SDE store does (afaik), that is, schema.table.

The way I'm picturing it is that the code would return plain table names if
you specify
the schema, and schema qualified names otherwise.
And maybe be a bit tolerant if an unqualified name comes in, if there is
just a single
table with that matches that name accept the short name as if it was schema
qualified
(think of someone changing the configuration of the store from schema
specified
to schema-less, all the table names would suddenly change).

What other approaches could we follow? What problems do you foresee?

Cheers
Andrea

-- 
---
Ing. Andrea Aime
GeoSolutions S.A.S.
Tech lead

Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584 962313
fax:  +39 0584 962313
mob:+39 339 8844549

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.youtube.com/user/GeoSolutionsIT
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

---
--
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2___
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel


Re: [Geotools-devel] JDBC stores hitting multiple schemas

2012-01-12 Thread christian . mueller
Oh yes, I know the problem. Creating a db2 data store without a schema  
lists a ton of tables including the whole system catalog.

I would prefer a more precise solution, but I am not sure if it is possible.

1) We always use schema.table, because this it the unique name,  
comparable to a java class name including the package name.

2) If a data store has a schema specified, we use the schema name only as
a filter for presenting tables/views to the user.

3) For already existing features using a table name without schema, we  
should complete the name when reading the configuration file. Future  
features should always use schema.table.

As already mentioned, I am not sure if it is possible, but it would be  
straight forward.

Christian


Zitat von Andrea Aime andrea.a...@geo-solutions.it:

 Hi,
 I'm looking into some options to have a JDBCDataStore work against multiple
 schemas at the same time without troubles.

 Right now the code works two ways:
 - if you specify a schema during the store setup, we work against tables of
 that
schema and we're fine
 - if you don't the list of possible feature types contains a list of tables
 from
   multiple schemas, and the table names are never schema qualified when we
   do queries (which means, the table we actually pick is a matter of luck)

 The second case is trouble. At first I was thinking about the possiblity of
 specifying
 the schema as a sidecar information with feature types, but there is a
 fundamental
 problem: if two schemas have the same table there must be a way for the
 user to
 identify which table is coming from which schema, and point at the right
 one.

 Name is not an option, since that is for namespace qualification, not
 schema qualification,
 besides, most of the client code is not really ready ot use Name instead of
 a plain string.

 I guess a better option is to return names that do contain the schema,
 pretty much
 like the SDE store does (afaik), that is, schema.table.

 The way I'm picturing it is that the code would return plain table names if
 you specify
 the schema, and schema qualified names otherwise.
 And maybe be a bit tolerant if an unqualified name comes in, if there is
 just a single
 table with that matches that name accept the short name as if it was schema
 qualified
 (think of someone changing the configuration of the store from schema
 specified
 to schema-less, all the table names would suddenly change).

 What other approaches could we follow? What problems do you foresee?

 Cheers
 Andrea

 --
 ---
 Ing. Andrea Aime
 GeoSolutions S.A.S.
 Tech lead

 Via Poggio alle Viti 1187
 55054  Massarosa (LU)
 Italy

 phone: +39 0584 962313
 fax:  +39 0584 962313
 mob:+39 339 8844549

 http://www.geo-solutions.it
 http://geo-solutions.blogspot.com/
 http://www.youtube.com/user/GeoSolutionsIT
 http://www.linkedin.com/in/andreaaime
 http://twitter.com/geowolf

 ---





This message was sent using IMP, the Internet Messaging Program.



--
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
___
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel


Re: [Geotools-devel] JDBC stores hitting multiple schemas

2012-01-12 Thread Andrea Aime
On Thu, Jan 12, 2012 at 4:44 PM, christian.muel...@nvoe.at wrote:

 Oh yes, I know the problem. Creating a db2 data store without a schema
 lists a ton of tables including the whole system catalog.


You know you can setup table name filters in the sql dialect?
That's how we hide most of the system tables in Oracle for example.



 I would prefer a more precise solution, but I am not sure if it is
 possible.

 1) We always use schema.table, because this it the unique name, comparable
 to a java class name including the package name.


This may backwards compatibility issues, what happens when someone using
uDig, GeoServer or another
application that mantains a configuration of its own referencing the old
name?
But I otherwise like the direction.



 2) If a data store has a schema specified, we use the schema name only as
 a filter for presenting tables/views to the user.


Ok



 3) For already existing features using a table name without schema, we
 should complete the name when reading the configuration file. Future
 features should always use schema.table.


How do we complete the name? All applications should have to roll new code
to handle the switch? This would be really annoying towards users.
That's why I was suggesting to be lenient, if we get a non qualified name
try to match it
internally to a qualified one

Another possiblity would be to have a configuration flag specifying whether
to use qualified
or unqualified names

Cheers
Andrea

-- 
---
Ing. Andrea Aime
GeoSolutions S.A.S.
Tech lead

Via Poggio alle Viti 1187
55054  Massarosa (LU)
Italy

phone: +39 0584 962313
fax:  +39 0584 962313
mob:+39 339 8844549

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.youtube.com/user/GeoSolutionsIT
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

---
--
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2___
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel