]> git.nbdom.net Git - nb.git/commitdiff
share/sql/zipcode.sql
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Wed, 3 Jan 2018 23:17:35 +0000 (23:17 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Wed, 3 Jan 2018 23:17:35 +0000 (23:17 +0000)
lib/postgres/function-show_create_table.sql [new file with mode: 0644]
share/db/nb.db
share/db/timezone [new file with mode: 0755]
share/db/timezone.csv [new file with mode: 0644]
share/db/timezone.sql [new file with mode: 0644]
share/db/zipcode [new file with mode: 0755]
share/postgres/postgres-create-functions.sql [deleted file]
www/dbq/html/default.min.js

diff --git a/lib/postgres/function-show_create_table.sql b/lib/postgres/function-show_create_table.sql
new file mode 100644 (file)
index 0000000..ccdf380
--- /dev/null
@@ -0,0 +1,77 @@
+-- CREATE OR REPLACE FUNCTION generate_create_table_statement(p_table_name varchar)
+CREATE OR REPLACE FUNCTION show_create_table(p_table_name varchar)
+  RETURNS text AS
+$BODY$
+DECLARE
+    v_table_ddl   text;
+    column_record record;
+BEGIN
+    FOR column_record IN 
+        SELECT 
+(SELECT 1 FROM pg_index i WHERE a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) AND i.indrelid = b.relname::regclass AND i.indisprimary) as pk,
+            b.nspname as schema_name,
+            b.relname as table_name,
+            a.attname as column_name,
+            pg_catalog.format_type(a.atttypid, a.atttypmod) as column_type,
+            CASE WHEN 
+                (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
+                 FROM pg_catalog.pg_attrdef d
+                 WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef) IS NOT NULL THEN
+                'DEFAULT '|| (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
+                              FROM pg_catalog.pg_attrdef d
+                              WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef)
+            ELSE
+                ''
+            END as column_default_value,
+            CASE WHEN a.attnotnull = true THEN 
+                'NOT NULL'
+            ELSE
+                'NULL'
+            END as column_not_null,
+            a.attnum as attnum,
+            e.max_attnum as max_attnum
+        FROM 
+            pg_catalog.pg_attribute a
+            INNER JOIN 
+             (SELECT c.oid,
+                n.nspname,
+                c.relname
+              FROM pg_catalog.pg_class c
+                   LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
+              WHERE c.relname ~ ('^('||p_table_name||')$')
+                AND pg_catalog.pg_table_is_visible(c.oid)
+              ORDER BY 2, 3) b
+            ON a.attrelid = b.oid
+            INNER JOIN 
+             (SELECT 
+                  a.attrelid,
+                  max(a.attnum) as max_attnum
+              FROM pg_catalog.pg_attribute a
+              WHERE a.attnum > 0 
+                AND NOT a.attisdropped
+              GROUP BY a.attrelid) e
+            ON a.attrelid=e.attrelid
+        WHERE a.attnum > 0 
+          AND NOT a.attisdropped
+        ORDER BY a.attnum
+    LOOP
+        IF column_record.attnum = 1 THEN
+            v_table_ddl:='CREATE TABLE '||column_record.schema_name||'.'||column_record.table_name||' (';
+        ELSE
+            v_table_ddl:=v_table_ddl||',';
+        END IF;
+
+        IF column_record.attnum <= column_record.max_attnum THEN
+            v_table_ddl:=v_table_ddl||chr(10)||
+                     '  '||column_record.column_name||' '||column_record.column_type||' '||column_record.column_default_value||' '||column_record.column_not_null;
+        END IF;
+        IF column_record.pk = 1 THEN
+          v_table_ddl:=v_table_ddl||' PRIMARY KEY';
+        END IF;
+    END LOOP;
+
+    v_table_ddl:=v_table_ddl||chr(10)||');';
+    RETURN v_table_ddl;
+END;
+$BODY$
+  LANGUAGE 'plpgsql' COST 100.0 SECURITY INVOKER;
index 94104ee5493693d4ef0490bc8a5d5897a5fb23ad..8566e99b8af1e8e8b0945d885662e02643f9c184 100644 (file)
Binary files a/share/db/nb.db and b/share/db/nb.db differ
diff --git a/share/db/timezone b/share/db/timezone
new file mode 100755 (executable)
index 0000000..7c1f515
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+@ARGV = ('curl -s http://download.geonames.org/export/dump/timeZones.txt |');
+
+my $i;
+while (<>) {
+       next unless $i++;
+       chomp($_);
+       @_ = (split("\t",$_))[1,2,3,4];
+       #push @_,0 if (@_<4);
+       #$_[1] = join("\t",reverse split('/',$_[1]));
+       print join ("\t",@_)."\n";
+}
diff --git a/share/db/timezone.csv b/share/db/timezone.csv
new file mode 100644 (file)
index 0000000..29233ba
--- /dev/null
@@ -0,0 +1,424 @@
+Africa/Abidjan 0.0     0.0     0.0
+Africa/Accra   0.0     0.0     0.0
+Africa/Addis_Ababa     3.0     3.0     3.0
+Africa/Algiers 1.0     1.0     1.0
+Africa/Asmara  3.0     3.0     3.0
+Africa/Bamako  0.0     0.0     0.0
+Africa/Bangui  1.0     1.0     1.0
+Africa/Banjul  0.0     0.0     0.0
+Africa/Bissau  0.0     0.0     0.0
+Africa/Blantyre        2.0     2.0     2.0
+Africa/Brazzaville     1.0     1.0     1.0
+Africa/Bujumbura       2.0     2.0     2.0
+Africa/Cairo   2.0     2.0     2.0
+Africa/Casablanca      0.0     1.0     0.0
+Africa/Ceuta   1.0     2.0     1.0
+Africa/Conakry 0.0     0.0     0.0
+Africa/Dakar   0.0     0.0     0.0
+Africa/Dar_es_Salaam   3.0     3.0     3.0
+Africa/Djibouti        3.0     3.0     3.0
+Africa/Douala  1.0     1.0     1.0
+Africa/El_Aaiun        0.0     1.0     0.0
+Africa/Freetown        0.0     0.0     0.0
+Africa/Gaborone        2.0     2.0     2.0
+Africa/Harare  2.0     2.0     2.0
+Africa/Johannesburg    2.0     2.0     2.0
+Africa/Juba    3.0     3.0     3.0
+Africa/Kampala 3.0     3.0     3.0
+Africa/Khartoum        3.0     3.0     3.0
+Africa/Kigali  2.0     2.0     2.0
+Africa/Kinshasa        1.0     1.0     1.0
+Africa/Lagos   1.0     1.0     1.0
+Africa/Libreville      1.0     1.0     1.0
+Africa/Lome    0.0     0.0     0.0
+Africa/Luanda  1.0     1.0     1.0
+Africa/Lubumbashi      2.0     2.0     2.0
+Africa/Lusaka  2.0     2.0     2.0
+Africa/Malabo  1.0     1.0     1.0
+Africa/Maputo  2.0     2.0     2.0
+Africa/Maseru  2.0     2.0     2.0
+Africa/Mbabane 2.0     2.0     2.0
+Africa/Mogadishu       3.0     3.0     3.0
+Africa/Monrovia        0.0     0.0     0.0
+Africa/Nairobi 3.0     3.0     3.0
+Africa/Ndjamena        1.0     1.0     1.0
+Africa/Niamey  1.0     1.0     1.0
+Africa/Nouakchott      0.0     0.0     0.0
+Africa/Ouagadougou     0.0     0.0     0.0
+Africa/Porto-Novo      1.0     1.0     1.0
+Africa/Sao_Tome        0.0     0.0     0.0
+Africa/Tripoli 2.0     2.0     2.0
+Africa/Tunis   1.0     1.0     1.0
+Africa/Windhoek        2.0     1.0     1.0
+America/Adak   -10.0   -9.0    -10.0
+America/Anchorage      -9.0    -8.0    -9.0
+America/Anguilla       -4.0    -4.0    -4.0
+America/Antigua        -4.0    -4.0    -4.0
+America/Araguaina      -3.0    -3.0    -3.0
+America/Argentina/Buenos_Aires -3.0    -3.0    -3.0
+America/Argentina/Catamarca    -3.0    -3.0    -3.0
+America/Argentina/Cordoba      -3.0    -3.0    -3.0
+America/Argentina/Jujuy        -3.0    -3.0    -3.0
+America/Argentina/La_Rioja     -3.0    -3.0    -3.0
+America/Argentina/Mendoza      -3.0    -3.0    -3.0
+America/Argentina/Rio_Gallegos -3.0    -3.0    -3.0
+America/Argentina/Salta        -3.0    -3.0    -3.0
+America/Argentina/San_Juan     -3.0    -3.0    -3.0
+America/Argentina/San_Luis     -3.0    -3.0    -3.0
+America/Argentina/Tucuman      -3.0    -3.0    -3.0
+America/Argentina/Ushuaia      -3.0    -3.0    -3.0
+America/Aruba  -4.0    -4.0    -4.0
+America/Asuncion       -3.0    -4.0    -4.0
+America/Atikokan       -5.0    -5.0    -5.0
+America/Bahia  -3.0    -3.0    -3.0
+America/Bahia_Banderas -6.0    -5.0    -6.0
+America/Barbados       -4.0    -4.0    -4.0
+America/Belem  -3.0    -3.0    -3.0
+America/Belize -6.0    -6.0    -6.0
+America/Blanc-Sablon   -4.0    -4.0    -4.0
+America/Boa_Vista      -4.0    -4.0    -4.0
+America/Bogota -5.0    -5.0    -5.0
+America/Boise  -7.0    -6.0    -7.0
+America/Cambridge_Bay  -7.0    -6.0    -7.0
+America/Campo_Grande   -3.0    -4.0    -4.0
+America/Cancun -5.0    -5.0    -5.0
+America/Caracas        -4.0    -4.0    -4.0
+America/Cayenne        -3.0    -3.0    -3.0
+America/Cayman -5.0    -5.0    -5.0
+America/Chicago        -6.0    -5.0    -6.0
+America/Chihuahua      -7.0    -6.0    -7.0
+America/Costa_Rica     -6.0    -6.0    -6.0
+America/Creston        -7.0    -7.0    -7.0
+America/Cuiaba -3.0    -4.0    -4.0
+America/Curacao        -4.0    -4.0    -4.0
+America/Danmarkshavn   0.0     0.0     0.0
+America/Dawson -8.0    -7.0    -8.0
+America/Dawson_Creek   -7.0    -7.0    -7.0
+America/Denver -7.0    -6.0    -7.0
+America/Detroit        -5.0    -4.0    -5.0
+America/Dominica       -4.0    -4.0    -4.0
+America/Edmonton       -7.0    -6.0    -7.0
+America/Eirunepe       -5.0    -5.0    -5.0
+America/El_Salvador    -6.0    -6.0    -6.0
+America/Fort_Nelson    -7.0    -7.0    -7.0
+America/Fortaleza      -3.0    -3.0    -3.0
+America/Glace_Bay      -4.0    -3.0    -4.0
+America/Godthab        -3.0    -2.0    -3.0
+America/Goose_Bay      -4.0    -3.0    -4.0
+America/Grand_Turk     -4.0    -4.0    -4.0
+America/Grenada        -4.0    -4.0    -4.0
+America/Guadeloupe     -4.0    -4.0    -4.0
+America/Guatemala      -6.0    -6.0    -6.0
+America/Guayaquil      -5.0    -5.0    -5.0
+America/Guyana -4.0    -4.0    -4.0
+America/Halifax        -4.0    -3.0    -4.0
+America/Havana -5.0    -4.0    -5.0
+America/Hermosillo     -7.0    -7.0    -7.0
+America/Indiana/Indianapolis   -5.0    -4.0    -5.0
+America/Indiana/Knox   -6.0    -5.0    -6.0
+America/Indiana/Marengo        -5.0    -4.0    -5.0
+America/Indiana/Petersburg     -5.0    -4.0    -5.0
+America/Indiana/Tell_City      -6.0    -5.0    -6.0
+America/Indiana/Vevay  -5.0    -4.0    -5.0
+America/Indiana/Vincennes      -5.0    -4.0    -5.0
+America/Indiana/Winamac        -5.0    -4.0    -5.0
+America/Inuvik -7.0    -6.0    -7.0
+America/Iqaluit        -5.0    -4.0    -5.0
+America/Jamaica        -5.0    -5.0    -5.0
+America/Juneau -9.0    -8.0    -9.0
+America/Kentucky/Louisville    -5.0    -4.0    -5.0
+America/Kentucky/Monticello    -5.0    -4.0    -5.0
+America/Kralendijk     -4.0    -4.0    -4.0
+America/La_Paz -4.0    -4.0    -4.0
+America/Lima   -5.0    -5.0    -5.0
+America/Los_Angeles    -8.0    -7.0    -8.0
+America/Lower_Princes  -4.0    -4.0    -4.0
+America/Maceio -3.0    -3.0    -3.0
+America/Managua        -6.0    -6.0    -6.0
+America/Manaus -4.0    -4.0    -4.0
+America/Marigot        -4.0    -4.0    -4.0
+America/Martinique     -4.0    -4.0    -4.0
+America/Matamoros      -6.0    -5.0    -6.0
+America/Mazatlan       -7.0    -6.0    -7.0
+America/Menominee      -6.0    -5.0    -6.0
+America/Merida -6.0    -5.0    -6.0
+America/Metlakatla     -9.0    -8.0    -9.0
+America/Mexico_City    -6.0    -5.0    -6.0
+America/Miquelon       -3.0    -2.0    -3.0
+America/Moncton        -4.0    -3.0    -4.0
+America/Monterrey      -6.0    -5.0    -6.0
+America/Montevideo     -3.0    -3.0    -3.0
+America/Montserrat     -4.0    -4.0    -4.0
+America/Nassau -5.0    -4.0    -5.0
+America/New_York       -5.0    -4.0    -5.0
+America/Nipigon        -5.0    -4.0    -5.0
+America/Nome   -9.0    -8.0    -9.0
+America/Noronha        -2.0    -2.0    -2.0
+America/North_Dakota/Beulah    -6.0    -5.0    -6.0
+America/North_Dakota/Center    -6.0    -5.0    -6.0
+America/North_Dakota/New_Salem -6.0    -5.0    -6.0
+America/Ojinaga        -7.0    -6.0    -7.0
+America/Panama -5.0    -5.0    -5.0
+America/Pangnirtung    -5.0    -4.0    -5.0
+America/Paramaribo     -3.0    -3.0    -3.0
+America/Phoenix        -7.0    -7.0    -7.0
+America/Port-au-Prince -5.0    -4.0    -5.0
+America/Port_of_Spain  -4.0    -4.0    -4.0
+America/Porto_Velho    -4.0    -4.0    -4.0
+America/Puerto_Rico    -4.0    -4.0    -4.0
+America/Punta_Arenas   -3.0    -3.0    -3.0
+America/Rainy_River    -6.0    -5.0    -6.0
+America/Rankin_Inlet   -6.0    -5.0    -6.0
+America/Recife -3.0    -3.0    -3.0
+America/Regina -6.0    -6.0    -6.0
+America/Resolute       -6.0    -5.0    -6.0
+America/Rio_Branco     -5.0    -5.0    -5.0
+America/Santarem       -3.0    -3.0    -3.0
+America/Santiago       -3.0    -4.0    -4.0
+America/Santo_Domingo  -4.0    -4.0    -4.0
+America/Sao_Paulo      -2.0    -3.0    -3.0
+America/Scoresbysund   -1.0    0.0     -1.0
+America/Sitka  -9.0    -8.0    -9.0
+America/St_Barthelemy  -4.0    -4.0    -4.0
+America/St_Johns       -3.5    -2.5    -3.5
+America/St_Kitts       -4.0    -4.0    -4.0
+America/St_Lucia       -4.0    -4.0    -4.0
+America/St_Thomas      -4.0    -4.0    -4.0
+America/St_Vincent     -4.0    -4.0    -4.0
+America/Swift_Current  -6.0    -6.0    -6.0
+America/Tegucigalpa    -6.0    -6.0    -6.0
+America/Thule  -4.0    -3.0    -4.0
+America/Thunder_Bay    -5.0    -4.0    -5.0
+America/Tijuana        -8.0    -7.0    -8.0
+America/Toronto        -5.0    -4.0    -5.0
+America/Tortola        -4.0    -4.0    -4.0
+America/Vancouver      -8.0    -7.0    -8.0
+America/Whitehorse     -8.0    -7.0    -8.0
+America/Winnipeg       -6.0    -5.0    -6.0
+America/Yakutat        -9.0    -8.0    -9.0
+America/Yellowknife    -7.0    -6.0    -7.0
+Antarctica/Casey       11.0    11.0    11.0
+Antarctica/Davis       7.0     7.0     7.0
+Antarctica/DumontDUrville      10.0    10.0    10.0
+Antarctica/Macquarie   11.0    11.0    11.0
+Antarctica/Mawson      5.0     5.0     5.0
+Antarctica/McMurdo     13.0    12.0    12.0
+Antarctica/Palmer      -3.0    -3.0    -3.0
+Antarctica/Rothera     -3.0    -3.0    -3.0
+Antarctica/Syowa       3.0     3.0     3.0
+Antarctica/Troll       0.0     2.0     0.0
+Antarctica/Vostok      6.0     6.0     6.0
+Arctic/Longyearbyen    1.0     2.0     1.0
+Asia/Aden      3.0     3.0     3.0
+Asia/Almaty    6.0     6.0     6.0
+Asia/Amman     2.0     3.0     2.0
+Asia/Anadyr    12.0    12.0    12.0
+Asia/Aqtau     5.0     5.0     5.0
+Asia/Aqtobe    5.0     5.0     5.0
+Asia/Ashgabat  5.0     5.0     5.0
+Asia/Atyrau    5.0     5.0     5.0
+Asia/Baghdad   3.0     3.0     3.0
+Asia/Bahrain   3.0     3.0     3.0
+Asia/Baku      4.0     4.0     4.0
+Asia/Bangkok   7.0     7.0     7.0
+Asia/Barnaul   7.0     7.0     7.0
+Asia/Beirut    2.0     3.0     2.0
+Asia/Bishkek   6.0     6.0     6.0
+Asia/Brunei    8.0     8.0     8.0
+Asia/Chita     9.0     9.0     9.0
+Asia/Choibalsan        8.0     8.0     8.0
+Asia/Colombo   5.5     5.5     5.5
+Asia/Damascus  2.0     3.0     2.0
+Asia/Dhaka     6.0     6.0     6.0
+Asia/Dili      9.0     9.0     9.0
+Asia/Dubai     4.0     4.0     4.0
+Asia/Dushanbe  5.0     5.0     5.0
+Asia/Famagusta 3.0     3.0     3.0
+Asia/Gaza      2.0     3.0     2.0
+Asia/Hebron    2.0     3.0     2.0
+Asia/Ho_Chi_Minh       7.0     7.0     7.0
+Asia/Hong_Kong 8.0     8.0     8.0
+Asia/Hovd      7.0     7.0     7.0
+Asia/Irkutsk   8.0     8.0     8.0
+Asia/Jakarta   7.0     7.0     7.0
+Asia/Jayapura  9.0     9.0     9.0
+Asia/Jerusalem 2.0     3.0     2.0
+Asia/Kabul     4.5     4.5     4.5
+Asia/Kamchatka 12.0    12.0    12.0
+Asia/Karachi   5.0     5.0     5.0
+Asia/Kathmandu 5.75    5.75    5.75
+Asia/Khandyga  9.0     9.0     9.0
+Asia/Kolkata   5.5     5.5     5.5
+Asia/Krasnoyarsk       7.0     7.0     7.0
+Asia/Kuala_Lumpur      8.0     8.0     8.0
+Asia/Kuching   8.0     8.0     8.0
+Asia/Kuwait    3.0     3.0     3.0
+Asia/Macau     8.0     8.0     8.0
+Asia/Magadan   11.0    11.0    11.0
+Asia/Makassar  8.0     8.0     8.0
+Asia/Manila    8.0     8.0     8.0
+Asia/Muscat    4.0     4.0     4.0
+Asia/Nicosia   2.0     3.0     2.0
+Asia/Novokuznetsk      7.0     7.0     7.0
+Asia/Novosibirsk       7.0     7.0     7.0
+Asia/Omsk      6.0     6.0     6.0
+Asia/Oral      5.0     5.0     5.0
+Asia/Phnom_Penh        7.0     7.0     7.0
+Asia/Pontianak 7.0     7.0     7.0
+Asia/Pyongyang 8.5     8.5     8.5
+Asia/Qatar     3.0     3.0     3.0
+Asia/Qyzylorda 6.0     6.0     6.0
+Asia/Riyadh    3.0     3.0     3.0
+Asia/Sakhalin  11.0    11.0    11.0
+Asia/Samarkand 5.0     5.0     5.0
+Asia/Seoul     9.0     9.0     9.0
+Asia/Shanghai  8.0     8.0     8.0
+Asia/Singapore 8.0     8.0     8.0
+Asia/Srednekolymsk     11.0    11.0    11.0
+Asia/Taipei    8.0     8.0     8.0
+Asia/Tashkent  5.0     5.0     5.0
+Asia/Tbilisi   4.0     4.0     4.0
+Asia/Tehran    3.5     4.5     3.5
+Asia/Thimphu   6.0     6.0     6.0
+Asia/Tokyo     9.0     9.0     9.0
+Asia/Tomsk     7.0     7.0     7.0
+Asia/Ulaanbaatar       8.0     8.0     8.0
+Asia/Urumqi    6.0     6.0     6.0
+Asia/Ust-Nera  10.0    10.0    10.0
+Asia/Vientiane 7.0     7.0     7.0
+Asia/Vladivostok       10.0    10.0    10.0
+Asia/Yakutsk   9.0     9.0     9.0
+Asia/Yangon    6.5     6.5     6.5
+Asia/Yekaterinburg     5.0     5.0     5.0
+Asia/Yerevan   4.0     4.0     4.0
+Atlantic/Azores        -1.0    0.0     -1.0
+Atlantic/Bermuda       -4.0    -3.0    -4.0
+Atlantic/Canary        0.0     1.0     0.0
+Atlantic/Cape_Verde    -1.0    -1.0    -1.0
+Atlantic/Faroe 0.0     1.0     0.0
+Atlantic/Madeira       0.0     1.0     0.0
+Atlantic/Reykjavik     0.0     0.0     0.0
+Atlantic/South_Georgia -2.0    -2.0    -2.0
+Atlantic/St_Helena     0.0     0.0     0.0
+Atlantic/Stanley       -3.0    -3.0    -3.0
+Australia/Adelaide     10.5    9.5     9.5
+Australia/Brisbane     10.0    10.0    10.0
+Australia/Broken_Hill  10.5    9.5     9.5
+Australia/Currie       11.0    10.0    10.0
+Australia/Darwin       9.5     9.5     9.5
+Australia/Eucla        8.75    8.75    8.75
+Australia/Hobart       11.0    10.0    10.0
+Australia/Lindeman     10.0    10.0    10.0
+Australia/Lord_Howe    11.0    10.5    10.5
+Australia/Melbourne    11.0    10.0    10.0
+Australia/Perth        8.0     8.0     8.0
+Australia/Sydney       11.0    10.0    10.0
+Europe/Amsterdam       1.0     2.0     1.0
+Europe/Andorra 1.0     2.0     1.0
+Europe/Astrakhan       4.0     4.0     4.0
+Europe/Athens  2.0     3.0     2.0
+Europe/Belgrade        1.0     2.0     1.0
+Europe/Berlin  1.0     2.0     1.0
+Europe/Bratislava      1.0     2.0     1.0
+Europe/Brussels        1.0     2.0     1.0
+Europe/Bucharest       2.0     3.0     2.0
+Europe/Budapest        1.0     2.0     1.0
+Europe/Busingen        1.0     2.0     1.0
+Europe/Chisinau        2.0     3.0     2.0
+Europe/Copenhagen      1.0     2.0     1.0
+Europe/Dublin  0.0     1.0     0.0
+Europe/Gibraltar       1.0     2.0     1.0
+Europe/Guernsey        0.0     1.0     0.0
+Europe/Helsinki        2.0     3.0     2.0
+Europe/Isle_of_Man     0.0     1.0     0.0
+Europe/Istanbul        3.0     3.0     3.0
+Europe/Jersey  0.0     1.0     0.0
+Europe/Kaliningrad     2.0     2.0     2.0
+Europe/Kiev    2.0     3.0     2.0
+Europe/Kirov   3.0     3.0     3.0
+Europe/Lisbon  0.0     1.0     0.0
+Europe/Ljubljana       1.0     2.0     1.0
+Europe/London  0.0     1.0     0.0
+Europe/Luxembourg      1.0     2.0     1.0
+Europe/Madrid  1.0     2.0     1.0
+Europe/Malta   1.0     2.0     1.0
+Europe/Mariehamn       2.0     3.0     2.0
+Europe/Minsk   3.0     3.0     3.0
+Europe/Monaco  1.0     2.0     1.0
+Europe/Moscow  3.0     3.0     3.0
+Europe/Oslo    1.0     2.0     1.0
+Europe/Paris   1.0     2.0     1.0
+Europe/Podgorica       1.0     2.0     1.0
+Europe/Prague  1.0     2.0     1.0
+Europe/Riga    2.0     3.0     2.0
+Europe/Rome    1.0     2.0     1.0
+Europe/Samara  4.0     4.0     4.0
+Europe/San_Marino      1.0     2.0     1.0
+Europe/Sarajevo        1.0     2.0     1.0
+Europe/Saratov 4.0     4.0     4.0
+Europe/Simferopol      3.0     3.0     3.0
+Europe/Skopje  1.0     2.0     1.0
+Europe/Sofia   2.0     3.0     2.0
+Europe/Stockholm       1.0     2.0     1.0
+Europe/Tallinn 2.0     3.0     2.0
+Europe/Tirane  1.0     2.0     1.0
+Europe/Ulyanovsk       4.0     4.0     4.0
+Europe/Uzhgorod        2.0     3.0     2.0
+Europe/Vaduz   1.0     2.0     1.0
+Europe/Vatican 1.0     2.0     1.0
+Europe/Vienna  1.0     2.0     1.0
+Europe/Vilnius 2.0     3.0     2.0
+Europe/Volgograd       3.0     3.0     3.0
+Europe/Warsaw  1.0     2.0     1.0
+Europe/Zagreb  1.0     2.0     1.0
+Europe/Zaporozhye      2.0     3.0     2.0
+Europe/Zurich  1.0     2.0     1.0
+Indian/Antananarivo    3.0     3.0     3.0
+Indian/Chagos  6.0     6.0     6.0
+Indian/Christmas       7.0     7.0     7.0
+Indian/Cocos   6.5     6.5     6.5
+Indian/Comoro  3.0     3.0     3.0
+Indian/Kerguelen       5.0     5.0     5.0
+Indian/Mahe    4.0     4.0     4.0
+Indian/Maldives        5.0     5.0     5.0
+Indian/Mauritius       4.0     4.0     4.0
+Indian/Mayotte 3.0     3.0     3.0
+Indian/Reunion 4.0     4.0     4.0
+Pacific/Apia   14.0    13.0    13.0
+Pacific/Auckland       13.0    12.0    12.0
+Pacific/Bougainville   11.0    11.0    11.0
+Pacific/Chatham        13.75   12.75   12.75
+Pacific/Chuuk  10.0    10.0    10.0
+Pacific/Easter -5.0    -6.0    -6.0
+Pacific/Efate  11.0    11.0    11.0
+Pacific/Enderbury      13.0    13.0    13.0
+Pacific/Fakaofo        13.0    13.0    13.0
+Pacific/Fiji   13.0    12.0    12.0
+Pacific/Funafuti       12.0    12.0    12.0
+Pacific/Galapagos      -6.0    -6.0    -6.0
+Pacific/Gambier        -9.0    -9.0    -9.0
+Pacific/Guadalcanal    11.0    11.0    11.0
+Pacific/Guam   10.0    10.0    10.0
+Pacific/Honolulu       -10.0   -10.0   -10.0
+Pacific/Kiritimati     14.0    14.0    14.0
+Pacific/Kosrae 11.0    11.0    11.0
+Pacific/Kwajalein      12.0    12.0    12.0
+Pacific/Majuro 12.0    12.0    12.0
+Pacific/Marquesas      -9.5    -9.5    -9.5
+Pacific/Midway -11.0   -11.0   -11.0
+Pacific/Nauru  12.0    12.0    12.0
+Pacific/Niue   -11.0   -11.0   -11.0
+Pacific/Norfolk        11.0    11.0    11.0
+Pacific/Noumea 11.0    11.0    11.0
+Pacific/Pago_Pago      -11.0   -11.0   -11.0
+Pacific/Palau  9.0     9.0     9.0
+Pacific/Pitcairn       -8.0    -8.0    -8.0
+Pacific/Pohnpei        11.0    11.0    11.0
+Pacific/Port_Moresby   10.0    10.0    10.0
+Pacific/Rarotonga      -10.0   -10.0   -10.0
+Pacific/Saipan 10.0    10.0    10.0
+Pacific/Tahiti -10.0   -10.0   -10.0
+Pacific/Tarawa 12.0    12.0    12.0
+Pacific/Tongatapu      14.0    13.0    13.0
+Pacific/Wake   12.0    12.0    12.0
+Pacific/Wallis 12.0    12.0    12.0
diff --git a/share/db/timezone.sql b/share/db/timezone.sql
new file mode 100644 (file)
index 0000000..0664ab5
--- /dev/null
@@ -0,0 +1,13 @@
+DROP TABLE IF EXISTS timezone;
+CREATE TABLE IF NOT EXISTS timezone (
+  id varchar(2) PRIMARY KEY,
+  -- capital varchar(300),
+  -- continent varchar(300),
+  gmt float(1,1),
+  dst float(1,1),
+  raw float(1,1)
+);
+BEGIN TRANSACTION;
+.separator \t
+.import "timezone.csv" timezone
+COMMIT;
diff --git a/share/db/zipcode b/share/db/zipcode
new file mode 100755 (executable)
index 0000000..c9ce255
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+#exec('curl -s http://download.geonames.org/export/zip/allCountries.zip | zcat');
+#exit;
+@ARGV = ('curl -s http://download.geonames.org/export/zip/allCountries.zip | zcat |');
+
+while (<>) {
+       chomp($_);
+       @_ = split("\t",$_);
+       print join ("\t",@_)."\n";
+}
diff --git a/share/postgres/postgres-create-functions.sql b/share/postgres/postgres-create-functions.sql
deleted file mode 100644 (file)
index ccdf380..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
--- CREATE OR REPLACE FUNCTION generate_create_table_statement(p_table_name varchar)
-CREATE OR REPLACE FUNCTION show_create_table(p_table_name varchar)
-  RETURNS text AS
-$BODY$
-DECLARE
-    v_table_ddl   text;
-    column_record record;
-BEGIN
-    FOR column_record IN 
-        SELECT 
-(SELECT 1 FROM pg_index i WHERE a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) AND i.indrelid = b.relname::regclass AND i.indisprimary) as pk,
-            b.nspname as schema_name,
-            b.relname as table_name,
-            a.attname as column_name,
-            pg_catalog.format_type(a.atttypid, a.atttypmod) as column_type,
-            CASE WHEN 
-                (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
-                 FROM pg_catalog.pg_attrdef d
-                 WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef) IS NOT NULL THEN
-                'DEFAULT '|| (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
-                              FROM pg_catalog.pg_attrdef d
-                              WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef)
-            ELSE
-                ''
-            END as column_default_value,
-            CASE WHEN a.attnotnull = true THEN 
-                'NOT NULL'
-            ELSE
-                'NULL'
-            END as column_not_null,
-            a.attnum as attnum,
-            e.max_attnum as max_attnum
-        FROM 
-            pg_catalog.pg_attribute a
-            INNER JOIN 
-             (SELECT c.oid,
-                n.nspname,
-                c.relname
-              FROM pg_catalog.pg_class c
-                   LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
-              WHERE c.relname ~ ('^('||p_table_name||')$')
-                AND pg_catalog.pg_table_is_visible(c.oid)
-              ORDER BY 2, 3) b
-            ON a.attrelid = b.oid
-            INNER JOIN 
-             (SELECT 
-                  a.attrelid,
-                  max(a.attnum) as max_attnum
-              FROM pg_catalog.pg_attribute a
-              WHERE a.attnum > 0 
-                AND NOT a.attisdropped
-              GROUP BY a.attrelid) e
-            ON a.attrelid=e.attrelid
-        WHERE a.attnum > 0 
-          AND NOT a.attisdropped
-        ORDER BY a.attnum
-    LOOP
-        IF column_record.attnum = 1 THEN
-            v_table_ddl:='CREATE TABLE '||column_record.schema_name||'.'||column_record.table_name||' (';
-        ELSE
-            v_table_ddl:=v_table_ddl||',';
-        END IF;
-
-        IF column_record.attnum <= column_record.max_attnum THEN
-            v_table_ddl:=v_table_ddl||chr(10)||
-                     '  '||column_record.column_name||' '||column_record.column_type||' '||column_record.column_default_value||' '||column_record.column_not_null;
-        END IF;
-        IF column_record.pk = 1 THEN
-          v_table_ddl:=v_table_ddl||' PRIMARY KEY';
-        END IF;
-    END LOOP;
-
-    v_table_ddl:=v_table_ddl||chr(10)||');';
-    RETURN v_table_ddl;
-END;
-$BODY$
-  LANGUAGE 'plpgsql' COST 100.0 SECURITY INVOKER;
index 7e4029a30279294912c470d8f751ea861f558e5e..775b64aee01e2cc83e9341beafbcb3d07cde412e 100644 (file)
@@ -1 +1 @@
-function form_clean(e){var t;for(i=0;i<e.length;i++)"none"!=(t=e.elements[i]).style.display&&("text"==t.type?t.value="":!t.type.match(/^select/)||"limit"!=t.name&&"format"!=t.name||(t.selectedIndex=0))}function form_submit_clean(e){var t=0,n="",o=e.getAttribute("action");if("get"!=e.getAttribute("method"))return!0;for(t=0;t<e.length;t++){var r=e[t];r.name&&(""!=r.value&&"undefined"!=r.value&&(n+=(n?"&":"?")+encodeURI(r.name)+"="+encodeURI(r.value)))}return n=("?"==o?"":o)+n,e.reset(),window.location=n,!1}document.addEventListener("DOMContentLoaded",function(){if(NodeList.prototype.forEach=Array.prototype.forEach,document.querySelectorAll("form").forEach(function(e){e.onsubmit=function(){if(this.elements.limit){var e=this.elements.limit;"undefined"!=window._dbq.default_limit&&e.value==window._dbq.default_limit&&e.removeAttribute("value")}return form_submit_clean(this)}}),document.querySelectorAll("form.menu").forEach(function(e){e.setAttribute("action",window.location.toString().replace(/\?.*$/,"")),e.querySelectorAll("form.menu select.format").forEach(function(e){e.removeAttribute("name"),e.onchange=function(){return this.form.setAttribute("action",window._dbq["table.base"]+"."+this.value),this.form.onsubmit()}}),e.querySelectorAll("form.menu select.tables").forEach(function(e){e.removeAttribute("name"),e.onchange=function(){return this.form.setAttribute("action",window._dbq["db.base"]+"/"+this.value+".html"),this.form.onsubmit()}}),e.querySelectorAll("form.menu select.limit").forEach(function(e){e.onchange=function(){return this.form.onsubmit()}})}),document.querySelector(".nav.bottom")&&document.querySelector("table.rows")&&document.querySelector("table.rows").insertAdjacentHTML("beforebegin",'<div class="nav top">'+document.querySelector(".nav.bottom").innerHTML+"</div>"),document.querySelectorAll("table").forEach(function(e){parseInt(e.offsetWidth)>parseInt(window.innerWidth)&&(e.className=e.className.replace(/(^| +)fixed($| )/,"")+" fixed",e.className=e.className.trim())}),window._dbq.perm<window._dbq.perms.write&&(document.querySelectorAll("form.edit").forEach(function(e){e.setAttribute("onsubmit","return false")}),document.querySelectorAll("form.edit input[type=submit],form.edit input[type=reset]").forEach(function(e){e.setAttribute("style","display:none")})),document.querySelectorAll("form.menu input[type=submit]").forEach(function(e){e.insertAdjacentHTML("afterend",'&nbsp;<input type="button" class="clear '+e.className+'" onclick="form_clean(this.form)" value="'+window._dbq["text.clear"]+'" />'+(window._dbq.perm>=window._dbq.perms.write?'&nbsp;<input type="button" class="add '+e.className+'" onclick="window.location=\''+window._dbq["table.base"]+'/add/\'" value="'+window._dbq["text.add"]+'"/>':""))}),document.querySelector("th.delete")){var e=document.createElement("a");e.setAttribute("href","#"),e.innerHTML=document.querySelector("th.delete").innerHTML,document.querySelector("th.delete").innerHTML="",e.onclick=function(){var e=document.querySelectorAll("form.rm");for(document.querySelector(".rows").className="loader",j=0;j<e.length;++j){var t=e[j],n=t.getAttribute("action"),o=[],r=t.getElementsByTagName("input");for(i=0;i<r.length;++i){var l=r[i];o.push(l.name+"="+encodeURI(l.value))}var a=new XMLHttpRequest;a.open("POST",n,!0),a.setRequestHeader("Content-type","application/x-www-form-urlencoded"),a.onload=function(t){if(4===a.readyState){if(j!=e.length)return;location.reload()}},a.send(o.join("&"))}return!1},document.querySelector("th.delete").appendChild(e)}});
+function form_clean(e){var t;for(i=0;i<e.length;i++)"none"!=(t=e.elements[i]).style.display&&("text"==t.type?t.value="":!t.type.match(/^select/)||"limit"!=t.name&&"format"!=t.name||(t.selectedIndex=0))}function form_submit_clean(e){var t=0,n="",o=e.getAttribute("action");if("get"!=e.getAttribute("method"))return!0;for(t=0;t<e.length;t++){var r=e[t];r.name&&(""!=r.value&&"undefined"!=r.value&&(n+=(n?"&":"?")+encodeURI(r.name)+"="+encodeURI(r.value)))}return n=("?"==o?"":o)+n,e.reset(),window.location=n,!1}document.addEventListener("DOMContentLoaded",function(){if(NodeList.prototype.forEach=Array.prototype.forEach,document.querySelectorAll("form").forEach(function(e){e.onsubmit=function(){if(this.elements.limit){var e=this.elements.limit;"undefined"!=window._dbq.default_limit&&e.value==window._dbq.default_limit&&e.removeAttribute("value")}return form_submit_clean(this)}}),document.querySelectorAll("form.menu").forEach(function(e){e.setAttribute("action",window.location.toString().replace(/\?.*$/,"")),e.querySelectorAll("form.menu select.format").forEach(function(e){e.removeAttribute("name"),e.onchange=function(){return this.form.setAttribute("action",window._dbq["table.base"]+"."+this.value),this.form.onsubmit()}}),e.querySelectorAll("form.menu select.tables").forEach(function(e){e.removeAttribute("name"),e.onchange=function(){return this.form.setAttribute("action",window._dbq["db.base"]+"/"+this.value+".html"),this.form.onsubmit()}}),e.querySelectorAll("form.menu select.limit").forEach(function(e){e.onchange=function(){return this.form.onsubmit()}})}),document.querySelector(".nav.bottom")&&document.querySelector("table.rows")&&document.querySelector("table.rows").insertAdjacentHTML("beforebegin",'<div class="nav top">'+document.querySelector(".nav.bottom").innerHTML+"</div>"),document.querySelectorAll("table").forEach(function(e){parseInt(e.offsetWidth)>parseInt(window.innerWidth)&&(e.className=e.className.replace(/(^| +)fixed($| )/,"")+" fixed",e.className=e.className.trim())}),window._dbq.perm<window._dbq.perms.write&&(document.querySelectorAll("form.edit").forEach(function(e){e.setAttribute("onsubmit","return false")}),document.querySelectorAll("form.edit input[type=submit],form.edit input[type=reset]").forEach(function(e){e.setAttribute("style","display:none")})),document.querySelectorAll("form.menu input[type=submit]").forEach(function(e){e.insertAdjacentHTML("afterend",'&nbsp;<input type="button" class="clear '+e.className+'" onclick="form_clean(this.form)" value="'+window._dbq["text.clear"]+'" />'+(window._dbq.perm>=window._dbq.perms.write?'&nbsp;<input type="button" class="add '+e.className+'" onclick="window.location=\''+window._dbq["table.base"]+'/add/\'" value="'+window._dbq["text.add"]+'"/>':""))}),document.querySelector("th.delete")){var e=document.createElement("a");e.setAttribute("href","#"),e.innerHTML=document.querySelector("th.delete").innerHTML,document.querySelector("th.delete").innerHTML="",e.onclick=function(){var e=document.querySelectorAll("form.rm");for((document.querySelector(".rows")?document.querySelector(".rows"):"").className="loader",j=0;j<e.length;++j){var t=e[j],n=t.getAttribute("action"),o=[],r=t.getElementsByTagName("input");for(i=0;i<r.length;++i){var l=r[i];o.push(l.name+"="+encodeURI(l.value))}var a=new XMLHttpRequest;a.open("POST",n,!0),a.setRequestHeader("Content-type","application/x-www-form-urlencoded"),a.onload=function(t){if(4===a.readyState){if(j!=e.length)return;location.reload()}},a.send(o.join("&"))}return!1},document.querySelector("th.delete").appendChild(e)}});