Index: /usr/src/tinyows-svn-trom05/src/ows/ows_storage.c =================================================================== --- /usr/src/tinyows-svn-trom05/src/ows/ows_storage.c (révision 615) +++ /usr/src/tinyows-svn-trom05/src/ows/ows_storage.c (copie de travail) @@ -183,7 +183,7 @@ sql = buffer_init(); - buffer_add_str(sql, "SELECT c.column_name FROM information_schema.constraint_column_usage c, pg_namespace n "); + /*buffer_add_str(sql, "SELECT c.column_name FROM information_schema.constraint_column_usage c, pg_namespace n "); buffer_add_str(sql, "WHERE n.nspname = '"); buffer_copy(sql, l->storage->schema); buffer_add_str(sql, "' AND c.table_name = '"); @@ -195,8 +195,17 @@ buffer_copy(sql, l->storage->table); buffer_add_str(sql, "' AND r.relnamespace = n.oid AND n.nspname = '"); buffer_copy(sql, l->storage->schema); - buffer_add_str(sql, "' AND c.contype = 'p')"); + buffer_add_str(sql, "' AND c.contype = 'p')"); */ + buffer_add_str(sql, "SELECT column_name FROM information_schema.view_table_usage vtu "); + buffer_add_str(sql, "JOIN information_schema.constraint_column_usage ccu ON vtu.table_name = ccu.table_name "); + buffer_add_str(sql, "JOIN pg_constraint c ON c.conname=ccu.constraint_name WHERE vtu.view_name = '"); + buffer_copy(sql, l->storage->table); + buffer_add_str(sql, "' AND c.contype='p' UNION SELECT column_name FROM information_schema.constraint_column_usage ccu"); + buffer_add_str(sql, " JOIN pg_constraint c ON c.conname=ccu.constraint_name WHERE ccu.table_name ='"); + buffer_copy(sql, l->storage->table); + buffer_add_str(sql, "' AND c.contype = 'p'"); + res = ows_psql_exec(o, sql->buf); if (PQresultStatus(res) != PGRES_TUPLES_OK) { PQclear(res); Index: /usr/src/tinyows-svn-trom05/src/mapfile/mapfile.c =================================================================== --- /usr/src/tinyows-svn-trom05/src/mapfile/mapfile.c (révision 615) +++ /usr/src/tinyows-svn-trom05/src/mapfile/mapfile.c (copie de travail) @@ -1393,7 +1393,7 @@ static void layer_properties(char * yytext, bool quotes) { char *p; - + char WMS[] = "\"http:"; /* remove surrounding quotes */ if (quotes) { for (p = yytext; *p ; p++); *(--p) = 0; yytext++; @@ -1405,12 +1405,16 @@ buffer_add_str(map_l->name, yytext); return; case MAP_LAYER_CONNECTION: - /* TODO: Having a Layer connection notion in TinyOWS */ - if (map_o->pg_dsn->use && strcmp(map_o->pg_dsn->buf, yytext)) + /* TODO: Having a Layer connection notion in TinyOWS*/ + if(strncmp(WMS, yytext,6)==0) + return; + else if (map_o->pg_dsn->use && strcmp(map_o->pg_dsn->buf, yytext)) ows_error(map_o, OWS_ERROR_CONFIG_FILE, - "MapFile have more than one single PostGIS db connection.", + /*"MapFile have more than one single PostGIS db connection.",*/ + yytext, "parse_config_file"); else if (!map_o->pg_dsn->use) buffer_add_str(map_o->pg_dsn, yytext); + return; } }