Re: DLZ PostgreSQL help needed

Brian Hechinger <[email protected]>
Newsgroups gmane.network.dns.bind9.dlz
Message-ID <[email protected]>
Ooops, sorry about the double message, didn't realize i had attached it 
as well.  Although the attached version looks better.  I hate Thunderbird.

-brian

Brian Hechinger wrote:
> Hello DLZ Team,
> 
> I started working with DLZ and PostgreSQL a couple months ago.  I first
> setup a very basic table that worked with the queries provided in the
> examples.  Or so I thought.  I didn't completely test it, I just plowed
> on to turning it into stored procedures and then finally insane stored
> procedures that worked with the app I was writing.
> 
> In that final form it mostly works, but there are some parts of it that
> are just giving me a terribly hard time.  They tend to be the SOA/NS/MX
> type records that I just can't seem to get right.
> 
> So I've decided that perhaps a bit of "back to basics" is in order. My
> plans for this were two-fold.  First, I really wanted to understand
> exactly what was going on at a basic level so I could make my more
> complicated version work. Second, I really struggled with the dlz pgsql
> docs when I first started working with this.  I wanted to be able to
> have a set of example data and example stored procedures that I could
> contribute to the DLZ project so that people in the future who wanted to
> do exactly what I'm attempting to do don't have to struggle as much as I
> have had to.
> 
> Here's what I am currently running into.  My table looks like this:
> 
> CREATE TABLE dns_records (
>     oid SERIAL PRIMARY KEY NOT NULL,
>     zone VARCHAR,
>     ttl INTEGER,
>     recordtype VARCHAR,
>     host VARCHAR,
>     mx_priority INTEGER,
>     data VARCHAR,
>     primary_ns VARCHAR,
>     resp_person VARCHAR,
>     serial INTEGER,
>     refresh INTEGER,
>     retry INTEGER,
>     expire INTEGER,
>     minimum INTEGER
> );
> 
> My queries are directly out of the documentation, but I'll post them
> anyway just to make sure I didn't fat-finger something.
> 
> dlz "postgres zone" {
>     database "postgres 2
>     {host=localhost port=5432 dbname=dns_test user=dns password=xxxxx}
>     {select zone from dns_records where zone = '%zone%'}
>     {select ttl, recordtype, mx_priority, case when 
> lower(recordtype)='txt' then '\"' || data
>         || '\"' else data end from dns_records where zone = '%zone%' and 
> host = '%record%'
>         and not (recordtype = 'SOA' or recordtype = 'NS')}
>     {select ttl, recordtype, mx_priority, data, resp_person, serial, 
> refresh, retry, expire,
>         minimum from dns_records where zone = '%zone%' and (recordtype = 
> 'SOA' or recordtype='NS')}
>     {select ttl, recordtype, host, mx_priority, data, resp_person, 
> serial, refresh, retry, expire,
>         minimum from dns_records where zone = '%zone%'}
>     {select zone from xfr_table where zone = '%zone%' and client = 
> '%client%'}";
> };
> 
> The data format is going to be ugly, so I'll do it as CSV:
> 
> oid,zone,ttl,recordtype,host,mx_priority,data,primary_ns,resp_person,serial,refresh,retry,expire,minimum 
> 
> 1,example.com,300,SOA,,,,ns1.example.com,dnsadmin.example.com,2008011701,8600,8600,8600,8600 
> 
> 2,example.com,300,NS,@,,ns1.example.com,,,,,,,
> 3,example.com,300,NS,@,,ns2.example.com,,,,,,,
> 4,example.com,300,MX,@,10,mail1.example.com,,,,,,,
> 5,example.com,300,MX,@,20,mail2.example.com,,,,,,,
> 6,example.com,300,A,machine1,,10.0.0.1,,,,,,,
> 7,example.com,300,A,machine2,,10.0.0.2,,,,,,,
> 8,0.0.10.in-addr.arpa,300,PTR,1,,machine1.example.com.,,,,,,,
> 9,0.0.10.in-addr.arpa,300,PTR,2,,machine2.example.com.,,,,,,,
> 10,example.com,300,CNAME,www,,machine1,,,,,,,
> 11,example.com,300,CNAME,ftp,,machine2,,,,,,,
> 
> As far as I can tell, this is good data, maybe that's part of the
> problem?  Do I have my data wrong and that's what's causing my problems?
> 
> If I do a simple A record lookup, I get results:
> 
> $ dig @localhost A www.example.com
> ;; ANSWER SECTION:
> www.example.com.        300     IN      CNAME   machine1.example.com.
> machine1.example.com.   300     IN      A       10.0.0.1
> 
> However, this is the last thing in the log file:
> 
> 21-Jan-2008 08:24:59.787 984 query is 'select ttl, recordtype, 
> mx_priority, data, resp_person, serial, refresh, retry, expire,
>                 minimum from dns_records where zone = 'example.com' and 
> (recordtype = 'SOA' or recordtype='NS')'
> 21-Jan-2008 08:24:59.787 984 executing query for 0 time
> 21-Jan-2008 08:24:59.788 984 rs ok
> 21-Jan-2008 08:24:59.788 984 cleaning up
> 21-Jan-2008 08:24:59.788 984 unlocking mutex
> 21-Jan-2008 08:24:59.789 984 returning
> 21-Jan-2008 08:24:59.789 dns_rdata_fromtext: buffer-0xb7a75ee4:1: near 
> eof: unexpected end of input
> 21-Jan-2008 08:24:59.789 dns_sdlz_putrr returned error. Error code was: 
> unexpected end of input
> 
> That query returns these results:
> 
> dns_test=# select ttl, recordtype, mx_priority, data, resp_person, 
> serial, refresh, retry, expire,
> dns_test-# minimum from dns_records where zone = 'example.com' and 
> (recordtype = 'SOA' or recordtype='NS');
>  ttl | recordtype | mx_priority |      data       |     resp_person   
> |   serial   | refresh | retry | expire | minimum
> -----+------------+-------------+-----------------+----------------------+------------+---------+-------+--------+--------- 
> 
>  300 | SOA        |             |                 | dnsadmin.example.com 
> | 2008011701 |    8600 |  8600 |   8600 |    8600
>  300 | NS         |             | ns1.example.com |   |            
> |         |       |        |
>  300 | NS         |             | ns2.example.com |   |            
> |         |       |        |
> (3 rows)
> 
> Is that not correct?  That certainly looks right to me.
> 
> I don't get NS record info back with my queries, so the fact that it's
> failing that last query makes sense that I don't get the data related to
> that.  But what is wrong with that query that it doesn't like?
> 
> If I try to lookup an MX record, I get the same error on the same query.
> A side question to that is why does that query return mx_priority if
> it's looking at only SOA and NS, neither of which would ever have that
> data?
> 
> Since I've taken the queries from the documentation, I can only assume
> I've gotten my data wrong somehow.
> 
> Please help, this is extremely frustrating!!!
> 
> Thanks,
> 
> -brian
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Bind-dlz-testers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/bind-dlz-testers

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.