Ejemplo n.º 1
0
def test_ogr_index_11():

    ds = ogr.GetDriverByName('ESRI Shapefile').CreateDataSource(
        'tmp/ogr_index_11.dbf')
    lyr = ds.CreateLayer('ogr_index_11', geom_type=ogr.wkbNone)
    lyr.CreateField(ogr.FieldDefn('intfield', ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn('strfield', ogr.OFTString))

    ogrtest.quick_create_feature(lyr, [1, "foo"], None)
    ogrtest.quick_create_feature(lyr, [1, "bar"], None)
    ogrtest.quick_create_feature(lyr, [2, "foo"], None)
    ogrtest.quick_create_feature(lyr, [2, "bar"], None)
    ogrtest.quick_create_feature(lyr, [3, "bar"], None)

    ds.ExecuteSQL('CREATE INDEX ON ogr_index_11 USING intfield')
    ds.ExecuteSQL('CREATE INDEX ON ogr_index_11 USING strfield')

    lyr.SetAttributeFilter("intfield = 1 OR strfield = 'bar'")
    ogr_index_11_check(lyr, [0, 1, 3])

    lyr.SetAttributeFilter("intfield = 1 AND strfield = 'bar'")
    ogr_index_11_check(lyr, [1])

    lyr.SetAttributeFilter("intfield = 1 AND strfield = 'foo'")
    ogr_index_11_check(lyr, [0])

    lyr.SetAttributeFilter("intfield = 3 AND strfield = 'foo'")
    ogr_index_11_check(lyr, [])

    lyr.SetAttributeFilter("intfield IN (1, 2, 3)")
    ogr_index_11_check(lyr, [0, 1, 2, 3, 4])

    ds = None
def ogr_index_2():

    drv = ogr.GetDriverByName('ESRI Shapefile')
    gdaltest.s_ds = drv.CreateDataSource('join_t.dbf')
    gdaltest.s_lyr = gdaltest.s_ds.CreateLayer('join_t', geom_type=ogr.wkbNone)

    ogrtest.quick_create_layer_def(gdaltest.s_lyr,
                                   [('SKEY', ogr.OFTInteger),
                                    ('VALUE', ogr.OFTString, 16)])

    for i in range(20):
        ogrtest.quick_create_feature(gdaltest.s_lyr, [i, 'Value ' + str(i)],
                                     None)

    if gdaltest.s_lyr.GetFeatureCount() != 20:
        gdaltest.post_reason('FeatureCount wrong')
        return 'fail'

    gdaltest.s_ds.Release()
    gdaltest.s_lyr = None
    gdaltest.s_ds = None

    gdaltest.s_ds = ogr.OpenShared('join_t.dbf', update=1)
    gdaltest.s_lyr = gdaltest.s_ds.GetLayerByName('join_t')

    return 'success'
Ejemplo n.º 3
0
def ogr_index_2():

    drv = ogr.GetDriverByName('ESRI Shapefile')
    gdaltest.s_ds = drv.CreateDataSource('join_t.dbf')
    gdaltest.s_lyr = gdaltest.s_ds.CreateLayer('join_t',
                                               geom_type=ogr.wkbNone)

    ogrtest.quick_create_layer_def(gdaltest.s_lyr,
                                   [('SKEY', ogr.OFTInteger),
                                    ('VALUE', ogr.OFTString, 16)])

    for i in range(20):
        ogrtest.quick_create_feature(gdaltest.s_lyr, [i, 'Value ' + str(i)], None)

    if gdaltest.s_lyr.GetFeatureCount() != 20:
        gdaltest.post_reason('FeatureCount wrong')
        return 'fail'

    gdaltest.s_ds.Release()
    gdaltest.s_lyr = None
    gdaltest.s_ds = None

    gdaltest.s_ds = ogr.OpenShared('join_t.dbf', update=1)
    gdaltest.s_lyr = gdaltest.s_ds.GetLayerByName('join_t')

    return 'success'
Ejemplo n.º 4
0
def ogr_join_22():

    ds = ogr.GetDriverByName('Memory').CreateDataSource('')
    lyr = ds.CreateLayer('first')
    ogrtest.quick_create_layer_def(lyr, [['id.1'], ['id2']])
    ogrtest.quick_create_feature(lyr, ['key1', 'key2'], None)

    lyr = ds.CreateLayer('second')
    ogrtest.quick_create_layer_def(lyr, [['id.1'], ['id2'], ['val']])
    ogrtest.quick_create_feature(lyr, ['key1', 'keyX', '1'], None)
    ogrtest.quick_create_feature(lyr, ['key1', 'key2', '2'], None)
    ogrtest.quick_create_feature(lyr, ['key1', 'keyY', '3'], None)

    sql_lyr = ds.ExecuteSQL(
        "SELECT val FROM first JOIN second ON first.\"id.1\" = second.\"id.1\" AND first.id2 = second.id2"
    )
    feat = sql_lyr.GetNextFeature()
    val = feat.GetFieldAsString(0)
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    if val != '2':
        gdaltest.post_reason('fail')
        print(val)
        return 'fail'

    return 'success'
Ejemplo n.º 5
0
def test_ogr_join_23():

    ds = ogr.GetDriverByName('Memory').CreateDataSource('')
    lyr = ds.CreateLayer('first')
    ogrtest.quick_create_layer_def(lyr, [['f']])
    ogrtest.quick_create_feature(lyr, [None], None)
    ogrtest.quick_create_feature(lyr, ['key1'], None)

    lyr = ds.CreateLayer('second')
    ogrtest.quick_create_layer_def(lyr, [['f']])
    ogrtest.quick_create_feature(lyr, ['key1'], None)
    ogrtest.quick_create_feature(lyr, [None], None)

    sql_lyr = ds.ExecuteSQL(
        "SELECT * FROM first JOIN second ON first.f = second.f")
    feat = sql_lyr.GetNextFeature()
    if feat.IsFieldSetAndNotNull('second.f'):
        feat.DumpReadable()
        pytest.fail()
    feat = sql_lyr.GetNextFeature()
    if feat['f'] != 'key1' or feat['second.f'] != 'key1':
        feat.DumpReadable()
        pytest.fail()
    ds.ReleaseResultSet(sql_lyr)

    ds = None
Ejemplo n.º 6
0
def ogr_join_22():

    ds = ogr.GetDriverByName('Memory').CreateDataSource('')
    lyr = ds.CreateLayer('first')
    ogrtest.quick_create_layer_def(lyr, [['id.1'], ['id2']])
    ogrtest.quick_create_feature(lyr, [ 'key1', 'key2' ], None)

    lyr = ds.CreateLayer('second')
    ogrtest.quick_create_layer_def(lyr, [['id.1'], ['id2'], ['val']])
    ogrtest.quick_create_feature(lyr, [ 'key1', 'keyX', '1' ], None)
    ogrtest.quick_create_feature(lyr, [ 'key1', 'key2', '2' ], None)
    ogrtest.quick_create_feature(lyr, [ 'key1', 'keyY', '3' ], None)

    sql_lyr = ds.ExecuteSQL("SELECT val FROM first JOIN second ON first.\"id.1\" = second.\"id.1\" AND first.id2 = second.id2")
    feat = sql_lyr.GetNextFeature()
    val = feat.GetFieldAsString(0)
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    if val != '2':
        gdaltest.post_reason('fail')
        print(val)
        return 'fail'

    return 'success'
Ejemplo n.º 7
0
def ogr_join_22():

    ds = ogr.GetDriverByName("Memory").CreateDataSource("")
    lyr = ds.CreateLayer("first")
    ogrtest.quick_create_layer_def(lyr, [["id.1"], ["id2"]])
    ogrtest.quick_create_feature(lyr, ["key1", "key2"], None)

    lyr = ds.CreateLayer("second")
    ogrtest.quick_create_layer_def(lyr, [["id.1"], ["id2"], ["val"]])
    ogrtest.quick_create_feature(lyr, ["key1", "keyX", "1"], None)
    ogrtest.quick_create_feature(lyr, ["key1", "key2", "2"], None)
    ogrtest.quick_create_feature(lyr, ["key1", "keyY", "3"], None)

    sql_lyr = ds.ExecuteSQL(
        'SELECT val FROM first JOIN second ON first."id.1" = second."id.1" AND first.id2 = second.id2'
    )
    feat = sql_lyr.GetNextFeature()
    val = feat.GetFieldAsString(0)
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    if val != "2":
        gdaltest.post_reason("fail")
        print(val)
        return "fail"

    return "success"
Ejemplo n.º 8
0
def ogr_join_23():

    ds = ogr.GetDriverByName('Memory').CreateDataSource('')
    lyr = ds.CreateLayer('first')
    ogrtest.quick_create_layer_def(lyr, [['f']])
    ogrtest.quick_create_feature(lyr, [None], None)
    ogrtest.quick_create_feature(lyr, ['key1'], None)

    lyr = ds.CreateLayer('second')
    ogrtest.quick_create_layer_def(lyr, [['f']])
    ogrtest.quick_create_feature(lyr, ['key1'], None)
    ogrtest.quick_create_feature(lyr, [None], None)

    sql_lyr = ds.ExecuteSQL("SELECT * FROM first JOIN second ON first.f = second.f")
    feat = sql_lyr.GetNextFeature()
    if feat.IsFieldSetAndNotNull('second.f'):
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'
    feat = sql_lyr.GetNextFeature()
    if feat['f'] != 'key1' or feat['second.f'] != 'key1':
        gdaltest.post_reason('fail')
        feat.DumpReadable()
        return 'fail'
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    return 'success'
Ejemplo n.º 9
0
def ogr_index_11():

    ds = ogr.GetDriverByName('ESRI Shapefile').CreateDataSource('tmp/ogr_index_11.dbf')
    lyr = ds.CreateLayer('ogr_index_11', geom_type=ogr.wkbNone)
    lyr.CreateField(ogr.FieldDefn('intfield', ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn('strfield', ogr.OFTString))

    ogrtest.quick_create_feature(lyr, [1, "foo"], None)
    ogrtest.quick_create_feature(lyr, [1, "bar"], None)
    ogrtest.quick_create_feature(lyr, [2, "foo"], None)
    ogrtest.quick_create_feature(lyr, [2, "bar"], None)
    ogrtest.quick_create_feature(lyr, [3, "bar"], None)

    ds.ExecuteSQL('CREATE INDEX ON ogr_index_11 USING intfield')
    ds.ExecuteSQL('CREATE INDEX ON ogr_index_11 USING strfield')

    lyr.SetAttributeFilter("intfield = 1 OR strfield = 'bar'")
    ret = ogr_index_11_check(lyr, [0, 1, 3])
    if ret != 'success':
        return ret

    lyr.SetAttributeFilter("intfield = 1 AND strfield = 'bar'")
    ret = ogr_index_11_check(lyr, [1])
    if ret != 'success':
        return ret

    lyr.SetAttributeFilter("intfield = 1 AND strfield = 'foo'")
    ret = ogr_index_11_check(lyr, [0])
    if ret != 'success':
        return ret

    lyr.SetAttributeFilter("intfield = 3 AND strfield = 'foo'")
    ret = ogr_index_11_check(lyr, [])
    if ret != 'success':
        return ret

    lyr.SetAttributeFilter("intfield IN (1, 2, 3)")
    ret = ogr_index_11_check(lyr, [0, 1, 2, 3, 4])
    if ret != 'success':
        return ret

    ds = None

    return 'success'
Ejemplo n.º 10
0
def create_join_t_test_file(create_index=False):
    drv = ogr.GetDriverByName('ESRI Shapefile')
    s_ds = drv.CreateDataSource('join_t.dbf')
    s_lyr = s_ds.CreateLayer('join_t', geom_type=ogr.wkbNone)

    ogrtest.quick_create_layer_def(s_lyr, [('SKEY', ogr.OFTInteger),
                                           ('VALUE', ogr.OFTString, 16)])

    for i in range(20):
        ogrtest.quick_create_feature(s_lyr, [i, 'Value ' + str(i)], None)

    if create_index:
        s_ds.ExecuteSQL('CREATE INDEX ON join_t USING value')
        s_ds.ExecuteSQL('CREATE INDEX ON join_t USING skey')

    s_ds.Release()

    yield

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('join_t.dbf')
Ejemplo n.º 11
0
def test_ogr_join_15():

    ds = ogr.GetDriverByName('CSV').CreateDataSource('/vsimem/ogr_join_14')
    lyr = ds.CreateLayer('first')
    ogrtest.quick_create_layer_def(lyr, [['id']])
    ogrtest.quick_create_feature(lyr, ['key'], None)

    lyr = ds.CreateLayer('second')
    ogrtest.quick_create_layer_def(lyr, [['col1_2'], ['id'], ['col3_2']])
    ogrtest.quick_create_feature(lyr, ['a2', 'key', 'c2'], None)

    lyr = ds.CreateLayer('third')
    ogrtest.quick_create_layer_def(lyr, [['col1_3'], ['id'], ['col3_3']])
    ogrtest.quick_create_feature(lyr, ['a3', 'key', 'c3'], None)

    sql_lyr = ds.ExecuteSQL(
        "SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id"
    )
    feat = sql_lyr.GetNextFeature()
    val1 = feat.GetFieldAsString(0)
    val2 = feat.GetFieldAsString(1)
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    gdal.Unlink('/vsimem/ogr_join_14/first.csv')
    gdal.Unlink('/vsimem/ogr_join_14/second.csv')
    gdal.Unlink('/vsimem/ogr_join_14/third.csv')
    gdal.Unlink('/vsimem/ogr_join_14')

    assert val1 == 'c2'

    assert val2 == 'c2'
Ejemplo n.º 12
0
def test_ogr_join_15():

    ds = ogr.GetDriverByName('CSV').CreateDataSource('/vsimem/ogr_join_14')
    lyr = ds.CreateLayer('first')
    ogrtest.quick_create_layer_def(lyr, [['id']])
    ogrtest.quick_create_feature(lyr, ['key'], None)

    lyr = ds.CreateLayer('second')
    ogrtest.quick_create_layer_def(lyr, [['col1_2'], ['id'], ['col3_2']])
    ogrtest.quick_create_feature(lyr, ['a2', 'key', 'c2'], None)

    lyr = ds.CreateLayer('third')
    ogrtest.quick_create_layer_def(lyr, [['col1_3'], ['id'], ['col3_3']])
    ogrtest.quick_create_feature(lyr, ['a3', 'key', 'c3'], None)

    sql_lyr = ds.ExecuteSQL("SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id")
    feat = sql_lyr.GetNextFeature()
    val1 = feat.GetFieldAsString(0)
    val2 = feat.GetFieldAsString(1)
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    gdal.Unlink('/vsimem/ogr_join_14/first.csv')
    gdal.Unlink('/vsimem/ogr_join_14/second.csv')
    gdal.Unlink('/vsimem/ogr_join_14/third.csv')
    gdal.Unlink('/vsimem/ogr_join_14')

    assert val1 == 'c2'

    assert val2 == 'c2'
Ejemplo n.º 13
0
def ogr_join_15():

    ds = ogr.GetDriverByName("CSV").CreateDataSource("/vsimem/ogr_join_14")
    lyr = ds.CreateLayer("first")
    ogrtest.quick_create_layer_def(lyr, [["id"]])
    ogrtest.quick_create_feature(lyr, ["key"], None)

    lyr = ds.CreateLayer("second")
    ogrtest.quick_create_layer_def(lyr, [["col1_2"], ["id"], ["col3_2"]])
    ogrtest.quick_create_feature(lyr, ["a2", "key", "c2"], None)

    lyr = ds.CreateLayer("third")
    ogrtest.quick_create_layer_def(lyr, [["col1_3"], ["id"], ["col3_3"]])
    ogrtest.quick_create_feature(lyr, ["a3", "key", "c3"], None)

    sql_lyr = ds.ExecuteSQL(
        "SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id"
    )
    feat = sql_lyr.GetNextFeature()
    val1 = feat.GetFieldAsString(0)
    val2 = feat.GetFieldAsString(1)
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    from osgeo import gdal

    gdal.Unlink("/vsimem/ogr_join_14/first.csv")
    gdal.Unlink("/vsimem/ogr_join_14/second.csv")
    gdal.Unlink("/vsimem/ogr_join_14/third.csv")
    gdal.Unlink("/vsimem/ogr_join_14")

    if val1 != "c2":
        gdaltest.post_reason("fail")
        print(val1)
        return "fail"

    if val2 != "c2":
        gdaltest.post_reason("fail")
        print(val2)
        return "fail"

    return "success"
Ejemplo n.º 14
0
def ogr_join_15():

    ds = ogr.GetDriverByName('CSV').CreateDataSource('/vsimem/ogr_join_14')
    lyr = ds.CreateLayer('first')
    ogrtest.quick_create_layer_def(lyr, [['id']])
    ogrtest.quick_create_feature(lyr, ['key'], None)

    lyr = ds.CreateLayer('second')
    ogrtest.quick_create_layer_def(lyr, [['col1_2'], ['id'], ['col3_2']])
    ogrtest.quick_create_feature(lyr, ['a2', 'key', 'c2'], None)

    lyr = ds.CreateLayer('third')
    ogrtest.quick_create_layer_def(lyr, [['col1_3'], ['id'], ['col3_3']])
    ogrtest.quick_create_feature(lyr, ['a3', 'key', 'c3'], None)

    sql_lyr = ds.ExecuteSQL(
        "SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id"
    )
    feat = sql_lyr.GetNextFeature()
    val1 = feat.GetFieldAsString(0)
    val2 = feat.GetFieldAsString(1)
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    from osgeo import gdal
    gdal.Unlink('/vsimem/ogr_join_14/first.csv')
    gdal.Unlink('/vsimem/ogr_join_14/second.csv')
    gdal.Unlink('/vsimem/ogr_join_14/third.csv')
    gdal.Unlink('/vsimem/ogr_join_14')

    if val1 != 'c2':
        gdaltest.post_reason('fail')
        print(val1)
        return 'fail'

    if val2 != 'c2':
        gdaltest.post_reason('fail')
        print(val2)
        return 'fail'

    return 'success'
Ejemplo n.º 15
0
def ogr_join_15():

    ds = ogr.GetDriverByName('CSV').CreateDataSource('/vsimem/ogr_join_14')
    lyr = ds.CreateLayer('first')
    ogrtest.quick_create_layer_def(lyr, [['id']])
    ogrtest.quick_create_feature(lyr, [ 'key' ], None)

    lyr = ds.CreateLayer('second')
    ogrtest.quick_create_layer_def(lyr, [['col1_2'],['id'],['col3_2']])
    ogrtest.quick_create_feature(lyr, [ 'a2', 'key', 'c2' ], None)

    lyr = ds.CreateLayer('third')
    ogrtest.quick_create_layer_def(lyr, [['col1_3'],['id'],['col3_3']])
    ogrtest.quick_create_feature(lyr, [ 'a3', 'key', 'c3' ], None)

    sql_lyr = ds.ExecuteSQL("SELECT concat(col3_2, ''), col3_2 FROM first JOIN second ON first.id = second.id JOIN third ON first.id = third.id")
    feat = sql_lyr.GetNextFeature()
    val1 = feat.GetFieldAsString(0)
    val2 = feat.GetFieldAsString(1)
    ds.ReleaseResultSet(sql_lyr)

    ds = None

    from osgeo import gdal
    gdal.Unlink('/vsimem/ogr_join_14/first.csv')
    gdal.Unlink('/vsimem/ogr_join_14/second.csv')
    gdal.Unlink('/vsimem/ogr_join_14/third.csv')
    gdal.Unlink('/vsimem/ogr_join_14')

    if val1 != 'c2':
        gdaltest.post_reason('fail')
        print(val1)
        return 'fail'

    if val2 != 'c2':
        gdaltest.post_reason('fail')
        print(val2)
        return 'fail'

    return 'success'
def ogr_index_1():

    from osgeo import gdal
    gdal.PushErrorHandler('CPLQuietErrorHandler')
    try:
        ogr.GetDriverByName('MapInfo File').DeleteDataSource('index_p.mif')
    except:
        pass
    try:
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('join_t.dbf')
    except:
        pass

    gdal.PopErrorHandler()

    drv = ogr.GetDriverByName('MapInfo File')
    gdaltest.p_ds = drv.CreateDataSource('index_p.mif')
    gdaltest.p_lyr = gdaltest.p_ds.CreateLayer('index_p')

    ogrtest.quick_create_layer_def(gdaltest.p_lyr, [('PKEY', ogr.OFTInteger)])
    ogrtest.quick_create_feature(gdaltest.p_lyr, [5], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [10], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [9], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [4], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [3], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [1], None)

    # It turns out mapinfo format doesn't allow GetFeatureCount() calls while
    # writing ... it just blows an assert!
    #    if gdaltest.p_lyr.GetFeatureCount() != 7:
    #        gdaltest.post_reason( 'FeatureCount wrong' )
    #        return 'fail'

    # Close and reopen, since it seems the .mif driver does not allow reading
    # from a newly created (updatable) file.

    gdaltest.p_ds = None
    gdaltest.p_ds = ogr.OpenShared('index_p.mif', update=0)
    gdaltest.p_lyr = gdaltest.p_ds.GetLayerByName('index_p')

    return 'success'
Ejemplo n.º 17
0
def ogr_index_1():

    from osgeo import gdal
    gdal.PushErrorHandler('CPLQuietErrorHandler')
    try:
        ogr.GetDriverByName('MapInfo File').DeleteDataSource('index_p.mif')
    except AttributeError:
        pass
    try:
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('join_t.dbf')
    except AttributeError:
        pass

    gdal.PopErrorHandler()

    drv = ogr.GetDriverByName('MapInfo File')
    gdaltest.p_ds = drv.CreateDataSource('index_p.mif')
    gdaltest.p_lyr = gdaltest.p_ds.CreateLayer('index_p')

    ogrtest.quick_create_layer_def(gdaltest.p_lyr, [('PKEY', ogr.OFTInteger)])
    ogrtest.quick_create_feature(gdaltest.p_lyr, [5], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [10], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [9], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [4], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [3], None)
    ogrtest.quick_create_feature(gdaltest.p_lyr, [1], None)

# It turns out mapinfo format doesn't allow GetFeatureCount() calls while
# writing ... it just blows an assert!
#    if gdaltest.p_lyr.GetFeatureCount() != 7:
#        gdaltest.post_reason( 'FeatureCount wrong' )
#        return 'fail'

    # Close and reopen, since it seems the .mif driver does not allow reading
    # from a newly created (updatable) file.

    gdaltest.p_ds = None
    gdaltest.p_ds = ogr.OpenShared('index_p.mif', update=0)
    gdaltest.p_lyr = gdaltest.p_ds.GetLayerByName('index_p')

    return 'success'
Ejemplo n.º 18
0
def create_index_p_test_file():
    drv = ogr.GetDriverByName('MapInfo File')
    p_ds = drv.CreateDataSource('index_p.mif')
    p_lyr = p_ds.CreateLayer('index_p')

    ogrtest.quick_create_layer_def(p_lyr, [('PKEY', ogr.OFTInteger)])
    ogrtest.quick_create_feature(p_lyr, [5], None)
    ogrtest.quick_create_feature(p_lyr, [10], None)
    ogrtest.quick_create_feature(p_lyr, [9], None)
    ogrtest.quick_create_feature(p_lyr, [4], None)
    ogrtest.quick_create_feature(p_lyr, [3], None)
    ogrtest.quick_create_feature(p_lyr, [1], None)

    p_ds.Release()

    yield

    ogr.GetDriverByName('MapInfo File').DeleteDataSource('index_p.mif')