#! /usr/bin/perl
#
#	clx_idx - Create Index files for CLX database
#
# Last Change: DL6RAI Thu Mar  9 02:53:48 GMT 2000

require 'getopts.pl';

$| = 1;
$db_name = "clx_db";
$psql = "psql -q -d $db_name";
$tabdir = "$ENV{'HOME'}/db";
$verbose = 0;

&Getopts('v');

if (length($opt_v) > 0) {
    $verbose = 1;
    $psql = "psql -ed $db_name";
}

# Delete all existing indexes

if (! $verbose) { print "Dropping indexes...\n"; }
$qry = "select relname from pg_class where relname ~ 'idx_*' \
	and relkind = 'i'";
@idx = `$psql -Aqtc "$qry"`;
chop(@idx);

foreach (@idx) {
        tr / //d;
	$qry = sprintf("drop index %s;",$_);
	if (! $verbose) { print "-- dropping index $_"; }
	system "$psql -Aqtc \"$qry\"";
	if (! $verbose) { print ".\n"; }
}

if (! $verbose) { print "\nCreating indexes...\n"; }

# Create regular indexes

opendir(DIR,$tabdir);
@files = grep (/\.idx/,readdir(DIR));
closedir(DIR);

foreach $f (@files) {
	$tab = $f;
	$tab =~ s|\.idx||;
	if (! $verbose) { print "-- creating index for $tab from $f"; }
	system "$psql < $tabdir/$f";
	if (! $verbose) { print ".\n"; }
}

# Now create indexes for udt tables

$qry = "select relname from pg_class where relname ~ 'udt_*' and \
	relkind = 'r'";
@udt = `$psql -Aqtc "$qry"`;
chop(@udt);

foreach (@udt) {
        tr / //d;
	$qry = sprintf("create index idx_%s on %s using hash \
		(dt_key varchar_ops);",$_,$_);
	if (! $verbose) { print "-- creating index for $_"; }
	system "$psql -Aqtc \"$qry\"";
	if (! $verbose) { print ".\n"; }
}

if (! $verbose) { print "\nIndexes created.\n"; }
