@@ -279,15 +279,13 @@ func TestUpdate(t *testing.T) {
279279 ` ,
280280 nil ,
281281 },
282- /*
283- {
284- `
285- DROP FUNCTION IF EXISTS bar(text);
286- DROP FUNCTION IF EXISTS bar(text) CASCADE;
287- `,
288- pg.NewCatalog(),
289- },
290- */
282+ {
283+ `
284+ DROP FUNCTION IF EXISTS bar;
285+ DROP FUNCTION IF EXISTS bar();
286+ ` ,
287+ nil ,
288+ },
291289 {
292290 `
293291 CREATE TABLE venues (id SERIAL PRIMARY KEY);
@@ -309,160 +307,154 @@ func TestUpdate(t *testing.T) {
309307 },
310308 },
311309 },
312- /*
313- { // first argument has no name
314- `
315- CREATE FUNCTION foo(TEXT) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
316- `,
317- pg.Catalog{
318- Schemas: map[string]pg.Schema{
319- "public": {
320- Funcs: map[string][]pg.Function{
321- "foo": []pg.Function{
322- {
323- Name: "foo",
324- Arguments: []pg.Argument{
325- {
326- Name: "",
327- DataType: "text",
328- },
329- },
330- ReturnType: "bool",
331- },
332- },
310+ {
311+ `
312+ CREATE FUNCTION foo(TEXT) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
313+ ` ,
314+ & catalog.Schema {
315+ Name : "public" ,
316+ Funcs : []* catalog.Function {
317+ {
318+ Name : "foo" ,
319+ Args : []* catalog.Argument {
320+ {
321+ Type : & ast.TypeName {Name : "text" },
333322 },
334323 },
324+ ReturnType : & ast.TypeName {Name : "bool" },
335325 },
336326 },
337327 },
338- { // same name, different arity
339- `
340- CREATE FUNCTION foo(bar TEXT) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
341- CREATE FUNCTION foo(bar TEXT, baz TEXT) RETURNS TEXT AS $$ SELECT "baz" $$ LANGUAGE sql;
342- `,
343- pg.Catalog{
344- Schemas: map[string]pg.Schema{
345- "public": {
346- Funcs: map[string][]pg.Function{
347- "foo": []pg.Function{
348- {
349- Name: "foo",
350- Arguments: []pg.Argument{
351- {
352- Name: "bar",
353- DataType: "text",
354- },
355- },
356- ReturnType: "bool",
357- },
358- {
359- Name: "foo",
360- Arguments: []pg.Argument{
361- {
362- Name: "bar",
363- DataType: "text",
364- },
365- {
366- Name: "baz",
367- DataType: "text",
368- },
369- },
370- ReturnType: "text",
371- },
372- },
328+ },
329+ {
330+ `
331+ CREATE FUNCTION foo(bar TEXT) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
332+ CREATE FUNCTION foo(bar TEXT, baz TEXT) RETURNS TEXT AS $$ SELECT "baz" $$ LANGUAGE sql;
333+ ` ,
334+ & catalog.Schema {
335+ Name : "public" ,
336+ Funcs : []* catalog.Function {
337+ {
338+ Name : "foo" ,
339+ Args : []* catalog.Argument {
340+ {
341+ Name : "bar" ,
342+ Type : & ast.TypeName {Name : "text" },
373343 },
374344 },
345+ ReturnType : & ast.TypeName {Name : "bool" },
346+ },
347+ {
348+ Name : "foo" ,
349+ Args : []* catalog.Argument {
350+ {
351+ Name : "bar" ,
352+ Type : & ast.TypeName {Name : "text" },
353+ },
354+ {
355+ Name : "baz" ,
356+ Type : & ast.TypeName {Name : "text" },
357+ },
358+ },
359+ ReturnType : & ast.TypeName {Name : "text" },
375360 },
376361 },
377362 },
378- { // same name and arity, different arg types
379- `
380- CREATE FUNCTION foo(bar TEXT) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
381- CREATE FUNCTION foo(bar INTEGER) RETURNS TEXT AS $$ SELECT "baz" $$ LANGUAGE sql;
382- `,
383- pg.Catalog{
384- Schemas: map[string]pg.Schema{
385- "public": {
386- Funcs: map[string][]pg.Function{
387- "foo": []pg.Function{
388- {
389- Name: "foo",
390- Arguments: []pg.Argument{
391- {
392- Name: "bar",
393- DataType: "text",
394- },
395- },
396- ReturnType: "bool",
397- },
398- {
399- Name: "foo",
400- Arguments: []pg.Argument{
401- {
402- Name: "bar",
403- DataType: "pg_catalog.int4",
404- },
405- },
406- ReturnType: "text",
407- },
408- },
363+ },
364+ {
365+ `
366+ CREATE FUNCTION foo(bar TEXT) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
367+ CREATE FUNCTION foo(bar INTEGER) RETURNS TEXT AS $$ SELECT "baz" $$ LANGUAGE sql;
368+ ` ,
369+ & catalog.Schema {
370+ Name : "public" ,
371+ Funcs : []* catalog.Function {
372+ {
373+ Name : "foo" ,
374+ Args : []* catalog.Argument {
375+ {
376+ Name : "bar" ,
377+ Type : & ast.TypeName {Name : "text" },
378+ },
379+ },
380+ ReturnType : & ast.TypeName {Name : "bool" },
381+ },
382+ {
383+ Name : "foo" ,
384+ Args : []* catalog.Argument {
385+ {
386+ Name : "bar" ,
387+ Type : & ast.TypeName {Schema : "pg_catalog" , Name : "int4" },
409388 },
410389 },
390+ ReturnType : & ast.TypeName {Name : "text" },
411391 },
412392 },
413393 },
414- {
415- `
416- CREATE FUNCTION foo(bar TEXT, baz TEXT="baz") RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
417- `,
418- pg.Catalog{
419- Schemas: map[string]pg.Schema{
420- "public": {
421- Funcs: map[string][]pg.Function{
422- "foo": []pg.Function{
423- {
424- Name: "foo",
425- Arguments: []pg.Argument{
426- {
427- Name: "bar",
428- DataType: "text",
429- },
430- {
431- Name: "baz",
432- DataType: "text",
433- HasDefault: true,
434- },
435- },
436- ReturnType: "bool",
437- },
438- },
394+ },
395+ {
396+ `
397+ CREATE FUNCTION foo(bar TEXT, baz TEXT="baz") RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
398+ ` ,
399+ & catalog.Schema {
400+ Name : "public" ,
401+ Funcs : []* catalog.Function {
402+ {
403+ Name : "foo" ,
404+ Args : []* catalog.Argument {
405+ {
406+ Name : "bar" ,
407+ Type : & ast.TypeName {Name : "text" },
408+ },
409+ {
410+ Name : "baz" ,
411+ Type : & ast.TypeName {Name : "text" },
412+ HasDefault : true ,
439413 },
440414 },
415+ ReturnType : & ast.TypeName {Name : "bool" },
441416 },
442417 },
443418 },
444- {
445- `
446- CREATE TABLE pg_temp.migrate (val INT);
447- INSERT INTO pg_temp.migrate (val) SELECT val FROM old;
448- INSERT INTO new (val) SELECT val FROM pg_temp.migrate;
449- `,
450- pg.Catalog{
451- Schemas: map[string]pg.Schema{
452- "pg_temp": {
453- Tables: map[string]pg.Table{
454- "migrate": pg.Table{
455- Name: "migrate",
456- Columns: []pg.Column{
457- {Name: "val", DataType: "pg_catalog.int4", NotNull: false, Table: pg.FQN{Schema: "pg_temp", Rel: "migrate"}},
458- },
459- },
419+ },
420+ {
421+ `
422+ CREATE FUNCTION foo(bar text) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
423+ DROP FUNCTION foo(text);
424+ ` ,
425+ nil ,
426+ },
427+ {
428+ `
429+ CREATE FUNCTION foo(bar text) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
430+ DROP FUNCTION foo;
431+ ` ,
432+ nil ,
433+ },
434+ // CREATE FUNCTION foo(bar text) RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
435+ // CREATE FUNCTION foo() RETURNS bool AS $$ SELECT true $$ LANGUAGE sql;
436+ // DROP FUNCTION foo -- FAIL
437+ {
438+ `
439+ CREATE TABLE pg_temp.migrate (val SERIAL);
440+ INSERT INTO pg_temp.migrate (val) SELECT val FROM old;
441+ INSERT INTO new (val) SELECT val FROM pg_temp.migrate;
442+ ` ,
443+ & catalog.Schema {
444+ Name : "pg_temp" ,
445+ Tables : []* catalog.Table {
446+ {
447+ Rel : & ast.TableName {Schema : "pg_temp" , Name : "migrate" },
448+ Columns : []* catalog.Column {
449+ {
450+ Name : "val" ,
451+ Type : ast.TypeName {Name : "serial" },
460452 },
461453 },
462454 },
463455 },
464456 },
465- */
457+ },
466458 {
467459 `
468460 CREATE SCHEMA foo;
0 commit comments